@@ -784,6 +784,8 @@ def __str__(self):
784784
785785_LANGUAGES_FOR_ALTS_TEST_CASES = ["java" , "go" , "c++" , "python" ]
786786
787+ _LANGUAGES_FOR_MCS_TEST_CASE = ["java" , "go" , "c++" , "python" ]
788+
787789_SERVERS_FOR_ALTS_TEST_CASES = ["java" , "go" , "c++" , "python" ]
788790
789791_TRANSPORT_SECURITY_OPTIONS = ["tls" , "alts" , "insecure" ]
@@ -1072,6 +1074,10 @@ def cloud_to_cloud_jobspec(
10721074 interop_only_options += [
10731075 '--service_config_json=\' {"loadBalancingConfig":[{"test_backend_metrics_load_balancer":{}}]}\' '
10741076 ]
1077+ else if test_case == 'mcs' :
1078+ interop_only_options += [
1079+ '--service_config_json=\' {"loadBalancingConfig:[{"connection_scaling":{"max_connections_per_subchannel": 2}}]"}\' '
1080+ ]
10751081
10761082 common_options = [
10771083 "--test_case=%s" % client_test_case ,
@@ -1133,7 +1139,7 @@ def cloud_to_cloud_jobspec(
11331139
11341140
11351141def server_jobspec (
1136- language , docker_image , transport_security = "tls" , manual_cmd_log = None
1142+ language , docker_image , transport_security = "tls" , manual_cmd_log = None , use_mcs = False
11371143):
11381144 """Create jobspec for running a server"""
11391145 container_name = dockerjob .random_name (
@@ -1145,13 +1151,15 @@ def server_jobspec(
11451151 elif transport_security == "alts" :
11461152 server_cmd += ["--use_tls=false" , "--use_alts=true" ]
11471153 elif transport_security == "insecure" :
1148- server_cmd += ["--use_tls=false" ]
1154+ server_cmd += ["--use_tls=false" ]
11491155 else :
11501156 print (
11511157 "Invalid transport security option %s in server_jobspec."
11521158 % transport_security
11531159 )
11541160 sys .exit (1 )
1161+ if use_mcs :
1162+ server_cmd += ["--use_mcs=true" ]
11551163 cmdline = bash_cmdline (language .server_cmd (server_cmd ))
11561164 environ = language .global_env ()
11571165 docker_args = ["--name=%s" % container_name ]
@@ -1431,6 +1439,14 @@ def aggregate_http2_results(stdout):
14311439 nargs = "?" ,
14321440 help = "Upload test results to a specified BQ table." ,
14331441)
1442+ argp .add_argument (
1443+ "--mcs" ,
1444+ default = False ,
1445+ action = "store_const" ,
1446+ const = True ,
1447+ help = "Enable MCS testing" ,
1448+ )
1449+
14341450args = argp .parse_args ()
14351451
14361452servers = set (
@@ -1799,6 +1815,38 @@ def aggregate_http2_results(stdout):
17991815 )
18001816 jobs .append (test_job )
18011817
1818+ if args .mcs :
1819+ languages_for_mcs = set (
1820+ _LANGUAGES [l ]
1821+ for l in _LANGUAGES_WITH_HTTP2_CLIENTS_FOR_HTTP2_SERVER_TEST_CASES
1822+ if "all" in args .language or l in args .language
1823+ )
1824+ if len (languages_for_mcs ) > 0 :
1825+ mcs_server_jobspec = server_jobspec (
1826+ 'java' ,
1827+ docker_images .get ('java' ),
1828+ args .transport_security ,
1829+ manual_cmd_log = server_manual_cmd_log ,
1830+ use_mcs = True ,
1831+ )
1832+ mcs_server_job = dockerjob .DockerJob (mcs_server_jobspec )
1833+ jobs .append (mcs_server_job )
1834+
1835+ for language in languages_for_mcs :
1836+ test_job = cloud_to_cloud_jobspec (
1837+ language ,
1838+ 'mcs' ,
1839+ 'java' ,
1840+ 'localhost' ,
1841+ mcs_server_job .mapped_port (_DEFAULT_SERVER_PORT ),
1842+ docker_image = docker_images .get (str (language )),
1843+ transport_security = args .transport_security ,
1844+ manual_cmd_log = client_manual_cmd_log ,
1845+ )
1846+ jobs .append (test_job )
1847+ else :
1848+ print ('MCS tests will be skipped since noen of the supported client languages for MCS testcases was specified' )
1849+
18021850 if not jobs :
18031851 print ("No jobs to run." )
18041852 for image in six .itervalues (docker_images ):
0 commit comments