gnmic testbed — parity

Generated 2026-08-23 07:19 UTC. History lives on the results branch.

Latest run

nightly run 32623135377 2026-08-23T07:19:03Z

go: openconfig/gnmic@main
rust: gnmic/gnmic.rs@main

both pass 272 both fail 0 diverge 17 other 21 total 310

Suites

suitetestsboth passboth faildivergego failrust failskip
001-targets191900000
002-subscriptions313100000
003-outputs353500000
004-processors282602002
005-cluster11000301
006-tunnel-targets222200000
007-inputs262501100
008-apply191900000
009-validation494504103
010-profiling4000004
011-gnmi-server4004004
012-cli625006007

001-targets

tests 19 both pass 19 go fail 0 rust fail 0 skip 0

testgorustnote
TestAddExplicitOutput
TestAddExplicitSubscription
TestAddImplicitOutput
TestChangeSubscriptionAddPath
TestExplicitListIgnoresImplicit
TestRemoveExplicitOutput
TestRemoveExplicitSubscription
TestRuntimeAPIAndMetricsSmoke
TestRuntimeStateRouteParity
TestTargetAdminState
TestTargetDeletionTearsDown
TestTargetEventTags
TestTargetRestarted
TestTargetSubscriptionListChange
TestTargetTLSChange
TestUnreachableTargetErrorState
TestUnreachableTargetRecovers
TestUpdateTargetAddress
TestUpdateTargetCredentials

002-subscriptions

tests 31 both pass 31 go fail 0 rust fail 0 skip 0

testgorustnote
TestAddOnChangeToStream
TestAddPathDifferentInterval
TestAddPathToStream
TestAddPrefixAndPath
TestAddRemoveSubscriptions
TestChangeEncoding
TestChangeSampleInterval
TestChangeStreamMode
TestChangeSubscriptionPath
TestDeleteReferencedSubscription
TestHeartbeatInterval
TestInvalidSubscriptionRejected
TestInvalidSubscriptionRejected/bad-sample-interval
TestInvalidSubscriptionRejected/empty-paths
TestInvalidSubscriptionRejected/missing-name
TestInvalidSubscriptionRejected/unknown-encoding
TestInvalidSubscriptionRejected/unknown-mode
TestInvalidSubscriptionRejected/unknown-stream-mode
TestOnceMode
TestPollMode
TestRemovePathFromStream
TestRuntimeSubscriptionMembership
TestStreamSubscriptionValidation
TestStreamSubscriptionValidation/child-invalid-stream-mode
TestStreamSubscriptionValidation/child-missing-path
TestStreamSubscriptionValidation/paths-and-stream-subscriptions
TestStreamSubscriptionValidation/stream-children-under-once
TestSubscriptionScopedOutputRouting
TestSuppressRedundant
TestTargetDefinedStreamMode
TestUpdatesOnly

003-outputs

tests 35 both pass 35 go fail 0 rust fail 0 skip 0

testgorustnote
TestClickHouseOutput
TestCollectorRestartResumesOutput
TestFileOutputAddTargetTemplate
TestFileOutputCreateDelete
TestFileOutputFilenameChange
TestFileOutputFormatChange
TestFileOutputInvalidReplacementPreservesOld
TestFileOutputMissingDirRecovers
TestFileOutputProcessorInPlace
TestFileOutputProcessorsAddRemove
TestFileOutputSplitEventsAndTemplate
TestInfluxDBOutput
TestInfluxDBOutputChangeBucket
TestJetstreamOutput
TestJetstreamOutputChangeStream
TestKafkaOutput
TestKafkaOutputChangeTopic
TestNatsOutput
TestNatsOutputChangeSubject
TestOTLPOutput
TestPrometheusChangeAddress
TestPrometheusChangeExpiration
TestPrometheusChangeMetricPrefix
TestPrometheusChangePath
TestPrometheusOutputCreateDelete
TestPrometheusProcessorsAddRemove
TestPrometheusProcessorsModify
TestPrometheusRemoteWrite
TestPrometheusRemoteWriteChangePrefix
TestPrometheusRemoteWriteProcessors
TestShutdownGateDeleteUnderLoad
TestShutdownGateDeleteUnderLoad/file
TestShutdownGateDeleteUnderLoad/kafka
TestShutdownGateDeleteUnderLoad/prometheus
TestShutdownGateDeleteUnderLoad/remote-write

004-processors

tests 28 both pass 26 go fail 0 rust fail 0 skip 2

testgorustnote
TestProcessorCombineCycleRejectedgo: === RUN TestProcessorCombineCycleRejected processors_test.go:672: combine cycle accepted (200); cycle rejection is not enforced at POST: --- SKIP: TestProcessorCombineCycleRejected (0.00s)
TestProcessorCombineNestedUpdatego: === RUN TestProcessorCombineNestedUpdate processors_test.go:615: event-combine kept the old nested processor after an in-place update; see suite/BUGS.md --- SKIP: TestProcessorCombineNestedUpdat
TestProcessorAddTagDataPath
TestProcessorAllowDataPath
TestProcessorChainOrdering
TestProcessorCombineConditional
TestProcessorConvertDataPath
TestProcessorCreateUpdateDelete
TestProcessorDataConvertDataPath
TestProcessorDateStringDataPath
TestProcessorDeleteDataPath
TestProcessorDropDataPath
TestProcessorDurationConvertDataPath
TestProcessorExtractTagsDataPath
TestProcessorGroupByDataPath
TestProcessorIeeeFloat32DataPath
TestProcessorInvalidUpdateNonDestructive
TestProcessorJQDataPath
TestProcessorMergeDataPath
TestProcessorOverrideTsDataPath
TestProcessorRateLimitDataPath
TestProcessorSharedFanoutUpdate
TestProcessorStringsDataPath
TestProcessorTimeEpochDataPath
TestProcessorToTagDataPath
TestProcessorValueTagDataPath
TestProcessorValueTagV2DataPath
TestProcessorWriteDataPath

005-cluster

tests 11 both pass 0 go fail 3 rust fail 0 skip 1

testgorustnote
TestDrainMembergo: Failed
TestRebalanceSkewedAssignmentsgo: Failed
TestRemoveAssignedTargetgo: Failed
TestManualAssignmentOverridesPlacementgo: === RUN TestManualAssignmentOverridesPlacement cluster_test.go:713: manual assignment did not move lock from gnmic1 to gnmic2; see suite/BUGS.md --- SKIP: TestManualAssignmentOverridesPlacement
TestAddRemoveMembers
TestAddTargetToRunningCluster
TestClusterFormation
TestFailoverWithTargets
TestLeaderSwitchover
TestLeaderTakeover
TestTargetAssignment

006-tunnel-targets

tests 22 both pass 22 go fail 0 rust fail 0 skip 0

testgorustnote
TestAddExplicitOutput
TestAddExplicitSubscription
TestAddImplicitOutput
TestChangeSubscriptionAddPath
TestExplicitListIgnoresImplicit
TestRuntimeStateRouteParity
TestTargetDeletionTearsDown
TestTargetEventTags
TestTargetRestarted
TestTargetSubscriptionListChange
TestTargetTLSChange
TestTunnelTargetDeregisterOnDrop
TestTunnelTargetMatchCRUD
TestTunnelTargetMatchDeleteRemovesConfig
TestTunnelTargetMatchReeval
TestTunnelTargetNoMgmtLeak
TestTunnelTargetRegisters
TestTunnelTargetStreamsTelemetry
TestUnreachableTargetErrorState
TestUnreachableTargetRecovers
TestUpdateTargetAddress
TestUpdateTargetCredentials

007-inputs

tests 26 both pass 25 go fail 1 rust fail 0 skip 0

testgorustnote
TestNatsInputMalformedIsolationgo: Failed
TestJetstreamDeliverPolicy
TestJetstreamDeliverPolicy/all
TestJetstreamDeliverPolicy/last
TestJetstreamDeliverPolicy/last-per-subject
TestJetstreamDeliverPolicy/new
TestJetstreamInputAddressChange
TestJetstreamInputCreateDelete
TestJetstreamInputFormatChange
TestJetstreamInputProcessorModify
TestJetstreamInputProcessorsAddRemove
TestJetstreamInputSubjectChange
TestKafkaInputAddressChange
TestKafkaInputCreateDelete
TestKafkaInputFormatChange
TestKafkaInputProcessorModify
TestKafkaInputProcessorsAddRemove
TestKafkaInputTopicChange
TestNatsInputAddressChange
TestNatsInputCreateDelete
TestNatsInputFanoutTwoOutputs
TestNatsInputFormatChange
TestNatsInputOutputListChange
TestNatsInputProcessorModify
TestNatsInputProcessorsAddRemove
TestNatsInputSubjectChange

008-apply

tests 19 both pass 19 go fail 0 rust fail 0 skip 0

testgorustnote
TestAddRemoveOutputs
TestAddRemoveSubscriptions
TestAddRemoveTargets
TestApplyDependentSectionsTogether
TestApplyInputs
TestApplyProcessors
TestApplyReset
TestApplyResetDrainsRuntime
TestApplyTunnelTargetMatches
TestConcurrentApplyNeverInterleaves
TestGzipApply
TestNoopApplyPreservesSessions
TestSwitchOutputs
TestSwitchSubAndOutput
TestSwitchSubscriptions
TestSwitchTargetAndOutput
TestSwitchTargetAndSub
TestSwitchTargetSubAndOutput
TestSwitchTargets

009-validation

tests 49 both pass 45 go fail 1 rust fail 0 skip 3

testgorustnote
TestProcessorDeleteInUseByInputgo: Failed
TestSecretsRedactedgo: === RUN TestSecretsRedacted validation_test.go:562: GET /config leaks target secrets on Go; see suite/BUGS.md --- SKIP: TestSecretsRedacted (0.00s)
TestTunnelMatchInvalidExpression/bad-id-regexgo: === RUN TestTunnelMatchInvalidExpression/bad-id-regex validation_test.go:659: bad-id-regex accepted (200); regex validation is not enforced at POST: --- SKIP: TestTunnelMatchInvalidExpressi
TestTunnelMatchInvalidExpression/missing-idgo: === RUN TestTunnelMatchInvalidExpression/missing-id validation_test.go:659: missing-id accepted (200); regex validation is not enforced at POST: --- SKIP: TestTunnelMatchInvalidExpression/m
TestApplyInputsWithoutOutputs
TestApplyInvalidJSON
TestApplyTargetsWithoutSubscriptions
TestApplyTunnelMatchesWithoutSubscriptions
TestApplyValidationPreservesState
TestClusterRoutesWithoutClustering
TestConfigSnapshotConsistency
TestDeleteReferencedOutputOrSubscription
TestFailedOutputReplacementPreservesConfig
TestHealthz
TestInputDeleteUnknown
TestInputGetUnknown
TestInputOutputsPatchNotImplemented
TestInputPostInvalidJSON
TestInputPostMissingName
TestInputPostMissingType
TestInputPostUnknownType
TestInputProcessorsPatchNotImplemented
TestMethodAndMediaType
TestOutputGetUnknown
TestOutputPostInvalidJSON
TestOutputPostMissingName
TestOutputPostUnknownType
TestOutputProcessorsPatchNotImplemented
TestProcessorDeleteInUse
TestProcessorGetUnknown
TestProcessorPostInvalidJSON
TestProcessorPostMissingName
TestProcessorPostMissingType
TestSSEInvalidQuery
TestSubscriptionDeleteUnknown
TestSubscriptionGetUnknown
TestSubscriptionPostInvalidJSON
TestTargetGetUnknown
TestTargetPatchOutputsUnknownTarget
TestTargetPatchSubscriptionsUnknownSub
TestTargetPatchSubscriptionsUnknownTarget
TestTargetPostInvalidJSON
TestTargetPostMissingAddress
TestTargetPostMissingName
TestTargetPostUnknownOutput
TestTargetPostUnknownSubscription
TestTargetStateMissingState
TestTargetStateUnknownTarget
TestTunnelMatchInvalidExpression

010-profiling

tests 4 both pass 0 go fail 0 rust fail 0 skip 4

testgorustnote
TestCRUDOutputsgo: === RUN TestCRUDOutputs profiling_test.go:150: profiling/soak suite; set RUN_PROFILING=1 to run --- SKIP: TestCRUDOutputs (0.00s)
TestCRUDProcessorsgo: === RUN TestCRUDProcessors profiling_test.go:170: profiling/soak suite; set RUN_PROFILING=1 to run --- SKIP: TestCRUDProcessors (0.00s)
TestCRUDSubscriptionsgo: === RUN TestCRUDSubscriptions profiling_test.go:136: profiling/soak suite; set RUN_PROFILING=1 to run --- SKIP: TestCRUDSubscriptions (0.00s)
TestCRUDTargetsgo: === RUN TestCRUDTargets profiling_test.go:186: profiling/soak suite; set RUN_PROFILING=1 to run --- SKIP: TestCRUDTargets (0.00s)

011-gnmi-server

tests 4 both pass 0 go fail 0 rust fail 0 skip 4

testgorustnote
TestGNMIServerCapabilitiesgo: === RUN TestGNMIServerCapabilities gnmi_server_test.go:159: gnmi-server did not listen on clab-gnmi-server-011-gnmic:57400; Go collector does not start the listener (see suite/BUGS.md): tcp clab
TestGNMIServerOnceCachego: === RUN TestGNMIServerOnceCache gnmi_server_test.go:232: gnmi-server did not listen on clab-gnmi-server-011-gnmic:57400; Go collector does not start the listener (see suite/BUGS.md): tcp clab-gn
TestGNMIServerPollCachego: === RUN TestGNMIServerPollCache gnmi_server_test.go:261: gnmi-server did not listen on clab-gnmi-server-011-gnmic:57400; Go collector does not start the listener (see suite/BUGS.md): tcp clab-gn
TestGNMIServerStreamCachego: === RUN TestGNMIServerStreamCache gnmi_server_test.go:173: gnmi-server did not listen on clab-gnmi-server-011-gnmic:57400; Go collector does not start the listener (see suite/BUGS.md): tcp clab-

012-cli

tests 62 both pass 50 go fail 0 rust fail 0 skip 7

testgorustnote
TestConfigPrecedence/flags-beat-envrust: === RUN TestConfigPrecedence/flags-beat-env cli_test.go:630: rust CLI flags are not bound to GNMIC_* environment variables --- SKIP: TestConfigPrecedence/flags-beat-env (0.00s)
TestConfigPrecedence/flags-beat-filerust: === RUN TestConfigPrecedence/flags-beat-file cli_test.go:619: rust --address is additive with --config targets; flags do not override file target credentials --- SKIP: TestConfigPrecedence/f
TestGetProcessorrust: === RUN TestGetProcessor cli_test.go:693: get --processor is not implemented in rust --- SKIP: TestGetProcessor (0.00s)
TestGetSetWorkflowrust: === RUN TestGetSetWorkflow cli_test.go:711: getset is not implemented in rust --- SKIP: TestGetSetWorkflow (0.00s)
TestProtoDescriptorsrust: === RUN TestProtoDescriptors cli_test.go:734: proto-file / registered-extensions are not implemented in rust --- SKIP: TestProtoDescriptors (0.00s)
TestSubscribeModes/pollrust: === RUN TestSubscribeModes/poll cli_test.go:474: rust CLI POLL does not send follow-up Poll messages; gnmi-gen may close the stream before REST is sampled --- SKIP: TestSubscribeModes/poll (
TestTLSAuth/mtls-token-socks-unixgo: === RUN TestTLSAuth/mtls-token-socks-unix cli_test.go:605: mTLS/token/SOCKS5/Unix need dedicated fixtures; gnmi-gen tls:{} is ephemeral self-signed username/password only --- SKIP: TestTLSAu · rust: === RUN TestTLSAuth/mtls-token-socks-unix cli_test.go:605: mTLS/token/SOCKS5/Unix need dedicated fixtures; gnmi-gen tls:{} is ephemeral self-signed username/password only --- SKIP: TestTLSAu
TestGetFormats/metric
TestGetSetWorkflow/condition-false
TestGetSetWorkflow/set-phase-unimplemented
TestProtoDescriptors/missing-import
TestProtoDescriptors/registered-extension
TestCapabilities
TestCapabilities/multi-address
TestCapabilities/single
TestConfigPrecedence
TestConfigPrecedence/config-file-ok
TestConfigPrecedence/secrets-not-printed
TestDryRunNoRPC
TestGetFormats
TestGetFormats/encoding-json-ietf
TestGetFormats/event
TestGetFormats/flat
TestGetFormats/json
TestGetFormats/proto
TestGetFormats/protojson
TestGetFormats/prototext
TestGetRequestShape
TestMultiAddressFailover
TestSetOperationMatrix
TestSetOperationMatrix/dry-run-delete
TestSetOperationMatrix/dry-run-replace
TestSetOperationMatrix/dry-run-typed-bool
TestSetOperationMatrix/dry-run-typed-int
TestSetOperationMatrix/dry-run-typed-json
TestSetOperationMatrix/dry-run-union-replace
TestSetOperationMatrix/dry-run-update-string
TestSetRequestFiles
TestSetRequestFiles/json
TestSetRequestFiles/malformed
TestSetRequestFiles/missing-vars-file
TestSetRequestFiles/proto-request-file
TestSetRequestFiles/template-vars
TestSetRequestFiles/yaml
TestSubscribeModes
TestSubscribeModes/history-once
TestSubscribeModes/once
TestSubscribeModes/stream-on-change
TestSubscribeModes/stream-sample
TestSubscribeModes/updates-only-heartbeat
TestTLSAuth
TestTLSAuth/insecure-against-tls
TestTLSAuth/skip-verify
TestTLSAuth/wrong-password
TestVersionAndFailures
TestVersionAndFailures/bad-auth
TestVersionAndFailures/deadline
TestVersionAndFailures/invalid-flag
TestVersionAndFailures/unknown-command
TestVersionAndFailures/unreachable
TestVersionAndFailures/version-json
TestVersionAndFailures/version-text

History

whenworkflowrunboth passdivergetotalgorust
2026-08-23T07:19:03Znightly3262313537727217310openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-22T07:13:06Znightly3255712152019628239openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-22T00:06:56Znightly3253713057118912217openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-21T08:23:16Ztunnel-nightly3246148124021122openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-21T07:12:48Znightly3245508050918912217openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-20T08:24:46Ztunnel-nightly3234699243621122openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-20T07:13:01Znightly3234026257518912217openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-19T08:22:15Ztunnel-nightly3223061658421122openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-19T07:10:36Znightly3222393955718813217openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-18T08:22:44Ztunnel-nightly3211431360121122openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-18T07:11:29Znightly3210738721019011217openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-17T08:24:00Ztunnel-nightly3200877089318018openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-17T07:11:02Znightly320026844101610171openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-16T09:59:49Zsrl-weekly31936910602680171openconfig/gnmic@main (TARGET_BACKEND=srl)gnmic/gnmic.rs@main (TARGET_BACKEND=srl)
2026-08-16T08:11:10Ztunnel-nightly3193503790118018openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-16T06:58:29Znightly319315679501081173openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-15T08:09:18Ztunnel-nightly3187302280418018openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-15T06:57:07Znightly318694955611610171openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-14T09:00:42Ztunnel-nightly3178504190918018openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-14T07:44:44Znightly317792557231610171openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-13T09:07:12Ztunnel-nightly3168380885416218openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-13T07:46:51Znightly316771910141610171openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-12T09:03:05Ztunnel-nightly3157984516217118openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-12T07:43:53Znightly3157327158513521171openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-12T06:44:09Zon-demand315690703041731189openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-12T01:55:19Zon-demand315534000371510189openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-11T07:17:36Znightly3146699487510213147openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-11T01:17:40Zon-demand314476102081141147openconfig/gnmic@maingnmic/gnmic.rs@main
2026-08-10T17:29:59Zon-demand3141346592638038openconfig/gnmic@maingnmic/gnmic.rs@main