|  | @@ -43,6 +43,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "src/core/ext/client_channel/client_channel.h"
 | 
	
		
			
				|  |  |  #include "src/core/ext/client_channel/lb_policy_registry.h"
 | 
	
		
			
				|  |  | +#include "src/core/lib/channel/channel_args.h"
 | 
	
		
			
				|  |  |  #include "src/core/lib/channel/channel_stack.h"
 | 
	
		
			
				|  |  |  #include "src/core/lib/support/string.h"
 | 
	
		
			
				|  |  |  #include "src/core/lib/surface/channel.h"
 | 
	
	
		
			
				|  | @@ -642,21 +643,43 @@ static void test_pending_calls(size_t concurrent_calls) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void test_get_channel_info() {
 | 
	
		
			
				|  |  | -  grpc_channel *channel = grpc_insecure_channel_create(
 | 
	
		
			
				|  |  | -      "test:127.0.0.1:1234?lb_policy=round_robin", NULL, NULL);
 | 
	
		
			
				|  |  | +  grpc_channel *channel =
 | 
	
		
			
				|  |  | +      grpc_insecure_channel_create("ipv4:127.0.0.1:1234", NULL, NULL);
 | 
	
		
			
				|  |  |    // Ensures that resolver returns.
 | 
	
		
			
				|  |  |    grpc_channel_check_connectivity_state(channel, true /* try_to_connect */);
 | 
	
		
			
				|  |  | -  // Use grpc_channel_get_info() to get LB policy name.
 | 
	
		
			
				|  |  | -  char *lb_policy_name = NULL;
 | 
	
		
			
				|  |  | +  // First, request no fields.  This is a no-op.
 | 
	
		
			
				|  |  |    grpc_channel_info channel_info;
 | 
	
		
			
				|  |  | +  memset(&channel_info, 0, sizeof(channel_info));
 | 
	
		
			
				|  |  | +  grpc_channel_get_info(channel, &channel_info);
 | 
	
		
			
				|  |  | +  // Request LB policy name.
 | 
	
		
			
				|  |  | +  char *lb_policy_name = NULL;
 | 
	
		
			
				|  |  |    channel_info.lb_policy_name = &lb_policy_name;
 | 
	
		
			
				|  |  |    grpc_channel_get_info(channel, &channel_info);
 | 
	
		
			
				|  |  |    GPR_ASSERT(lb_policy_name != NULL);
 | 
	
		
			
				|  |  | -  GPR_ASSERT(strcmp(lb_policy_name, "round_robin") == 0);
 | 
	
		
			
				|  |  | +  GPR_ASSERT(strcmp(lb_policy_name, "pick_first") == 0);
 | 
	
		
			
				|  |  |    gpr_free(lb_policy_name);
 | 
	
		
			
				|  |  | -  // Try again without requesting anything.  This is a no-op.
 | 
	
		
			
				|  |  | -  channel_info.lb_policy_name = NULL;
 | 
	
		
			
				|  |  | +  // Request service config, which does not exist, so we'll get nothing back.
 | 
	
		
			
				|  |  | +  memset(&channel_info, 0, sizeof(channel_info));
 | 
	
		
			
				|  |  | +  char *service_config_json = "dummy_string";
 | 
	
		
			
				|  |  | +  channel_info.service_config_json = &service_config_json;
 | 
	
		
			
				|  |  | +  grpc_channel_get_info(channel, &channel_info);
 | 
	
		
			
				|  |  | +  GPR_ASSERT(service_config_json == NULL);
 | 
	
		
			
				|  |  | +  // Recreate the channel such that it has a service config.
 | 
	
		
			
				|  |  | +  grpc_channel_destroy(channel);
 | 
	
		
			
				|  |  | +  grpc_arg arg;
 | 
	
		
			
				|  |  | +  arg.type = GRPC_ARG_STRING;
 | 
	
		
			
				|  |  | +  arg.key = GRPC_ARG_SERVICE_CONFIG;
 | 
	
		
			
				|  |  | +  arg.value.string = "{\"lb_policy_name\": \"round_robin\"}";
 | 
	
		
			
				|  |  | +  grpc_channel_args *args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
 | 
	
		
			
				|  |  | +  channel = grpc_insecure_channel_create("ipv4:127.0.0.1:1234", args, NULL);
 | 
	
		
			
				|  |  | +  grpc_channel_args_destroy(args);
 | 
	
		
			
				|  |  | +  // Ensures that resolver returns.
 | 
	
		
			
				|  |  | +  grpc_channel_check_connectivity_state(channel, true /* try_to_connect */);
 | 
	
		
			
				|  |  | +  // Now request the service config again.
 | 
	
		
			
				|  |  |    grpc_channel_get_info(channel, &channel_info);
 | 
	
		
			
				|  |  | +  GPR_ASSERT(service_config_json != NULL);
 | 
	
		
			
				|  |  | +  GPR_ASSERT(strcmp(service_config_json, arg.value.string) == 0);
 | 
	
		
			
				|  |  | +  gpr_free(service_config_json);
 | 
	
		
			
				|  |  |    // Clean up.
 | 
	
		
			
				|  |  |    grpc_channel_destroy(channel);
 | 
	
		
			
				|  |  |  }
 |