mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00

The lists has been constructed by grepping the code base from commitbfc2a3553d
("Remove more codec-related templating") using the PCRE '(?<=")WebRTC-[^\s/"]+' and manually removing some false positives. Each field trials has then, on a best effort basis, been associated with a bug by doing a reverse git log lookup and using the corresponding bug tag that was associated with the commit where the field trial key was first introduced. The field trials are divided into active and policy exempt. The latter are for field trials that were added before commitc4a35898d9
("Add documentation for field trials") which introduced the new policy that field trials henceforth needs to be registered. These field trials may not have an associated bug nor an end date. For all field trials that have been deemed experimentational, including many policy exempt ones, an initial end date of 2024-04-01 has been chosen. This date was chosen based on that the policy was introduced on 2022-06-23 and will give about 6 month grace period to allow cleanup of potentially already expired field trials. Owners are of course free to adjust the end date at a later time. The lists have been validated by running most tests with the following GN arg set: rtc_strict_field_trials = "dcheck" Bug: webrtc:14154 Change-Id: Ic86d96933fbe0f18393ec57d36719a382855c694 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/321581 Commit-Queue: Emil Lundmark <lndmrk@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40819}
1081 lines
39 KiB
Python
Executable file
1081 lines
39 KiB
Python
Executable file
#!/usr/bin/env vpython3
|
|
|
|
# Copyright (c) 2022 The WebRTC Project Authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
import datetime
|
|
from datetime import date
|
|
import sys
|
|
from typing import FrozenSet, List, Set
|
|
|
|
import argparse
|
|
import dataclasses
|
|
|
|
|
|
@dataclasses.dataclass(frozen=True)
|
|
class FieldTrial:
|
|
"""Representation of all attributes associated with a field trial.
|
|
|
|
Attributes:
|
|
key: Field trial key.
|
|
bug: Associated open bug containing more context.
|
|
end_date: Date when the field trial expires and must be deleted.
|
|
"""
|
|
key: str
|
|
bug: str
|
|
end_date: date
|
|
|
|
|
|
# As per the policy in `g3doc/field-trials.md`, all field trials should be
|
|
# registered in the container below.
|
|
ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
|
# keep-sorted start
|
|
FieldTrial('WebRTC-Aec3DelayEstimatorDetectPreEcho',
|
|
'webrtc:14205',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3PenalyzeHighDelaysInitialPhase',
|
|
'webrtc:14919',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3PreEchoConfiguration',
|
|
'webrtc:14205',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-GainController2',
|
|
'webrtc:7494',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-OpusSetSignalVoiceWithDtx',
|
|
'webrtc:4559',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Av1-GetEncoderInfoOverride',
|
|
'webrtc:14931',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BurstyPacer',
|
|
'chromium:1354491',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DisableRtxRateLimiter',
|
|
'webrtc:15184',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-EncoderDataDumpDirectory',
|
|
'b/296242528',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-IPv6NetworkResolutionFixes',
|
|
'webrtc:14334',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-IncomingTimestampOnMarkerBitOnly',
|
|
'webrtc:14526',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-IncreaseIceCandidatePriorityHostSrflx',
|
|
'webrtc:15020',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-JitterEstimatorConfig',
|
|
'webrtc:14151',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-LibaomAv1Encoder-DisableFrameDropping',
|
|
'webrtc:15225',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Pacer-FastRetransmissions',
|
|
'chromium:1354491',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Pacer-KeyframeFlushing',
|
|
'webrtc:11340',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-PaddingMode-RecentLargePacket',
|
|
'webrtc:15201',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-PreventSsrcGroupsWithUnexpectedSize',
|
|
'chromium:1459124',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-RtcEventLogEncodeDependencyDescriptor',
|
|
'webrtc:14975',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-RtcEventLogEncodeNetEqSetMinimumDelayKillSwitch',
|
|
'webrtc:14763',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SCM-Timestamp',
|
|
'webrtc:5773',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SendPacketsOnWorkerThread',
|
|
'webrtc:14502',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Stats-RtxReceiveStats',
|
|
'webrtc:15096',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-TaskQueue-ReplaceLibeventWithStdlib',
|
|
'webrtc:14389',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-EnableRetransmitAllLayers',
|
|
'webrtc:14959',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-EncoderFallbackSettings',
|
|
'webrtc:6634',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-RequestedResolutionOverrideOutputFormatRequest',
|
|
'webrtc:14451',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VideoEncoderSettings',
|
|
'chromium:1406331',
|
|
date(2024, 4, 1)),
|
|
# keep-sorted end
|
|
]) # yapf: disable
|
|
|
|
INDEFINITE = date(datetime.MAXYEAR, 1, 1)
|
|
|
|
# These field trials precedes the policy in `g3doc/field-trials.md` and are
|
|
# therefore not required to follow it. Do not add any new field trials here.
|
|
POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([
|
|
# keep-sorted start
|
|
FieldTrial('UseTwccPlrForAna',
|
|
'webrtc:7058',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AddNetworkCostToVpn',
|
|
'webrtc:13097',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AddPacingToCongestionWindowPushback',
|
|
'webrtc:10171',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AdjustOpusBandwidth',
|
|
'webrtc:8522',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3AecStateFullResetKillSwitch',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3AecStateSubtractorAnalyzerResetKillSwitch',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3AntiHowlingMinimizationKillSwitch',
|
|
'b/150764764',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3ClampInstQualityToOneKillSwitch',
|
|
'webrtc:10913',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3ClampInstQualityToZeroKillSwitch',
|
|
'webrtc:10913',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3CoarseFilterResetHangoverKillSwitch',
|
|
'webrtc:12265',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3ConservativeTailFreqResponse',
|
|
'webrtc:13173',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3DeactivateInitialStateResetKillSwitch',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3DelayEstimateSmoothingDelayFoundOverride',
|
|
'webrtc:12775',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3DelayEstimateSmoothingOverride',
|
|
'webrtc:12775',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3EchoSaturationDetectionKillSwitch',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceCaptureDelayEstimationDownmixing',
|
|
'webrtc:11153',
|
|
INDEFINITE),
|
|
FieldTrial(
|
|
'WebRTC-Aec3EnforceCaptureDelayEstimationLeftRightPrioritization',
|
|
'webrtc:11153',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceConservativeHfSuppression',
|
|
'webrtc:11985',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3EnforceLowActiveRenderLimit',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceMoreTransparentNearendSuppressorHfTuning',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceMoreTransparentNearendSuppressorTuning',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceMoreTransparentNormalSuppressorHfTuning',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceMoreTransparentNormalSuppressorTuning',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceRapidlyAdjustingNearendSuppressorTunings',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceRapidlyAdjustingNormalSuppressorTunings',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceRenderDelayEstimationDownmixing',
|
|
'webrtc:11153',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceSlowlyAdjustingNearendSuppressorTunings',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceSlowlyAdjustingNormalSuppressorTunings',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceStationarityProperties',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceStationarityPropertiesAtInit',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3EnforceVeryLowActiveRenderLimit',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3HighPassFilterEchoReference',
|
|
'webrtc:12265',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3MinErleDuringOnsetsKillSwitch',
|
|
'webrtc:10341',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3NonlinearModeReverbKillSwitch',
|
|
'webrtc:11985',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3OnsetDetectionKillSwitch',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial(
|
|
'WebRTC-Aec3RenderDelayEstimationLeftRightPrioritizationKillSwitch',
|
|
'webrtc:11153',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SensitiveDominantNearendActivation',
|
|
'webrtc:11475',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SetupSpecificDefaultConfigDefaultsKillSwitch',
|
|
'webrtc:11151',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3ShortHeadroomKillSwitch',
|
|
'webrtc:10341',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3StereoContentDetectionKillSwitch',
|
|
'webrtc:14900',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorAntiHowlingGainOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorDominantNearendEnrExitThresholdOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorDominantNearendEnrThresholdOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorDominantNearendHoldDurationOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorDominantNearendSnrThresholdOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorDominantNearendTriggerThresholdOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendHfMaskSuppressOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendHfMaskTransparentOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendLfMaskSuppressOverride',
|
|
'webrtc:11487',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendLfMaskTransparentOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendMaxDecFactorLfOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNearendMaxIncFactorOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalHfMaskSuppressOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalHfMaskTransparentOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalLfMaskSuppressOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalLfMaskTransparentOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalMaxDecFactorLfOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorNormalMaxIncFactorOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3SuppressorTuningOverride',
|
|
'webrtc:11487',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3TransparentAntiHowlingGain',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3TransparentModeHmm',
|
|
'webrtc:12265',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3TransparentModeKillSwitch',
|
|
'webrtc:9256',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3Use1Dot2SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3Use1Dot6SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3Use2Dot0SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseDot1SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseDot2SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseDot3SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseDot6SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseDot9SecondsInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseErleOnsetCompensationInDominantNearend',
|
|
'webrtc:12686',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseLowEarlyReflectionsDefaultGain',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseLowLateReflectionsDefaultGain',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseNearendReverbLen',
|
|
'webrtc:13143',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Aec3UseShortConfigChangeDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3UseZeroInitialStateDuration',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Aec3VerySensitiveDominantNearendActivation',
|
|
'webrtc:11475',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Agc2SimdAvx2KillSwitch',
|
|
'webrtc:7494',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Agc2SimdNeonKillSwitch',
|
|
'webrtc:7494',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Agc2SimdSse2KillSwitch',
|
|
'webrtc:7494',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AllowMACBasedIPv6',
|
|
'webrtc:12268',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AlrDetectorParameters',
|
|
'webrtc:10542',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-AndroidNetworkMonitor-IsAdapterAvailable',
|
|
'webrtc:13741',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ApmExperimentalMultiChannelCaptureKillSwitch',
|
|
'webrtc:14901',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-ApmExperimentalMultiChannelRenderKillSwitch',
|
|
'webrtc:14902',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Audio-2ndAgcMinMicLevelExperiment',
|
|
'chromium:1275566',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-ABWENoTWCC',
|
|
'webrtc:8243',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Audio-AdaptivePtime',
|
|
'chromium:1086942',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-Allocation',
|
|
'webrtc:10286',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Audio-AlrProbing',
|
|
'webrtc:10200',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-FecAdaptation',
|
|
'webrtc:8127',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-LegacyOverhead',
|
|
'webrtc:11001',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Audio-MinimizeResamplingOnMobile',
|
|
'webrtc:6181',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-NetEqDecisionLogicConfig',
|
|
'webrtc:13322',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-NetEqDelayManagerConfig',
|
|
'webrtc:10333',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-NetEqNackTrackerConfig',
|
|
'webrtc:10178',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-NetEqSmartFlushing',
|
|
'webrtc:12201',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-OpusAvoidNoisePumpingDuringDtx',
|
|
'webrtc:12380',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-OpusBitrateMultipliers',
|
|
'webrtc:11055',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-OpusPlcUsePrevDecodedSamples',
|
|
'b/143582588',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-Red-For-Opus',
|
|
'webrtc:11640',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Audio-StableTargetAdaptation',
|
|
'webrtc:10981',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Audio-iOS-Holding',
|
|
'webrtc:8126',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AudioDevicePlayoutBufferSizeFactor',
|
|
'webrtc:10928',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-AutomaticAnimationDetectionScreenshare',
|
|
'webrtc:11058',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Avx2SupportKillSwitch',
|
|
'webrtc:11663',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BindUsingInterfaceName',
|
|
'webrtc:10707',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BoostedScreenshareQp',
|
|
'webrtc:9659',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-AllocationProbing',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-AlrProbing',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-EstimateBoundedIncrease',
|
|
'webrtc:10498',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-ExponentialProbing',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-IgnoreProbesLowerThanNetworkStateEstimate',
|
|
'webrtc:10498',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-InitialProbing',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-InjectedCongestionController',
|
|
'webrtc:8415',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Bwe-LimitProbesLowerThanThroughputEstimate',
|
|
'webrtc:11498',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-LinkCapacity',
|
|
'webrtc:9718',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-LossBasedBweV2',
|
|
'webrtc:12707',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-LossBasedControl',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-MaxRttLimit',
|
|
'webrtc:9718',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Bwe-MinAllocAsLowerBound',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-NetworkRouteConstraints',
|
|
'webrtc:11434',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-NoFeedbackReset',
|
|
'webrtc:9718',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-PaceAtMaxOfBweAndLowerLinkCapacity',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-ProbingBehavior',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-ProbingConfiguration',
|
|
'webrtc:10394',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-ReceiveTimeFix',
|
|
'webrtc:9054',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-ReceiverLimitCapsOnly',
|
|
'webrtc:12306',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-RobustThroughputEstimatorSettings',
|
|
'webrtc:10274',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-SafeResetOnRouteChange',
|
|
'webrtc:9718',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Bwe-SeparateAudioPackets',
|
|
'webrtc:10932',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Bwe-TrendlineEstimatorSettings',
|
|
'webrtc:10932',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BweBackOffFactor',
|
|
'webrtc:8212',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-BweLossExperiment',
|
|
'webrtc:5839',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BweRapidRecoveryExperiment',
|
|
'webrtc:8015',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BweThroughputWindowConfig',
|
|
'webrtc:10274',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-BweWindowSizeInPackets',
|
|
'webrtc:8212',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-CongestionWindow',
|
|
'webrtc:14898',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-CpuLoadEstimator',
|
|
'webrtc:8504',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Debugging-RtpDump',
|
|
'webrtc:10675',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-DecoderDataDumpDirectory',
|
|
'webrtc:14236',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-DefaultBitrateLimitsKillSwitch',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DependencyDescriptorAdvertised',
|
|
'webrtc:10342',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DisablePacerEmergencyStop',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DisableUlpFecExperiment',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DontIncreaseDelayBasedBweInAlr',
|
|
'webrtc:10542',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-DscpFieldTrial',
|
|
'webrtc:13622',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ExtraICEPing',
|
|
'webrtc:10273',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-FakeNetworkReceiveConfig',
|
|
'webrtc:14238',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-FakeNetworkSendConfig',
|
|
'webrtc:14238',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-FilterAbsSendTimeExtension',
|
|
'webrtc:10234',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-FindNetworkHandleWithoutIpv6TemporaryPart',
|
|
'webrtc:11067',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-FlexFEC-03',
|
|
'webrtc:5654',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-FlexFEC-03-Advertised',
|
|
'webrtc:5654',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ForcePlayoutDelay',
|
|
'webrtc:11896',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-ForceSendPlayoutDelay',
|
|
'webrtc:11896',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-ForceSimulatedOveruseIntervalMs',
|
|
'webrtc:14239',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-FrameDropper',
|
|
'webrtc:9711',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-FullBandHpfKillSwitch',
|
|
'webrtc:11193',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-GenericCodecDependencyDescriptor',
|
|
'webrtc:14969',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-GenericDescriptorAdvertised',
|
|
'webrtc:9361',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-GenericDescriptorAuth',
|
|
'webrtc:10103',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-GenericPictureId',
|
|
'webrtc:9361',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-GetEncoderInfoOverride',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-H264HighProfile',
|
|
'webrtc:6337',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-IPv6Default',
|
|
'chromium:413437',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-IceControllerFieldTrials',
|
|
'chromium:1024965',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-IceFieldTrials',
|
|
'webrtc:11021',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-KeyframeInterval',
|
|
'webrtc:10427',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-LegacyFrameIdJumpBehavior',
|
|
'webrtc:13343',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-LegacySimulcastLayerLimit',
|
|
'webrtc:8785',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-LegacyTlsProtocols',
|
|
'webrtc:10261',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-LowresSimulcastBitrateInterpolation',
|
|
'webrtc:12415',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-MutedStateKillSwitch',
|
|
'b/177830919',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Network-UseNWPathMonitor',
|
|
'webrtc:10966',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-NetworkMonitorAutoDetect',
|
|
'webrtc:13741',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-NormalizeSimulcastResolution',
|
|
'',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Pacer-BlockAudio',
|
|
'webrtc:8415',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Pacer-DrainQueue',
|
|
'webrtc:8415',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Pacer-IgnoreTransportOverhead',
|
|
'webrtc:9883',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Pacer-PadInSilence',
|
|
'webrtc:8415',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-PacketBufferMaxSize',
|
|
'webrtc:9851',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-PcFactoryDefaultBitrates',
|
|
'webrtc:10865',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-PiggybackIceCheckAcknowledgement',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-PixelLimitResource',
|
|
'webrtc:12261',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-ProbingScreenshareBwe',
|
|
'webrtc:7694',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ProtectionOverheadRateThreshold',
|
|
'webrtc:14899',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-QpParsingKillSwitch',
|
|
'webrtc:12542',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-QuickPerfTest',
|
|
'webrtc:7101',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-RtcEventLogKillSwitch',
|
|
'webrtc:12084',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-RtcEventLogNewFormat',
|
|
'webrtc:8111',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-RtcpLossNotification',
|
|
'webrtc:10336',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-RttMult',
|
|
'webrtc:9670',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-SendBufferSizeBytes',
|
|
'webrtc:11905',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SendNackDelayMs',
|
|
'webrtc:9953',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SetSocketReceiveBuffer',
|
|
'webrtc:13753',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SignalNetworkPreferenceChange',
|
|
'webrtc:11825',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SimulcastLayerLimitRoundUp',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SpsPpsIdrIsH264Keyframe',
|
|
'webrtc:8423',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-StableTargetRate',
|
|
'webrtc:10126',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-StrictPacingAndProbing',
|
|
'webrtc:8072',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-StunInterPacketDelay',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SurfaceCellularTypes',
|
|
'webrtc:11473',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-SwitchEncoderOnInitializationFailures',
|
|
'webrtc:13572',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Target-Bitrate-Rtcp',
|
|
'webrtc:9969',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-TransientSuppressorForcedOff',
|
|
'chromium:1186705',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Turn-AllowSystemPorts',
|
|
'webrtc:12497',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-UseBaseHeavyVP8TL3RateAllocation',
|
|
'webrtc:9477',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-UseDifferentiatedCellularCosts',
|
|
'webrtc:11473',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-UseShortVP8TL2Pattern',
|
|
'webrtc:9477',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-UseShortVP8TL3Pattern',
|
|
'webrtc:8162',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-UseStandardBytesStats',
|
|
'webrtc:10525',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-UseTurnServerAsStunServer',
|
|
'webrtc:11059',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP8-CpuSpeed-Arm',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP8-ForcePartitionResilience',
|
|
'webrtc:11832',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VP8-Forced-Fallback-Encoder-v2',
|
|
'webrtc:6634',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VP8-GetEncoderInfoOverride',
|
|
'webrtc:11832',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VP8-Postproc-Config',
|
|
'webrtc:11551',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP8-Postproc-Config-Arm',
|
|
'webrtc:6634',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VP8ConferenceTemporalLayers',
|
|
'webrtc:9260',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VP8IosMaxNumberOfThread',
|
|
'webrtc:10005',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP8VariableFramerateScreenshare',
|
|
'webrtc:10310',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP9-GetEncoderInfoOverride',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP9-LowTierOptimizations',
|
|
'webrtc:13888',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP9-PerformanceFlags',
|
|
'webrtc:11551',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP9QualityScaler',
|
|
'webrtc:11319',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VP9VariableFramerateScreenshare',
|
|
'webrtc:10310',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-BalancedDegradation',
|
|
'webrtc:7607',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-BalancedDegradationSettings',
|
|
'',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-BandwidthQualityScalerSettings',
|
|
'webrtc:12942',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-DisableAutomaticResize',
|
|
'webrtc:11812',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-DiscardPacketsWithUnknownSsrc',
|
|
'webrtc:9871',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-ForcedSwDecoderFallback',
|
|
'',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-InitialDecoderResolution',
|
|
'webrtc:11898',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-MinVideoBitrate',
|
|
'webrtc:10915',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-Pacing',
|
|
'webrtc:10038',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-PreferTemporalSupportOnBaseLayer',
|
|
'webrtc:11324',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-QualityRampupSettings',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-QualityScalerSettings',
|
|
'',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-QualityScaling',
|
|
'webrtc:9169',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Video-UseFrameRateForOverhead',
|
|
'b/166341943',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Video-VariableStartScaleFactor',
|
|
'',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-VideoFrameTrackingIdAdvertised',
|
|
'webrtc:12594',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VideoLayersAllocationAdvertised',
|
|
'webrtc:1200',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VideoRateControl',
|
|
'webrtc:10223',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-VoIPChannelRemixingAdjustmentKillSwitch',
|
|
'chromium:1027117',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Vp9ExternalRefCtrl',
|
|
'webrtc:9585',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-Vp9InterLayerPred',
|
|
'chromium:949536',
|
|
INDEFINITE),
|
|
FieldTrial('WebRTC-Vp9IssueKeyFrameOnLayerDeactivation',
|
|
'chromium:889017',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ZeroHertzScreenshare',
|
|
'chromium:1255737',
|
|
date(2024, 4, 1)),
|
|
FieldTrial('WebRTC-ZeroPlayoutDelay',
|
|
'chromium:1335323',
|
|
date(2024, 4, 1)),
|
|
# keep-sorted end
|
|
]) # yapf: disable
|
|
|
|
REGISTERED_FIELD_TRIALS: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS.union(
|
|
POLICY_EXEMPT_FIELD_TRIALS)
|
|
|
|
|
|
def todays_date() -> date:
|
|
now = datetime.datetime.now(datetime.timezone.utc)
|
|
return date(now.year, now.month, now.day)
|
|
|
|
|
|
def registry_header(
|
|
field_trials: FrozenSet[FieldTrial] = REGISTERED_FIELD_TRIALS) -> str:
|
|
"""Generates a C++ header with all field trial keys.
|
|
|
|
Args:
|
|
field_trials: Field trials to include in the header.
|
|
|
|
Returns:
|
|
String representation of a C++ header file containing all field trial
|
|
keys.
|
|
|
|
>>> trials = {
|
|
... FieldTrial('B', '', date(1, 1, 1)),
|
|
... FieldTrial('A', '', date(1, 1, 1)),
|
|
... FieldTrial('B', '', date(2, 2, 2)),
|
|
... }
|
|
>>> print(registry_header(trials))
|
|
// This file was automatically generated. Do not edit.
|
|
<BLANKLINE>
|
|
#ifndef GEN_REGISTERED_FIELD_TRIALS_H_
|
|
#define GEN_REGISTERED_FIELD_TRIALS_H_
|
|
<BLANKLINE>
|
|
#include "absl/strings/string_view.h"
|
|
<BLANKLINE>
|
|
namespace webrtc {
|
|
<BLANKLINE>
|
|
inline constexpr absl::string_view kRegisteredFieldTrials[] = {
|
|
"A",
|
|
"B",
|
|
};
|
|
<BLANKLINE>
|
|
} // namespace webrtc
|
|
<BLANKLINE>
|
|
#endif // GEN_REGISTERED_FIELD_TRIALS_H_
|
|
<BLANKLINE>
|
|
"""
|
|
registered_keys = {f.key for f in field_trials}
|
|
keys = '\n'.join(f' "{k}",' for k in sorted(registered_keys))
|
|
return ('// This file was automatically generated. Do not edit.\n'
|
|
'\n'
|
|
'#ifndef GEN_REGISTERED_FIELD_TRIALS_H_\n'
|
|
'#define GEN_REGISTERED_FIELD_TRIALS_H_\n'
|
|
'\n'
|
|
'#include "absl/strings/string_view.h"\n'
|
|
'\n'
|
|
'namespace webrtc {\n'
|
|
'\n'
|
|
'inline constexpr absl::string_view kRegisteredFieldTrials[] = {\n'
|
|
f'{keys}\n'
|
|
'};\n'
|
|
'\n'
|
|
'} // namespace webrtc\n'
|
|
'\n'
|
|
'#endif // GEN_REGISTERED_FIELD_TRIALS_H_\n')
|
|
|
|
|
|
def expired_field_trials(
|
|
threshold: date,
|
|
field_trials: FrozenSet[FieldTrial] = REGISTERED_FIELD_TRIALS
|
|
) -> Set[FieldTrial]:
|
|
"""Obtains expired field trials.
|
|
|
|
Args:
|
|
threshold: Date from which to check end date.
|
|
field_trials: Field trials to validate.
|
|
|
|
Returns:
|
|
All expired field trials.
|
|
|
|
>>> trials = {
|
|
... FieldTrial('Expired', '', date(1, 1, 1)),
|
|
... FieldTrial('Not-Expired', '', date(1, 1, 2)),
|
|
... }
|
|
>>> expired_field_trials(date(1, 1, 1), trials)
|
|
{FieldTrial(key='Expired', bug='', end_date=datetime.date(1, 1, 1))}
|
|
"""
|
|
return {f for f in field_trials if f.end_date <= threshold}
|
|
|
|
|
|
def validate_field_trials(
|
|
field_trials: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS
|
|
) -> List[str]:
|
|
"""Validate that field trials conforms to the policy.
|
|
|
|
Args:
|
|
field_trials: Field trials to validate.
|
|
|
|
Returns:
|
|
A list of explanations for invalid field trials.
|
|
"""
|
|
invalid = []
|
|
for trial in field_trials:
|
|
if not trial.key.startswith('WebRTC-'):
|
|
invalid.append(f'{trial.key} does not start with "WebRTC-".')
|
|
if len(trial.bug) <= 0:
|
|
invalid.append(f'{trial.key} must have an associated bug.')
|
|
if trial.end_date >= INDEFINITE:
|
|
invalid.append(f'{trial.key} must have an end date.')
|
|
return invalid
|
|
|
|
|
|
def cmd_header(args: argparse.Namespace) -> None:
|
|
args.output.write(registry_header())
|
|
|
|
|
|
def cmd_expired(args: argparse.Namespace) -> None:
|
|
today = todays_date()
|
|
diff = datetime.timedelta(days=args.in_days)
|
|
expired = expired_field_trials(today + diff)
|
|
|
|
if len(expired) <= 0:
|
|
return
|
|
|
|
expired_by_date = sorted([(f.end_date, f.key) for f in expired])
|
|
print('\n'.join(
|
|
f'{key} {"expired" if date <= today else "expires"} on {date}'
|
|
for date, key in expired_by_date))
|
|
if any(date <= today for date, _ in expired_by_date):
|
|
sys.exit(1)
|
|
|
|
|
|
def cmd_validate(args: argparse.Namespace) -> None:
|
|
del args
|
|
invalid = validate_field_trials()
|
|
|
|
if len(invalid) <= 0:
|
|
return
|
|
|
|
print('\n'.join(sorted(invalid)))
|
|
sys.exit(1)
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser()
|
|
subcommand = parser.add_subparsers(dest='cmd')
|
|
|
|
parser_header = subcommand.add_parser(
|
|
'header',
|
|
help='generate C++ header file containing registered field trial keys')
|
|
parser_header.add_argument('--output',
|
|
default=sys.stdout,
|
|
type=argparse.FileType('w'),
|
|
required=False,
|
|
help='output file')
|
|
parser_header.set_defaults(cmd=cmd_header)
|
|
|
|
parser_expired = subcommand.add_parser(
|
|
'expired',
|
|
help='lists all expired field trials',
|
|
description='''
|
|
Lists all expired field trials. Exits with a non-zero exit status if
|
|
any field trials has expired, ignoring the --in-days argument.
|
|
''')
|
|
parser_expired.add_argument(
|
|
'--in-days',
|
|
default=0,
|
|
type=int,
|
|
required=False,
|
|
help='number of days relative to today to check')
|
|
parser_expired.set_defaults(cmd=cmd_expired)
|
|
|
|
parser_validate = subcommand.add_parser(
|
|
'validate',
|
|
help='validates that all field trials conforms to the policy.',
|
|
description='''
|
|
Validates that all field trials conforms to the policy. Exits with a
|
|
non-zero exit status if any field trials does not.
|
|
''')
|
|
parser_validate.set_defaults(cmd=cmd_validate)
|
|
|
|
args = parser.parse_args()
|
|
|
|
if not args.cmd:
|
|
parser.print_help(sys.stderr)
|
|
sys.exit(1)
|
|
|
|
args.cmd(args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|