|  | @@ -304,7 +304,11 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
 | 
	
		
			
				|  |  |            # 'SERVER_LANGUAGE' is an indicator for this script to pick
 | 
	
		
			
				|  |  |            # a server in different language.
 | 
	
		
			
				|  |  |            custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
 | 
	
		
			
				|  |  | +          custom_client_lang = scenario_json.get('CLIENT_LANGUAGE', None)
 | 
	
		
			
				|  |  |            scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
 | 
	
		
			
				|  |  | +          if custom_server_lang and custom_client_lang:
 | 
	
		
			
				|  |  | +            raise Exception('Cannot set both custom CLIENT_LANGUAGE and SERVER_LANGUAGE'
 | 
	
		
			
				|  |  | +                            'in the same scenario')
 | 
	
		
			
				|  |  |            if custom_server_lang:
 | 
	
		
			
				|  |  |              if not workers_by_lang.get(custom_server_lang, []):
 | 
	
		
			
				|  |  |                print 'Warning: Skipping scenario %s as' % scenario_json['name']
 | 
	
	
		
			
				|  | @@ -314,6 +318,16 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
 | 
	
		
			
				|  |  |              for idx in range(0, scenario_json['num_servers']):
 | 
	
		
			
				|  |  |                # replace first X workers by workers of a different language
 | 
	
		
			
				|  |  |                workers[idx] = workers_by_lang[custom_server_lang][idx]
 | 
	
		
			
				|  |  | +          if custom_client_lang:
 | 
	
		
			
				|  |  | +            if not workers_by_lang.get(custom_client_lang, []):
 | 
	
		
			
				|  |  | +              print 'Warning: Skipping scenario %s as' % scenario_json['name']
 | 
	
		
			
				|  |  | +              print('CLIENT_LANGUAGE is set to %s yet the language has '
 | 
	
		
			
				|  |  | +                    'not been selected with -l' % custom_client_lang)
 | 
	
		
			
				|  |  | +              continue
 | 
	
		
			
				|  |  | +            for idx in range(scenario_json['num_servers'], len(workers)):
 | 
	
		
			
				|  |  | +              # replace all client workers by workers of a different language,
 | 
	
		
			
				|  |  | +              # leave num_server workers as they are server workers.
 | 
	
		
			
				|  |  | +              workers[idx] = workers_by_lang[custom_client_lang][idx]
 | 
	
		
			
				|  |  |            scenario = create_scenario_jobspec(scenario_json,
 | 
	
		
			
				|  |  |                                               workers,
 | 
	
		
			
				|  |  |                                               remote_host=remote_host,
 | 
	
	
		
			
				|  | @@ -360,8 +374,8 @@ argp.add_argument('--bq_result_table', default=None, type=str,
 | 
	
		
			
				|  |  |                    help='Bigquery "dataset.table" to upload results to.')
 | 
	
		
			
				|  |  |  argp.add_argument('--category',
 | 
	
		
			
				|  |  |                    choices=['smoketest','all'],
 | 
	
		
			
				|  |  | -                  default='smoketest',
 | 
	
		
			
				|  |  | -                  help='Select a category of tests to run. Smoketest runs by default.')
 | 
	
		
			
				|  |  | +                  default='all',
 | 
	
		
			
				|  |  | +                  help='Select a category of tests to run.')
 | 
	
		
			
				|  |  |  argp.add_argument('--netperf',
 | 
	
		
			
				|  |  |                    default=False,
 | 
	
		
			
				|  |  |                    action='store_const',
 |