Merge test folder of test branch
[iotivity.git] / test / src / automation / robot / helper / server_runner.py
1 '''
2 /******************************************************************
3  *
4  * Copyright 2018 Samsung Electronics All Rights Reserved.
5  *
6  *
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  *
21  ******************************************************************/
22 '''
23
24 import socket
25 import subprocess
26 import errno
27 import os
28 import sys
29 import time
30 import optparse
31 from optparse import *
32 from socket import error as socket_error
33
34 sys.path.append('.')
35 sys.path.append('/usr/local/lib/python2.7/dist-packages')
36
37 import DeviceControlKeyword
38 from robotremoteserver import RobotRemoteServer
39
40 if __name__ == '__main__':
41
42     ip = [(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]
43     port = 8270
44
45     parser = optparse.OptionParser()
46     parser.add_option("-f", "--force", dest="kill", help="Kill Previous jython process", default=False)
47     parser.add_option("-p", "--port", dest="port", help="Provides the Robot Server's port", default=port)
48     parser.add_option("-i", "--ip", dest="ip", help="Provides the Robot Server's port", default=ip)
49     opts, args = parser.parse_args()
50
51     try:
52         RobotRemoteServer(DeviceControlKeyword.DeviceControlKeyword(), host=opts.ip, port=opts.port)
53     except socket_error as serr:
54         print ('Unable to create Rebot Remote Server. Address already in use')
55
56         confirm = 'No'
57
58         if opts.kill == False:
59             confirm = raw_input("Do you want kill it? Please Enter yes/no: ")
60
61         if opts.kill or confirm == 'yes':
62             print ('Tring to kill process.........')
63             ret = subprocess.check_output("fuser -k -n tcp "+str(port), shell=True)
64             time.sleep(3)
65             RobotRemoteServer(DeviceControlKeyword.DeviceControlKeyword(), host=opts.ip, port=opts.port)