1# Copyright 2022 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Format of each entry: 16# name: name of the experiment 17# description: description of the experiment 18# expiry: when is the next time this experiment *must* be updated 19# (date, YYYY/MM/DD) 20# test_tags: a set of bazel tags, that if a test declares them signals 21# that that test should be run with this experiment enabled in CI 22# allow_in_fuzzing_config: optional boolean (true if not specified) 23# if false, this experiment will not be included in fuzzers that 24# explore the config space 25# requires: A list of names of experiments that this experiment depends on. 26# Defaults to the empty list. 27# If any of the experiments in the required list is determined to 28# be disabled at runtime, this experiment is disabled at runtime. 29# uses_polling: optional boolean (false if not specified) that indicates that 30# this experiment should be tested with all different polling 31# engines. 32# 33# Well known test tags: 34# core_end2end_test: all tests, fixtures in the core end2end suite 35# endpoint_test: endpoint related iomgr tests 36# flow_control_test: tests pertaining explicitly to flow control 37# hpack_test: hpack encode/decode tests 38# promise_test: tests around the promise architecture 39# resource_quota_test: tests known to exercse resource quota 40 41# This file only defines the experiments. Refer to rollouts.yaml for the rollout 42# state of each experiment. 43- name: call_status_override_on_cancellation 44 description: 45 Avoid overriding call status of successfully finished calls if it races with 46 cancellation. 47 expiry: 2024/04/01 48 owner: vigneshbabu@google.com 49 test_tags: [] 50- name: call_v3 51 description: Promise-based call version 3. 52 expiry: 2024/06/01 53 owner: ctiller@google.com 54 test_tags: [] 55- name: canary_client_privacy 56 description: 57 If set, canary client privacy 58 expiry: 2024/08/01 59 owner: alishananda@google.com 60 test_tags: [] 61 allow_in_fuzzing_config: false 62- name: chaotic_good 63 description: 64 If set, enable the chaotic good load transport (this is mostly here for testing) 65 expiry: 2024/09/09 66 owner: ctiller@google.com 67 requires: [promise_based_client_call, promise_based_server_call] 68 test_tags: [core_end2end_test] 69- name: client_privacy 70 description: 71 If set, client privacy 72 expiry: 2024/08/01 73 owner: alishananda@google.com 74 test_tags: [] 75 allow_in_fuzzing_config: false 76- name: event_engine_client 77 description: Use EventEngine clients instead of iomgr's grpc_tcp_client 78 expiry: 2024/07/01 79 owner: hork@google.com 80 test_tags: ["core_end2end_test", "event_engine_client_test"] 81 uses_polling: true 82- name: event_engine_dns 83 description: 84 If set, use EventEngine DNSResolver for client channel resolution 85 expiry: 2024/07/01 86 owner: yijiem@google.com 87 test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"] 88 allow_in_fuzzing_config: false 89 uses_polling: true 90- name: event_engine_listener 91 description: Use EventEngine listeners instead of iomgr's grpc_tcp_server 92 expiry: 2024/07/01 93 owner: vigneshbabu@google.com 94 test_tags: ["core_end2end_test", "event_engine_listener_test"] 95 uses_polling: true 96- name: free_large_allocator 97 description: If set, return all free bytes from a "big" allocator 98 expiry: 2024/08/01 99 owner: alishananda@google.com 100 test_tags: [resource_quota_test] 101- name: http2_stats_fix 102 description: 103 Fix on HTTP2 outgoing data stats reporting 104 expiry: 2024/03/31 105 owner: yashkt@google.com 106 test_tags: [] 107- name: keepalive_fix 108 description: 109 Allows overriding keepalive_permit_without_calls. 110 Refer https://github.com/grpc/grpc/pull/33428 for more information. 111 expiry: 2024/06/30 112 owner: yashkt@google.com 113 test_tags: [] 114 allow_in_fuzzing_config: false 115- name: keepalive_server_fix 116 description: 117 Allows overriding keepalive_permit_without_calls for servers. 118 Refer https://github.com/grpc/grpc/pull/33917 for more information. 119 expiry: 2024/12/31 120 owner: yashkt@google.com 121 test_tags: [] 122 allow_in_fuzzing_config: false 123- name: monitoring_experiment 124 description: Placeholder experiment to prove/disprove our monitoring is working 125 expiry: never-ever 126 owner: ctiller@google.com 127 test_tags: [] 128- name: multiping 129 description: 130 Allow more than one ping to be in flight at a time by default. 131 expiry: 2024/06/15 132 owner: ctiller@google.com 133 test_tags: [flow_control_test] 134- name: peer_state_based_framing 135 description: 136 If set, the max sizes of frames sent to lower layers is controlled based 137 on the peer's memory pressure which is reflected in its max http2 frame 138 size. 139 expiry: 2024/08/01 140 owner: vigneshbabu@google.com 141 test_tags: ["flow_control_test"] 142- name: pending_queue_cap 143 description: 144 In the sync & async apis (but not the callback api), cap the number of 145 received but unrequested requests in the server for each call type. 146 A received message is one that was read from the wire on the server. 147 A requested message is one explicitly requested by the application using 148 grpc_server_request_call or grpc_server_request_registered_call (or their 149 wrappers in the C++ API). 150 expiry: 2024/05/05 151 owner: ctiller@google.com 152 test_tags: [] 153- name: promise_based_client_call 154 description: 155 If set, use the new gRPC promise based call code when it's appropriate 156 (ie when all filters in a stack are promise based) 157 expiry: 2024/06/14 158 owner: ctiller@google.com 159 test_tags: ["core_end2end_test", "lame_client_test"] 160 requires: ["event_engine_listener", "event_engine_client"] 161- name: promise_based_inproc_transport 162 description: 163 Use promises for the in-process transport. 164 expiry: 2024/06/06 165 owner: ctiller@google.com 166 test_tags: [] 167 allow_in_fuzzing_config: false # experiment currently crashes if enabled 168 requires: [promise_based_client_call, promise_based_server_call] 169- name: promise_based_server_call 170 description: 171 If set, use the new gRPC promise based call code when it's appropriate 172 (ie when all filters in a stack are promise based) 173 expiry: 2024/06/14 174 owner: ctiller@google.com 175 test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "logging_test"] 176- name: rstpit 177 description: 178 On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short duration 179 expiry: 2024/08/03 180 owner: ctiller@google.com 181 test_tags: [flow_control_test] 182- name: schedule_cancellation_over_write 183 description: Allow cancellation op to be scheduled over a write 184 expiry: 2024/04/01 185 owner: vigneshbabu@google.com 186 test_tags: [] 187- name: server_privacy 188 description: 189 If set, server privacy 190 expiry: 2024/08/01 191 owner: alishananda@google.com 192 test_tags: [] 193 allow_in_fuzzing_config: false 194- name: tcp_frame_size_tuning 195 description: 196 If set, enables TCP to use RPC size estimation made by higher layers. 197 TCP would not indicate completion of a read operation until a specified 198 number of bytes have been read over the socket. 199 Buffers are also allocated according to estimated RPC sizes. 200 expiry: 2024/08/01 201 owner: vigneshbabu@google.com 202 test_tags: ["endpoint_test", "flow_control_test"] 203- name: tcp_rcv_lowat 204 description: Use SO_RCVLOWAT to avoid wakeups on the read path. 205 expiry: 2024/08/01 206 owner: vigneshbabu@google.com 207 test_tags: ["endpoint_test", "flow_control_test"] 208- name: trace_record_callops 209 description: Enables tracing of call batch initiation and completion. 210 expiry: 2024/04/01 211 owner: vigneshbabu@google.com 212 test_tags: [] 213- name: unconstrained_max_quota_buffer_size 214 description: Discard the cap on the max free pool size for one memory allocator 215 expiry: 2024/09/01 216 owner: ctiller@google.com 217 test_tags: [resource_quota_test] 218- name: work_serializer_clears_time_cache 219 description: 220 Have the work serializer clear the time cache when it dispatches work. 221 expiry: 2024/07/01 222 owner: ctiller@google.com 223 test_tags: [] 224- name: work_serializer_dispatch 225 description: 226 Have the work serializer dispatch work to event engine for every callback, 227 instead of running things inline in the first thread that successfully 228 enqueues work. 229 expiry: 2024/06/30 230 owner: ysseung@google.com 231 test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "lb_unit_test"] 232