Skip to content

Commit 565dbcf

Browse files
committed
Improved tests
- Avoid server.serve_forever(1) (blocks on Linux)
1 parent 0cdd04f commit 565dbcf

File tree

3 files changed

+31
-28
lines changed

3 files changed

+31
-28
lines changed

AndroidViewClient/.pydevproject

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<?eclipse-pydev version="1.0"?>
33

44
<pydev_project>
5-
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">monkeyrunner</pydev_property>
6-
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.5</pydev_property>
5+
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python</pydev_property>
6+
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
77
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
88
<path>/AndroidViewClient/src</path>
99
<path>/AndroidViewClient/examples</path>

AndroidViewClient/tests/com/dtmilano/android/mocks.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -661,8 +661,6 @@ def __init__(self, serialno="MOCK12345678", version=15, startviewserver=False, u
661661
print >> sys.stderr, "\n**** Starting ViewServer... ****", self
662662
self.viewServer = MockViewServer()
663663
else:
664-
if DEBUG:
665-
print >> sys.stderr, "\n**** Not Starting ViewServer... ****"
666664
self.viewServer = None
667665
self.uiAutomatorKilled = uiautomatorkilled
668666
self.language = language
@@ -767,12 +765,16 @@ def run(self):
767765
print >> sys.stderr, "ServerThread: serving running=", self.running
768766
# In 2.5 serve_forever() never exits and there's no way of stopping the server
769767
#self.server.serve_forever(self.pollInterval)
770-
# while self.running:
771-
# if DEBUG:
772-
# print >> sys.stderr, "ServerThread: polling (self=%s)" % self
773-
# r, w, e = select([self.server], [], [], self.pollInterval)
774-
# if r:
775-
# self.server.handle_request()
768+
while self.running:
769+
if DEBUG:
770+
print >> sys.stderr, "ServerThread: polling (self=%s)" % self
771+
r, w, e = select.select([self.server], [], [], self.pollInterval)
772+
if r:
773+
if self.server:
774+
try:
775+
self.server.handle_request()
776+
except:
777+
print >> sys.stderr, "ServerThread: the socket may have been closed"
776778

777779

778780
def __init__(self, host=HOST, port=PORT):
@@ -784,30 +786,30 @@ def __init__(self, host=HOST, port=PORT):
784786
self.host = host
785787
self.port = port
786788
# In 2.5 serve_forever() never exits and there's no way of stopping the server
787-
self.server.serve_forever(1)
788-
789+
#self.server.serve_forever(1)
790+
#print >> sys.stderr, "MockViewServer: NEVER REACHED on Linux"
789791
# Activate the server; this will keep running until you shutdown
790-
#self.serverThread = MockViewServer.ServerThread(self.server)
791-
#self.serverThread.start()
792+
self.serverThread = MockViewServer.ServerThread(self.server)
793+
self.serverThread.start()
792794

793795
def shutdown(self):
794796
if DEBUG:
795797
print >> sys.stderr, "**** MockViewServer.shutdown() ****"
796798
try:
797-
#self.server.socket.shutdown(socket.SHUT_RDWR)
798-
if DEBUG:
799-
print >> sys.stderr, " shutdown: shutting down the server, serve_forever() should exit"
800-
self.server.shutdown()
799+
self.server.socket.shutdown(socket.SHUT_RDWR)
800+
#if DEBUG:
801+
# print >> sys.stderr, " shutdown: shutting down the server, serve_forever() should exit"
802+
#self.server.shutdown()
801803
if DEBUG:
802804
print >> sys.stderr, " shutdown: DONE"
803805
except Exception, ex:
804806
print >> sys.stderr, "ERROR", ex
805807
pass
806808
self.serverThread.running = False
807-
# #self.server.socket.shutdown(socket.SHUT_RDWR)
808-
# self.server.socket.close()
809+
#self.server.socket.shutdown(socket.SHUT_RDWR)
810+
self.server.socket.close()
809811
# del(self.server.socket)
810812
#del(self.server)
811-
#time.sleep(120)
812-
#time.sleep(5)
813+
time.sleep(120)
814+
time.sleep(5)
813815

AndroidViewClient/tests/com/dtmilano/android/viewclient.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env monkeyrunner
1+
#! /usr/bin/env python
22
# -*- coding: utf-8 -*-
33
'''
44
Copyright (C) 2012 Diego Torres Milano
@@ -13,6 +13,7 @@
1313
import StringIO
1414
import unittest
1515
import exceptions
16+
import platform
1617

1718
# PyDev sets PYTHONPATH, use it
1819
try:
@@ -31,10 +32,7 @@
3132
from mocks import MockDevice, MockViewServer
3233
from mocks import DUMP, DUMP_SAMPLE_UI, VIEW_MAP, VIEW_MAP_API_8, VIEW_MAP_API_17, RUNNING, STOPPED, WINDOWS
3334

34-
# this is probably the only reliable way of determining the OS in monkeyrunner
35-
# FIXME:
36-
#os_name = java.lang.System.getProperty('os.name')
37-
os_name = os.name
35+
os_name = platform.system()
3836
if os_name.startswith('Linux'):
3937
TRUE = '/bin/true'
4038
else:
@@ -928,7 +926,10 @@ def testUiAutomatorDump(self):
928926

929927
def testUiAutomatorKilled(self):
930928
device = MockDevice(version=16, uiautomatorkilled=True)
931-
vc = ViewClient(device, device.serialno, adb=TRUE, autodump=True, ignoreuiautomatorkilled=True)
929+
try:
930+
vc = ViewClient(device, device.serialno, adb=TRUE, autodump=True, ignoreuiautomatorkilled=True)
931+
except Exception, e:
932+
self.assertIsNotNone(re.search('''ERROR: UiAutomator output contains no valid information. UiAutomator was killed, no reason given.''', str(e)))
932933

933934
def testUiViewServerDump(self):
934935
device = None

0 commit comments

Comments
 (0)