Kill the sky_server on Mac in a way that works to avoid unexpected behavior when working with more than one app at once.
This commit is contained in:
parent
409f0e13d4
commit
a89fdd92ce
@ -283,14 +283,31 @@ class StopSky(object):
|
|||||||
subprocess.call(args, stdout=dev_null, stderr=dev_null)
|
subprocess.call(args, stdout=dev_null, stderr=dev_null)
|
||||||
|
|
||||||
def run(self, args, pids):
|
def run(self, args, pids):
|
||||||
self._run(['fuser', '-k', '%s/tcp' % SKY_SERVER_PORT])
|
|
||||||
|
|
||||||
if 'remote_sky_server_port' in pids:
|
if 'remote_sky_server_port' in pids:
|
||||||
port_string = 'tcp:%s' % pids['remote_sky_server_port']
|
port_string = 'tcp:%s' % pids['remote_sky_server_port']
|
||||||
self._run([AndroidDevice().adb_path, 'reverse', '--remove', port_string])
|
self._run([AndroidDevice().adb_path, 'reverse', '--remove', port_string])
|
||||||
|
|
||||||
self._run([AndroidDevice().adb_path, 'shell', 'am', 'force-stop', ANDROID_PACKAGE])
|
self._run([AndroidDevice().adb_path, 'shell', 'am', 'force-stop', ANDROID_PACKAGE])
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Because the server gets forked by dart, pids.get(['sky_server_pid']) returns an invalid pid,
|
||||||
|
# so just force things closed.
|
||||||
|
if platform.system() == 'Darwin':
|
||||||
|
cmd = ['lsof', '-i', ':%s' % SKY_SERVER_PORT, '-t']
|
||||||
|
logging.info(' '.join(cmd))
|
||||||
|
pid = subprocess.check_output(cmd)
|
||||||
|
|
||||||
|
# Killing a pid with a shell command from within python is hard,
|
||||||
|
# so use a library command, but it's still nice to give the
|
||||||
|
# equivalent command when doing verbose logging.
|
||||||
|
logging.info('kill %s' % pid)
|
||||||
|
os.kill(int(pid), signal.SIGTERM)
|
||||||
|
else:
|
||||||
|
# This usage of fuser is not valid on OS X
|
||||||
|
self._run(['fuser', '-k', '%s/tcp' % SKY_SERVER_PORT])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
pass
|
||||||
|
|
||||||
pids.clear()
|
pids.clear()
|
||||||
|
|
||||||
class AndroidDevice(object):
|
class AndroidDevice(object):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user