| 
					
				 | 
			
			
				@@ -39,9 +39,9 @@ import hashlib 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 FixtureOptions = collections.namedtuple( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'FixtureOptions', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing exclude_configs exclude_iomgrs large_writes') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing exclude_configs exclude_iomgrs large_writes enables_compression') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 default_unsecure_fixture_options = FixtureOptions( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False, [], [], True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False, [], [], True, False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'], exclude_iomgrs=['uv']) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -51,8 +51,7 @@ fd_unsecure_fixture_options = default_unsecure_fixture_options._replace( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # maps fixture name to whether it requires the security library 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 END2END_FIXTURES = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'h2_compress': default_unsecure_fixture_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'h2_compress': default_unsecure_fixture_options._replace(enables_compression=True), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'h2_census': default_unsecure_fixture_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'h2_load_reporting': default_unsecure_fixture_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'h2_fakesec': default_secure_fixture_options._replace(ci_mac=False), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,8 +82,8 @@ END2END_FIXTURES = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 TestOptions = collections.namedtuple( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'TestOptions', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'needs_fullstack needs_dns proxyable secure traceable cpu_cost exclude_iomgrs large_writes flaky') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-default_test_options = TestOptions(False, False, True, False, True, 1.0, [], False, False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'needs_fullstack needs_dns proxyable secure traceable cpu_cost exclude_iomgrs large_writes flaky allow_compression') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+default_test_options = TestOptions(False, False, True, False, True, 1.0, [], False, False, True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 connectivity_test_options = default_test_options._replace(needs_fullstack=True) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 LOWCPU = 0.1 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -94,12 +93,13 @@ END2END_TESTS = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'authority_not_supported': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'bad_hostname': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'bad_ping': connectivity_test_options._replace(proxyable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'binary_metadata': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'binary_metadata': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'resource_quota_server': default_test_options._replace(large_writes=True, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                           proxyable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                           proxyable=False, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                           allow_compression=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'call_creds': default_test_options._replace(secure=True), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'cancel_after_accept': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'cancel_after_client_done': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'cancel_after_client_done': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'cancel_after_invoke': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'cancel_before_invoke': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'cancel_in_a_vacuum': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,46 +110,49 @@ END2END_TESTS = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'default_host': default_test_options._replace(needs_fullstack=True, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                   needs_dns=True), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'disappearing_server': connectivity_test_options._replace(flaky=True), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'empty_batch': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'filter_causes_close': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'empty_batch': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'filter_causes_close': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'filter_call_init_fails': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'filter_latency': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'filter_latency': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'graceful_server_shutdown': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'hpack_size': default_test_options._replace(proxyable=False, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                traceable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'high_initial_seqno': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                traceable=False, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'high_initial_seqno': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'idempotent_request': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'invoke_large_request': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'keepalive_timeout': default_test_options._replace(proxyable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'keepalive_timeout': default_test_options._replace(proxyable=False, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                       cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'large_metadata': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'max_concurrent_streams': default_test_options._replace(proxyable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'max_connection_age': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'max_concurrent_streams': default_test_options._replace( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxyable=False, cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'max_connection_age': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'max_connection_idle': connectivity_test_options._replace( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        proxyable=False, exclude_iomgrs=['uv']), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'max_message_length': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxyable=False, exclude_iomgrs=['uv'], cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'max_message_length': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'negative_deadline': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'network_status_change': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'network_status_change': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'no_logging': default_test_options._replace(traceable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'no_op': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'payload': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'load_reporting_hook': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'ping_pong_streaming': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'ping': connectivity_test_options._replace(proxyable=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'ping_pong_streaming': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'ping': connectivity_test_options._replace(proxyable=False, cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'registered_call': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'request_with_flags': default_test_options._replace( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         proxyable=False, cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'request_with_payload': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'server_finishes_request': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'shutdown_finishes_calls': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'shutdown_finishes_tags': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'simple_cacheable_request': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'request_with_payload': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'server_finishes_request': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'shutdown_finishes_calls': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'shutdown_finishes_tags': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'simple_cacheable_request': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'simple_delayed_request': connectivity_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'simple_metadata': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'simple_request': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'streaming_error_response': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'streaming_error_response': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'trailing_metadata': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'write_buffering': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'write_buffering_at_end': default_test_options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'write_buffering': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'write_buffering_at_end': default_test_options._replace(cpu_cost=LOWCPU), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -169,6 +172,9 @@ def compatible(f, t): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if END2END_TESTS[t].large_writes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if not END2END_FIXTURES[f].large_writes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if not END2END_TESTS[t].allow_compression: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if END2END_FIXTURES[f].enables_compression: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return True 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |