49
49
from .grpc_app .testgrpc_pb2_grpc import TestServiceStub
50
50
51
51
52
- @pytest .fixture ()
53
- def grpc_server (validating_httpserver , request ):
52
+ def setup_env (request , validating_httpserver ):
54
53
config = getattr (request , "param" , {})
55
54
env = {f"ELASTIC_APM_{ k .upper ()} " : str (v ) for k , v in config .items ()}
56
55
env .setdefault ("ELASTIC_APM_SERVER_URL" , validating_httpserver .url )
56
+ return env
57
+
58
+
59
+ def setup_grpc_server (env ):
57
60
free_port = get_free_port ()
58
61
server_proc = subprocess .Popen (
59
62
[os .path .join (sys .prefix , "bin" , "python" ), "-m" , "tests.contrib.grpc.grpc_app.server" , str (free_port )],
@@ -62,15 +65,32 @@ def grpc_server(validating_httpserver, request):
62
65
env = env ,
63
66
)
64
67
wait_for_open_port (free_port )
65
- yield f"localhost:{ free_port } "
66
- server_proc .terminate ()
68
+ return server_proc , free_port
67
69
68
70
69
71
@pytest .fixture ()
70
- def grpc_client_and_server_url (grpc_server ):
71
- test_channel = grpc .insecure_channel (grpc_server )
72
+ def env_fixture (validating_httpserver , request ):
73
+ env = setup_env (request , validating_httpserver )
74
+ return env
75
+
76
+
77
+ if hasattr (grpc , "aio" ):
78
+ grpc_server_fixture_params = ["async" , "sync" ]
79
+ else :
80
+ grpc_server_fixture_params = ["sync" ]
81
+
82
+
83
+ @pytest .fixture (params = grpc_server_fixture_params )
84
+ def grpc_client_and_server_url (env_fixture , request ):
85
+ env = env_fixture
86
+ if request .param == "async" :
87
+ env ["GRPC_SERVER_ASYNC" ] = 1
88
+ server_proc , free_port = setup_grpc_server (env )
89
+ server_addr = f"localhost:{ free_port } "
90
+ test_channel = grpc .insecure_channel (server_addr )
72
91
test_client = TestServiceStub (test_channel )
73
- yield test_client , grpc_server
92
+ yield test_client , server_addr
93
+ server_proc .terminate ()
74
94
75
95
76
96
def test_grpc_client_server_instrumentation (instrument , sending_elasticapm_client , grpc_client_and_server_url ):
0 commit comments