def call_next(request): """Call the next service given by request.service_hops.""" if not request.service_hops: raise ValueError() new_request = pb2.TestRequest(id=request.id, name=request.name, service_hops=request.service_hops[1:]) next_hop = request.service_hops[0] transport = next_hop.service.spec.transport prop = next_hop.service.spec.propagation host = next_hop.service.host port = next_hop.service.port if (transport == pb2.Spec.HTTP and prop == pb2.Spec.B3_FORMAT_PROPAGATION): return call_http_b3(host, port, new_request) if (transport == pb2.Spec.HTTP and prop == pb2.Spec.TRACE_CONTEXT_FORMAT_PROPAGATION): return call_http_tracecontext(host, port, new_request) if (transport == pb2.Spec.GRPC and prop == pb2.Spec.BINARY_FORMAT_PROPAGATION): return call_grpc_binary(host, port, new_request) raise ValueError("No service for transport/propagation")
def test_server(port=pb2.PYTHON_HTTP_TRACECONTEXT_PROPAGATION_PORT): """Send a single multi-hop request to the server and shut it down.""" test_request = pb2.TestRequest( name="python:http:tracecontext", service_hops=[ pb2.ServiceHop( service=pb2.Service( name="python:http:tracecontext", port=port, host="0.0.0.0", spec=pb2.Spec( transport=pb2.Spec.HTTP, propagation=pb2.Spec. TRACE_CONTEXT_FORMAT_PROPAGATION))), pb2.ServiceHop( service=pb2.Service( name="python:http:tracecontext", port=port, host="0.0.0.0", spec=pb2.Spec( transport=pb2.Spec.HTTP, propagation=pb2.Spec. TRACE_CONTEXT_FORMAT_PROPAGATION))) ]) with serve_http_tracecontext(): return service.call_http_tracecontext("0.0.0.0", port, test_request)
def test_server(port=pb2.PYTHON_GRPC_BINARY_PROPAGATION_PORT): """Send a single multi-hop request to the server and shut it down.""" test_request = pb2.TestRequest( name="python:grpc:binary", service_hops=[ pb2.ServiceHop( service=pb2.Service( name="python:grpc:binary", port=port, host="0.0.0.0", spec=pb2.Spec( transport=pb2.Spec.GRPC, propagation=pb2.Spec.BINARY_FORMAT_PROPAGATION))), pb2.ServiceHop( service=pb2.Service( name="python:grpc:binary", port=port, host="0.0.0.0", spec=pb2.Spec( transport=pb2.Spec.GRPC, propagation=pb2.Spec.BINARY_FORMAT_PROPAGATION))) ]) with serve_grpc_binary(): return service.call_grpc_binary("0.0.0.0", port, test_request)
def build_request(hops, id_=None): if id_ is None: id_ = service.rand63() def build_service_hop(hop): return pb2.ServiceHop(service=pb2.Service(name=get_name(hop), port=hop.port, host=hop.host, spec=pb2.Spec( transport=hop.transport, propagation=hop.prop, ))) return pb2.TestRequest( id=id_, name=get_name(hops[0]), service_hops=[build_service_hop(hop) for hop in hops])