15 from typing
import List
17 from absl
import flags
18 from absl.testing
import absltest
20 from framework
import xds_k8s_testcase
22 logger = logging.getLogger(__name__)
23 flags.adopt_module_key_flags(xds_k8s_testcase)
26 _XdsTestServer = xds_k8s_testcase.XdsTestServer
27 _XdsTestClient = xds_k8s_testcase.XdsTestClient
35 with self.subTest(
'00_create_health_check'):
38 with self.subTest(
'01_create_backend_services'):
39 self.td.create_backend_service()
41 with self.subTest(
'02_create_url_map'):
44 with self.subTest(
'03_create_target_proxy'):
47 with self.subTest(
'04_create_forwarding_rule'):
48 self.td.create_forwarding_rule(self.server_xds_port)
50 test_servers: List[_XdsTestServer]
51 with self.subTest(
'05_start_test_servers'):
52 test_servers = self.startTestServers(replica_count=REPLICA_COUNT)
54 with self.subTest(
'06_add_server_backends_to_backend_services'):
55 self.setupServerBackends()
57 test_client: _XdsTestClient
58 with self.subTest(
'07_start_test_client'):
59 test_client = self.startTestClient(test_servers[0])
61 with self.subTest(
'08_test_client_xds_config_exists'):
62 self.assertXdsConfigExists(test_client)
64 with self.subTest(
'09_test_server_received_rpcs_from_test_client'):
65 self.assertSuccessfulRpcs(test_client)
67 with self.subTest(
'10_round_robin'):
69 expected_rpcs_per_replica = num_rpcs / REPLICA_COUNT
71 rpcs_by_peer = self.getClientRpcStats(test_client,
72 num_rpcs).rpcs_by_peer
73 total_requests_received =
sum(rpcs_by_peer[x]
for x
in rpcs_by_peer)
74 self.assertEqual(total_requests_received, num_rpcs,
75 'Wrong number of RPCS')
76 for server
in test_servers:
77 pod_name = server.pod_name
78 self.assertIn(pod_name, rpcs_by_peer,
79 f
'pod {pod_name} did not receive RPCs')
81 abs(rpcs_by_peer[pod_name] - expected_rpcs_per_replica), 1,
82 f
'Wrong number of RPCs for {pod_name}')
85 if __name__ ==
'__main__':
86 absltest.main(failfast=
True)