aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/compiler
diff options
context:
space:
mode:
authorGravatar Nathaniel Manista <nathaniel@google.com>2015-02-27 00:47:38 +0000
committerGravatar Nathaniel Manista <nathaniel@google.com>2015-02-27 00:47:38 +0000
commit732cf09a938b52f1803b49f8168906cd68345a5e (patch)
tree5bee88549ae2126eda0e5ec7018874086bd37792 /test/compiler
parent10682b758c99dac7e656880dbb6e344c19884513 (diff)
Drop fixed port from python_plugin_test
There may be some aspect of mortal sin in the way that context management is now done in this test.
Diffstat (limited to 'test/compiler')
-rw-r--r--test/compiler/python_plugin_test.py136
1 files changed, 65 insertions, 71 deletions
diff --git a/test/compiler/python_plugin_test.py b/test/compiler/python_plugin_test.py
index 3919de1450..1981f49fbb 100644
--- a/test/compiler/python_plugin_test.py
+++ b/test/compiler/python_plugin_test.py
@@ -57,7 +57,6 @@ LONG_DELAY = 1
# Assigned in __main__.
_build_mode = None
-_port = None
class _ServicerMethods(object):
@@ -87,14 +86,14 @@ class _ServicerMethods(object):
while self._paused:
time.sleep(0)
- def UnaryCall(self, request, context):
+ def UnaryCall(self, request, unused_context):
response = self.test_pb2.SimpleResponse()
response.payload.payload_type = self.test_pb2.COMPRESSABLE
response.payload.payload_compressable = 'a' * request.response_size
self._control()
return response
- def StreamingOutputCall(self, request, context):
+ def StreamingOutputCall(self, request, unused_context):
for parameter in request.response_parameters:
response = self.test_pb2.StreamingOutputCallResponse()
response.payload.payload_type = self.test_pb2.COMPRESSABLE
@@ -102,7 +101,7 @@ class _ServicerMethods(object):
self._control()
yield response
- def StreamingInputCall(self, request_iter, context):
+ def StreamingInputCall(self, request_iter, unused_context):
response = self.test_pb2.StreamingInputCallResponse()
aggregated_payload_size = 0
for request in request_iter:
@@ -111,7 +110,7 @@ class _ServicerMethods(object):
self._control()
return response
- def FullDuplexCall(self, request_iter, context):
+ def FullDuplexCall(self, request_iter, unused_context):
for request in request_iter:
for parameter in request.response_parameters:
response = self.test_pb2.StreamingOutputCallResponse()
@@ -120,7 +119,7 @@ class _ServicerMethods(object):
self._control()
yield response
- def HalfDuplexCall(self, request_iter, context):
+ def HalfDuplexCall(self, request_iter, unused_context):
responses = []
for request in request_iter:
for parameter in request.response_parameters:
@@ -133,6 +132,7 @@ class _ServicerMethods(object):
yield response
+@contextlib.contextmanager
def _CreateService(test_pb2, delay):
"""Provides a servicer backend and a stub.
@@ -148,9 +148,11 @@ def _CreateService(test_pb2, delay):
test_pb2: the test_pb2 module generated by this test
delay: delay in seconds per response from the servicer
timeout: how long the stub will wait for the servicer by default.
- Returns:
- A two-tuple (servicer, stub), where the servicer is the back-end of the
- service bound to the stub.
+
+ Yields:
+ A three-tuple (servicer_methods, servicer, stub), where the servicer is
+ the back-end of the service bound to the stub and the server and stub
+ are both activated and ready for use.
"""
servicer_methods = _ServicerMethods(test_pb2, delay)
@@ -172,10 +174,13 @@ def _CreateService(test_pb2, delay):
return servicer_methods.HalfDuplexCall(request_iter, context)
servicer = Servicer()
- server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer, _port,
- None, None)
- stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)('localhost', _port)
- return servicer_methods, stub, server
+ server = getattr(
+ test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer, 0, None, None)
+ with server:
+ port = server.port()
+ stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)('localhost', port)
+ with stub:
+ yield servicer_methods, stub, server
def StreamingInputRequest(test_pb2):
@@ -255,25 +260,23 @@ class PythonPluginTest(unittest.TestCase):
def testUpDown(self):
import test_pb2
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
- request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
- pass
+ with _CreateService(
+ test_pb2, DOES_NOT_MATTER_DELAY) as (servicer, stub, unused_server):
+ request = test_pb2.SimpleRequest(response_size=13)
def testUnaryCall(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
- request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
+ request = test_pb2.SimpleRequest(response_size=13)
response = stub.UnaryCall(request, NORMAL_TIMEOUT)
expected_response = servicer.UnaryCall(request, None)
self.assertEqual(expected_response, response)
def testUnaryCallAsync(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, LONG_DELAY)
request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
+ with _CreateService(test_pb2, LONG_DELAY) as (
+ servicer, stub, unused_server):
start_time = time.clock()
response_future = stub.UnaryCall.async(request, LONG_TIMEOUT)
# Check that we didn't block on the asynchronous call.
@@ -285,10 +288,9 @@ class PythonPluginTest(unittest.TestCase):
def testUnaryCallAsyncExpired(self):
import test_pb2 # pylint: disable=g-import-not-at-top
# set the timeout super low...
- servicer, stub, server = _CreateService(test_pb2,
- delay=DOES_NOT_MATTER_DELAY)
- request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
+ request = test_pb2.SimpleRequest(response_size=13)
with servicer.pause():
response_future = stub.UnaryCall.async(request, SHORT_TIMEOUT)
with self.assertRaises(exceptions.ExpirationError):
@@ -296,9 +298,9 @@ class PythonPluginTest(unittest.TestCase):
def testUnaryCallAsyncCancelled(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.pause():
response_future = stub.UnaryCall.async(request, 1)
response_future.cancel()
@@ -306,18 +308,17 @@ class PythonPluginTest(unittest.TestCase):
def testUnaryCallAsyncFailed(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = test_pb2.SimpleRequest(response_size=13)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.fail():
response_future = stub.UnaryCall.async(request, NORMAL_TIMEOUT)
self.assertIsNotNone(response_future.exception())
def testStreamingOutputCall(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
request = StreamingOutputRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
responses = stub.StreamingOutputCall(request, NORMAL_TIMEOUT)
expected_responses = servicer.StreamingOutputCall(request, None)
for check in itertools.izip_longest(expected_responses, responses):
@@ -326,9 +327,9 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingOutputCallExpired(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = StreamingOutputRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.pause():
responses = stub.StreamingOutputCall(request, SHORT_TIMEOUT)
with self.assertRaises(exceptions.ExpirationError):
@@ -336,10 +337,9 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingOutputCallCancelled(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- unused_servicer, stub, server = _CreateService(test_pb2,
- DOES_NOT_MATTER_DELAY)
request = StreamingOutputRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ unused_servicer, stub, unused_server):
responses = stub.StreamingOutputCall(request, SHORT_TIMEOUT)
next(responses)
responses.cancel()
@@ -350,9 +350,9 @@ class PythonPluginTest(unittest.TestCase):
'instead of raising the proper error.')
def testStreamingOutputCallFailed(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = StreamingOutputRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.fail():
responses = stub.StreamingOutputCall(request, 1)
self.assertIsNotNone(responses)
@@ -361,8 +361,7 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingInputCall(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
response = stub.StreamingInputCall(StreamingInputRequest(test_pb2),
NORMAL_TIMEOUT)
expected_response = servicer.StreamingInputCall(
@@ -371,9 +370,8 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingInputCallAsync(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(
- test_pb2, LONG_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, LONG_DELAY) as (
+ servicer, stub, unused_server):
start_time = time.clock()
response_future = stub.StreamingInputCall.async(
StreamingInputRequest(test_pb2), LONG_TIMEOUT)
@@ -386,8 +384,8 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingInputCallAsyncExpired(self):
import test_pb2 # pylint: disable=g-import-not-at-top
# set the timeout super low...
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.pause():
response_future = stub.StreamingInputCall.async(
StreamingInputRequest(test_pb2), SHORT_TIMEOUT)
@@ -398,8 +396,8 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingInputCallAsyncCancelled(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.pause():
response_future = stub.StreamingInputCall.async(
StreamingInputRequest(test_pb2), NORMAL_TIMEOUT)
@@ -410,8 +408,8 @@ class PythonPluginTest(unittest.TestCase):
def testStreamingInputCallAsyncFailed(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.fail():
response_future = stub.StreamingInputCall.async(
StreamingInputRequest(test_pb2), SHORT_TIMEOUT)
@@ -419,8 +417,7 @@ class PythonPluginTest(unittest.TestCase):
def testFullDuplexCall(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
responses = stub.FullDuplexCall(FullDuplexRequest(test_pb2),
NORMAL_TIMEOUT)
expected_responses = servicer.FullDuplexCall(FullDuplexRequest(test_pb2),
@@ -431,9 +428,9 @@ class PythonPluginTest(unittest.TestCase):
def testFullDuplexCallExpired(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = FullDuplexRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.pause():
responses = stub.FullDuplexCall(request, SHORT_TIMEOUT)
with self.assertRaises(exceptions.ExpirationError):
@@ -441,8 +438,7 @@ class PythonPluginTest(unittest.TestCase):
def testFullDuplexCallCancelled(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- unused_servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
request = FullDuplexRequest(test_pb2)
responses = stub.FullDuplexCall(request, NORMAL_TIMEOUT)
next(responses)
@@ -454,9 +450,9 @@ class PythonPluginTest(unittest.TestCase):
'and fix.')
def testFullDuplexCallFailed(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
request = FullDuplexRequest(test_pb2)
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
with servicer.fail():
responses = stub.FullDuplexCall(request, NORMAL_TIMEOUT)
self.assertIsNotNone(responses)
@@ -465,16 +461,16 @@ class PythonPluginTest(unittest.TestCase):
def testHalfDuplexCall(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
- def HalfDuplexRequest():
- request = test_pb2.StreamingOutputCallRequest()
- request.response_parameters.add(size=1, interval_us=0)
- yield request
- request = test_pb2.StreamingOutputCallRequest()
- request.response_parameters.add(size=2, interval_us=0)
- request.response_parameters.add(size=3, interval_us=0)
- yield request
- with server, stub:
+ with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+ servicer, stub, unused_server):
+ def HalfDuplexRequest():
+ request = test_pb2.StreamingOutputCallRequest()
+ request.response_parameters.add(size=1, interval_us=0)
+ yield request
+ request = test_pb2.StreamingOutputCallRequest()
+ request.response_parameters.add(size=2, interval_us=0)
+ request.response_parameters.add(size=3, interval_us=0)
+ yield request
responses = stub.HalfDuplexCall(HalfDuplexRequest(), NORMAL_TIMEOUT)
expected_responses = servicer.HalfDuplexCall(HalfDuplexRequest(), None)
for check in itertools.izip_longest(expected_responses, responses):
@@ -483,7 +479,6 @@ class PythonPluginTest(unittest.TestCase):
def testHalfDuplexCallWedged(self):
import test_pb2 # pylint: disable=g-import-not-at-top
- _, stub, server = _CreateService(test_pb2, NO_DELAY)
wait_flag = [False]
@contextlib.contextmanager
def wait(): # pylint: disable=invalid-name
@@ -497,7 +492,7 @@ class PythonPluginTest(unittest.TestCase):
yield request
while wait_flag[0]:
time.sleep(0.1)
- with server, stub:
+ with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
with wait():
responses = stub.HalfDuplexCall(HalfDuplexRequest(), NORMAL_TIMEOUT)
# half-duplex waits for the client to send all info
@@ -516,6 +511,5 @@ if __name__ == '__main__':
parser.add_argument('--port', dest='port', type=int, default=0)
args, remainder = parser.parse_known_args()
_build_mode = args.build_mode
- _port = args.port
sys.argv[1:] = remainder
unittest.main()