Skip to content

Commit b2f7e62

Browse files
committed
cc grpc: move tests not requiring chaos gate outside chaos
commit_hash:81cf43e5b2d380a224cb41f1c69f7a88f40fca58
1 parent ce761c6 commit b2f7e62

File tree

6 files changed

+68
-59
lines changed

6 files changed

+68
-59
lines changed

.mapping.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2115,7 +2115,9 @@
21152115
"grpc/functional_tests/basic_chaos/tests-grpcserver/test_network_smaller_parts.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-grpcserver/test_network_smaller_parts.py",
21162116
"grpc/functional_tests/basic_chaos/tests-grpcserver/test_server_client_bytes.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-grpcserver/test_server_client_bytes.py",
21172117
"grpc/functional_tests/basic_chaos/tests-grpcserver/test_server_smaller_parts.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-grpcserver/test_server_smaller_parts.py",
2118-
"grpc/functional_tests/basic_chaos/tests-grpcserver/test_tracing_metadata.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-grpcserver/test_tracing_metadata.py",
2118+
"grpc/functional_tests/basic_chaos/tests-nonchaos/conftest.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-nonchaos/conftest.py",
2119+
"grpc/functional_tests/basic_chaos/tests-nonchaos/test_basic.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-nonchaos/test_basic.py",
2120+
"grpc/functional_tests/basic_chaos/tests-nonchaos/test_tracing_metadata.py":"taxi/uservices/userver/grpc/functional_tests/basic_chaos/tests-nonchaos/test_tracing_metadata.py",
21192121
"grpc/functional_tests/basic_server/CMakeLists.txt":"taxi/uservices/userver/grpc/functional_tests/basic_server/CMakeLists.txt",
21202122
"grpc/functional_tests/basic_server/grpc_service.cpp":"taxi/uservices/userver/grpc/functional_tests/basic_server/grpc_service.cpp",
21212123
"grpc/functional_tests/basic_server/proto/samples/greeter.proto":"taxi/uservices/userver/grpc/functional_tests/basic_server/proto/samples/greeter.proto",

grpc/functional_tests/basic_chaos/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@ target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}-proto)
99
userver_chaos_testsuite_add(TESTS_DIRECTORY tests-grpcserver)
1010

1111
userver_chaos_testsuite_add(TESTS_DIRECTORY tests-grpcclient)
12+
13+
userver_chaos_testsuite_add(TESTS_DIRECTORY tests-nonchaos)
Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,7 @@
1-
import grpc
21
import pytest
32
import requests_server
43

5-
import samples.greeter_pb2 as greeter_pb2 # noqa: E402, E501
6-
74

85
@pytest.mark.parametrize('case', requests_server.ALL_CASES)
96
async def test_basic(grpc_client, gate, case):
107
await requests_server.check_ok_for(case, grpc_client, gate)
11-
12-
13-
async def test_grpc_cc_enabled(grpc_client, service_client, testpoint):
14-
@testpoint('congestion-control')
15-
def tp_cc_enable(data):
16-
return {'force-rps-limit': 0}
17-
18-
@testpoint('congestion-control-apply')
19-
def tp_cc_apply(data):
20-
return {}
21-
22-
# wait until server obtains the new limit, up to 1 second
23-
await service_client.enable_testpoints()
24-
await tp_cc_enable.wait_call()
25-
await tp_cc_apply.wait_call()
26-
27-
# Random non-ping handler is throttled
28-
with pytest.raises(grpc.RpcError) as error:
29-
request = greeter_pb2.GreetingRequest(name='Python')
30-
await grpc_client.SayHello(request, wait_for_ready=True)
31-
assert error.value.details() == 'Congestion control: rate limit exceeded'
32-
assert error.value.code() == grpc.StatusCode.RESOURCE_EXHAUSTED
33-
34-
# A hack to disable CC for other tests
35-
@testpoint('congestion-control')
36-
def tp_cc_disable(data):
37-
return {}
38-
39-
await tp_cc_disable.wait_call()
40-
await tp_cc_apply.wait_call()
41-
42-
43-
async def test_grpc_cancellation(grpc_client, service_client, testpoint):
44-
@testpoint('testpoint_cancel')
45-
def cancel_testpoint(data):
46-
pass
47-
48-
await service_client.enable_testpoints()
49-
50-
with pytest.raises(grpc.RpcError) as error:
51-
request = greeter_pb2.GreetingRequest(name='test_payload_cancellation')
52-
await grpc_client.SayHello(request, wait_for_ready=True, timeout=0.1)
53-
assert error.value.details() == 'Deadline Exceeded'
54-
assert error.value.code() == grpc.StatusCode.DEADLINE_EXCEEDED
55-
56-
await cancel_testpoint.wait_call()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import pytest
2+
3+
import samples.greeter_pb2_grpc as greeter_pb2_grpc
4+
5+
pytest_plugins = ['pytest_userver.plugins.grpc']
6+
7+
8+
@pytest.fixture
9+
def grpc_client(grpc_channel):
10+
return greeter_pb2_grpc.GreeterServiceStub(grpc_channel)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import grpc
2+
import pytest
3+
4+
import samples.greeter_pb2 as greeter_pb2
5+
6+
7+
async def test_grpc_cc_enabled(grpc_client, service_client, testpoint):
8+
@testpoint('congestion-control')
9+
def tp_cc_enable(data):
10+
return {'force-rps-limit': 0}
11+
12+
@testpoint('congestion-control-apply')
13+
def tp_cc_apply(data):
14+
return {}
15+
16+
# wait until server obtains the new limit, up to 1 second
17+
await service_client.enable_testpoints()
18+
await tp_cc_enable.wait_call()
19+
await tp_cc_apply.wait_call()
20+
21+
# Random non-ping handler is throttled
22+
with pytest.raises(grpc.RpcError) as error:
23+
request = greeter_pb2.GreetingRequest(name='Python')
24+
await grpc_client.SayHello(request, wait_for_ready=True)
25+
assert error.value.details() == 'Congestion control: rate limit exceeded'
26+
assert error.value.code() == grpc.StatusCode.RESOURCE_EXHAUSTED
27+
28+
# A hack to disable CC for other tests
29+
@testpoint('congestion-control')
30+
def tp_cc_disable(data):
31+
return {}
32+
33+
await tp_cc_disable.wait_call()
34+
await tp_cc_apply.wait_call()
35+
36+
37+
async def test_grpc_cancellation(grpc_client, service_client, testpoint):
38+
@testpoint('testpoint_cancel')
39+
def cancel_testpoint(data):
40+
pass
41+
42+
await service_client.enable_testpoints()
43+
44+
with pytest.raises(grpc.RpcError) as error:
45+
request = greeter_pb2.GreetingRequest(name='test_payload_cancellation')
46+
await grpc_client.SayHello(request, wait_for_ready=True, timeout=0.1)
47+
assert error.value.details() == 'Deadline Exceeded'
48+
assert error.value.code() == grpc.StatusCode.DEADLINE_EXCEEDED
49+
50+
await cancel_testpoint.wait_call()

grpc/functional_tests/basic_chaos/tests-grpcserver/test_tracing_metadata.py renamed to grpc/functional_tests/basic_chaos/tests-nonchaos/test_tracing_metadata.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import pytest
22

3-
import samples.greeter_pb2 as greeter_pb2 # noqa: E402, E501
3+
import samples.greeter_pb2 as greeter_pb2
44

55

66
@pytest.mark.parametrize(
7-
'metadata,logs,',
7+
'metadata,logs',
88
[
99
[(('x-yatraceid', 'traceid'),), {'trace_id': 'traceid'}],
1010
[
@@ -21,13 +21,7 @@
2121
],
2222
],
2323
)
24-
async def test_tracing_metadata(
25-
grpc_client,
26-
service_client,
27-
gate,
28-
metadata,
29-
logs,
30-
):
24+
async def test_tracing_metadata(grpc_client, service_client, metadata, logs):
3125
request = greeter_pb2.GreetingRequest(name='Python')
3226
async with service_client.capture_logs() as capture:
3327
response = await grpc_client.SayHello(

0 commit comments

Comments
 (0)