|
|
@ -33,10 +33,12 @@ import enum |
|
|
|
import json |
|
|
|
import json |
|
|
|
import os |
|
|
|
import os |
|
|
|
import threading |
|
|
|
import threading |
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
|
|
from oauth2client import client as oauth2client_client |
|
|
|
from oauth2client import client as oauth2client_client |
|
|
|
|
|
|
|
|
|
|
|
from grpc.framework.alpha import utilities |
|
|
|
from grpc.framework.alpha import utilities |
|
|
|
|
|
|
|
from grpc.framework.alpha import exceptions |
|
|
|
|
|
|
|
|
|
|
|
from grpc_interop import empty_pb2 |
|
|
|
from grpc_interop import empty_pb2 |
|
|
|
from grpc_interop import messages_pb2 |
|
|
|
from grpc_interop import messages_pb2 |
|
|
@ -318,6 +320,24 @@ def _cancel_after_first_response(stub): |
|
|
|
raise ValueError('expected call to be cancelled') |
|
|
|
raise ValueError('expected call to be cancelled') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _timeout_on_sleeping_server(stub): |
|
|
|
|
|
|
|
request_payload_size = 27182 |
|
|
|
|
|
|
|
with stub, _Pipe() as pipe: |
|
|
|
|
|
|
|
response_iterator = stub.FullDuplexCall(pipe, 0.001) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
request = messages_pb2.StreamingOutputCallRequest( |
|
|
|
|
|
|
|
response_type=messages_pb2.COMPRESSABLE, |
|
|
|
|
|
|
|
payload=messages_pb2.Payload(body=b'\x00' * request_payload_size)) |
|
|
|
|
|
|
|
pipe.add(request) |
|
|
|
|
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
next(response_iterator) |
|
|
|
|
|
|
|
except exceptions.ExpirationError: |
|
|
|
|
|
|
|
pass |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
raise ValueError('expected call to exceed deadline') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _compute_engine_creds(stub, args): |
|
|
|
def _compute_engine_creds(stub, args): |
|
|
|
response = _large_unary_common_behavior(stub, True, True) |
|
|
|
response = _large_unary_common_behavior(stub, True, True) |
|
|
|
if args.default_service_account != response.username: |
|
|
|
if args.default_service_account != response.username: |
|
|
@ -351,6 +371,7 @@ class TestCase(enum.Enum): |
|
|
|
CANCEL_AFTER_FIRST_RESPONSE = 'cancel_after_first_response' |
|
|
|
CANCEL_AFTER_FIRST_RESPONSE = 'cancel_after_first_response' |
|
|
|
COMPUTE_ENGINE_CREDS = 'compute_engine_creds' |
|
|
|
COMPUTE_ENGINE_CREDS = 'compute_engine_creds' |
|
|
|
SERVICE_ACCOUNT_CREDS = 'service_account_creds' |
|
|
|
SERVICE_ACCOUNT_CREDS = 'service_account_creds' |
|
|
|
|
|
|
|
TIMEOUT_ON_SLEEPING_SERVER = 'timeout_on_sleeping_server' |
|
|
|
|
|
|
|
|
|
|
|
def test_interoperability(self, stub, args): |
|
|
|
def test_interoperability(self, stub, args): |
|
|
|
if self is TestCase.EMPTY_UNARY: |
|
|
|
if self is TestCase.EMPTY_UNARY: |
|
|
@ -367,6 +388,8 @@ class TestCase(enum.Enum): |
|
|
|
_cancel_after_begin(stub) |
|
|
|
_cancel_after_begin(stub) |
|
|
|
elif self is TestCase.CANCEL_AFTER_FIRST_RESPONSE: |
|
|
|
elif self is TestCase.CANCEL_AFTER_FIRST_RESPONSE: |
|
|
|
_cancel_after_first_response(stub) |
|
|
|
_cancel_after_first_response(stub) |
|
|
|
|
|
|
|
elif self is TestCase.TIMEOUT_ON_SLEEPING_SERVER: |
|
|
|
|
|
|
|
_timeout_on_sleeping_server(stub) |
|
|
|
elif self is TestCase.COMPUTE_ENGINE_CREDS: |
|
|
|
elif self is TestCase.COMPUTE_ENGINE_CREDS: |
|
|
|
_compute_engine_creds(stub, args) |
|
|
|
_compute_engine_creds(stub, args) |
|
|
|
elif self is TestCase.SERVICE_ACCOUNT_CREDS: |
|
|
|
elif self is TestCase.SERVICE_ACCOUNT_CREDS: |
|
|
|