Merge pull request #6 from awakenetworks/joel-fix-python-client-test-hang

Fix hang in Python test client
This commit is contained in:
intractable 2017-03-10 15:58:11 -06:00 committed by GitHub
commit 584ae318a9

View file

@ -8,38 +8,32 @@ print "Starting python client"
channel = beta_implementations.insecure_channel('localhost', 50051) channel = beta_implementations.insecure_channel('localhost', 50051)
stub = beta_create_SimpleService_stub(channel) stub = beta_create_SimpleService_stub(channel)
def runTests():
# Test normal call: return a sum of all numbers sent to it # Test normal call: return a sum of all numbers sent to it
print "Test 100 random sums" print "Test 100 random sums"
for i in xrange(100): for i in xrange(100):
randints = [random.randint(0, 1000) for _ in xrange(random.randint(10, 1000))] randints = [random.randint(0, 1000) for _ in xrange(random.randint(10, 1000))]
name = "test%d" % i name = "test%d" % i
response = stub.normalCall(SimpleServiceRequest(request = name, num = randints), 10) response = stub.normalCall(SimpleServiceRequest(request = name, num = randints), 10)
assert response.response == name assert response.response == name
assert response.num == sum(randints) assert response.num == sum(randints)
# Test streaming call: The server response will be the sum of all numbers sent in the request along with a concatenation of the request name # Test streaming call: The server response will be the sum of all numbers sent in the request along with a concatenation of the request name
print "Test 100 random sums (client streaming)" print "Test 100 random sums (client streaming)"
for i in xrange(100): for i in xrange(100):
expected_sum = 0 # avoid globals
expected_response_name = '' expected_sum = [0]
expected_response_name = ['']
def send_requests(): def send_requests(esum, ename):
global expected_sum
global expected_response_name
for _ in xrange(random.randint(5, 50)): for _ in xrange(random.randint(5, 50)):
nums = [random.randint(0, 1000) for _ in xrange(random.randint(10, 100))] nums = [random.randint(0, 1000) for _ in xrange(random.randint(10, 100))]
name = str(uuid4()) name = str(uuid4())
esum[0] += sum(nums)
expected_sum += sum(nums) ename[0] += name
expected_response_name += name
yield SimpleServiceRequest(request = name, num = nums) yield SimpleServiceRequest(request = name, num = nums)
response = stub.clientStreamingCall(send_requests(expected_sum, expected_response_name), 10)
response = stub.clientStreamingCall(send_requests(), 10) assert response.response == expected_response_name[0]
assert response.response == expected_response_name assert response.num == expected_sum[0]
assert response.num == expected_sum
# Test server streaming call: The server should respond once for each number in the request # Test server streaming call: The server should respond once for each number in the request
print "Test 100 random server streaming calls" print "Test 100 random server streaming calls"
@ -56,10 +50,6 @@ print "Test bidirectional streaming"
for i in xrange(100): for i in xrange(100):
requests = Queue.Queue() requests = Queue.Queue()
def send_requests(): def send_requests():
global cur_request
global cur_nums
global requests
for _ in xrange(random.randint(5, 50)): for _ in xrange(random.randint(5, 50)):
nums = [random.randint(0, 1000) for _ in xrange(random.randint(10, 100))] nums = [random.randint(0, 1000) for _ in xrange(random.randint(10, 100))]
name = str(uuid4()) name = str(uuid4())
@ -74,5 +64,18 @@ for i in xrange(100):
assert response.response == exp_name assert response.response == exp_name
assert response.num == exp_sum assert response.num == exp_sum
# Signal the ending of the test print "Sending DONE message to server"
stub.done(SimpleServiceDone(), 10) stub.done(SimpleServiceDone(), 10)
print "All python client tests against the generated server were successful"
try:
runTests()
except Exception as e:
print "Python client test exception caught: "
print e.__doc__
print e.message
print "Sending DONE message to server before exiting"
stub.done(SimpleServiceDone(), 10)
print "Exiting with failure status"
exit(1)