diff --git a/Makefile b/Makefile index ffe2ca29f5e..79898629989 100644 --- a/Makefile +++ b/Makefile @@ -72,6 +72,11 @@ proto/nosimage_go_proto/nosimage.pb.go: proto/nosimage.proto protoimports protoc -I='protobuf-import' --proto_path=proto --go_out=./proto/nosimage_go_proto --go_opt=paths=source_relative --go_opt=Mnosimage.proto=proto/nosimage_go_proto --go_opt=Mgithub.com/openconfig/featureprofiles/proto/ocpaths.proto=github.com/openconfig/featureprofiles/proto/ocpaths_go_proto --go_opt=Mgithub.com/openconfig/featureprofiles/proto/ocrpcs.proto=github.com/openconfig/featureprofiles/proto/ocrpcs_go_proto nosimage.proto goimports -w proto/nosimage_go_proto/nosimage.pb.go +proto/testregistry_go_proto/testregistry.pb.go: proto/testregistry.proto protoimports + mkdir -p proto/testregistry_go_proto + protoc -I='protobuf-import' --proto_path=proto --go_out=./proto/testregistry_go_proto --go_opt=paths=source_relative --go_opt=Mtestregistry.proto=proto/testregistry_go_proto testregistry.proto + goimports -w proto/testregistry_go_proto/testregistry.pb.go + topologies/proto/binding/binding.pb.go: topologies/proto/binding.proto protoimports mkdir -p topologies/proto/binding protoc -I='protobuf-import' --proto_path=topologies/proto --go_out=. --go_opt=Mbinding.proto=topologies/proto/binding binding.proto diff --git a/proto/testregistry_go_proto/testregistry.pb.go b/proto/testregistry_go_proto/testregistry.pb.go new file mode 100644 index 00000000000..98feb5421cd --- /dev/null +++ b/proto/testregistry_go_proto/testregistry.pb.go @@ -0,0 +1,293 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// testregistry.proto -- specifying structure of a list of tests +// in featureprofiles + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: testregistry.proto + +package testregistry_go_proto + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type TestRegistry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name -- the human readable name of this TestSuite + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Test []*Test `protobuf:"bytes,2,rep,name=test,proto3" json:"test,omitempty"` +} + +func (x *TestRegistry) Reset() { + *x = TestRegistry{} + if protoimpl.UnsafeEnabled { + mi := &file_testregistry_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestRegistry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestRegistry) ProtoMessage() {} + +func (x *TestRegistry) ProtoReflect() protoreflect.Message { + mi := &file_testregistry_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestRegistry.ProtoReflect.Descriptor instead. +func (*TestRegistry) Descriptor() ([]byte, []int) { + return file_testregistry_proto_rawDescGZIP(), []int{0} +} + +func (x *TestRegistry) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TestRegistry) GetTest() []*Test { + if x != nil { + return x.Test + } + return nil +} + +// Test specifies resources for a single functional test that applies to a +// Feature. It +type Test struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id -- Test ID, required, must be unique, must match the regex: + // + // [A-Z][A-Z]+\-[0-9]+(\.[0-9]+)? + // Test ID should match the rundata.TestPlanID of the linked exec. + // For example: AA-1.1 + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // version -- should be incremented each time any changes are made to the + // + // Test message instance for a given Test ID. + Version uint32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + // description -- should be a human readable common name for the Test + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // readme -- must be a URL, should be a link to the human readable + // + // readme.md or other documentation describing the test + Readme []string `protobuf:"bytes,4,rep,name=readme,proto3" json:"readme,omitempty"` + // exec -- must be a URL, may be a link to google3 code, should be a + // + // link to an ondatra test in the public repo location + Exec string `protobuf:"bytes,5,opt,name=exec,proto3" json:"exec,omitempty"` +} + +func (x *Test) Reset() { + *x = Test{} + if protoimpl.UnsafeEnabled { + mi := &file_testregistry_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Test) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Test) ProtoMessage() {} + +func (x *Test) ProtoReflect() protoreflect.Message { + mi := &file_testregistry_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Test.ProtoReflect.Descriptor instead. +func (*Test) Descriptor() ([]byte, []int) { + return file_testregistry_proto_rawDescGZIP(), []int{1} +} + +func (x *Test) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Test) GetVersion() uint32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *Test) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Test) GetReadme() []string { + if x != nil { + return x.Readme + } + return nil +} + +func (x *Test) GetExec() string { + if x != nil { + return x.Exec + } + return "" +} + +var File_testregistry_proto protoreflect.FileDescriptor + +var file_testregistry_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x22, 0x65, 0x0a, + 0x0c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x04, + 0x74, 0x65, 0x73, 0x74, 0x22, 0x7e, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x65, 0x78, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_testregistry_proto_rawDescOnce sync.Once + file_testregistry_proto_rawDescData = file_testregistry_proto_rawDesc +) + +func file_testregistry_proto_rawDescGZIP() []byte { + file_testregistry_proto_rawDescOnce.Do(func() { + file_testregistry_proto_rawDescData = protoimpl.X.CompressGZIP(file_testregistry_proto_rawDescData) + }) + return file_testregistry_proto_rawDescData +} + +var file_testregistry_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_testregistry_proto_goTypes = []interface{}{ + (*TestRegistry)(nil), // 0: openconfig.featureprofiles.testregistry.TestRegistry + (*Test)(nil), // 1: openconfig.featureprofiles.testregistry.Test +} +var file_testregistry_proto_depIdxs = []int32{ + 1, // 0: openconfig.featureprofiles.testregistry.TestRegistry.test:type_name -> openconfig.featureprofiles.testregistry.Test + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_testregistry_proto_init() } +func file_testregistry_proto_init() { + if File_testregistry_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_testregistry_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestRegistry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_testregistry_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Test); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_testregistry_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_testregistry_proto_goTypes, + DependencyIndexes: file_testregistry_proto_depIdxs, + MessageInfos: file_testregistry_proto_msgTypes, + }.Build() + File_testregistry_proto = out.File + file_testregistry_proto_rawDesc = nil + file_testregistry_proto_goTypes = nil + file_testregistry_proto_depIdxs = nil +} diff --git a/testregistry.textproto b/testregistry.textproto index 651fcca1dc8..eb0557319a0 100644 --- a/testregistry.textproto +++ b/testregistry.textproto @@ -2,17 +2,6 @@ # proto-message: TestRegistry name: "WBB Test Registry" -test: { - id: "ACL-1.1" - description: "Layer 3 filtering" - exec: " " -} -test: { - id: "ACL-1.2" - description: "ACL Update (Make-before-break)" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/acl/otg_tests/acl_update_test/README.md" - exec: " " -} test: { id: "ACCTZ-1.1" description: "gNSI.acctz.v1 (Accounting) Test Record Subscribe Full" @@ -22,6 +11,11 @@ test: { id: "ACCTZ-1.1" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/security/gnsi/acctz/RecordSubscribeFull/README.md" } +test: { + id: "ACCTZ-10.1" + description: "gNSI.acctz.v1 (Accounting) Test Accounting Authentication Error - Multi-transaction" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/security/gnsi/acctz/AccountingAuthenErrorMulti/README.md" +} test: { id: "ACCTZ-2.1" description: "gNSI.acctz.v1 (Accounting) Test Record Subscribe Partial" @@ -68,9 +62,15 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/security/gnsi/acctz/AccountingPrivEscalation/README.md" } test: { - id: "ACCTZ-10.1" - description: "gNSI.acctz.v1 (Accounting) Test Accounting Authentication Error - Multi-transaction" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/security/gnsi/acctz/AccountingAuthenErrorMulti/README.md" + id: "ACL-1.1" + description: "Layer 3 filtering" + exec: " " +} +test: { + id: "ACL-1.2" + description: "ACL Update (Make-before-break)" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/acl/otg_tests/acl_update_test/README.md" + exec: " " } test: { id: "Authz-1" @@ -132,86 +132,6 @@ test: { readme: "" exec: " " } -test: { - id: "bootz-1.1" - description: "Missing configuration - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-1.2" - description: "Invalid configuration - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-1.3" - description: "Valid configuration - Device succeded with status ok" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-2.1" - description: "Software version is different - Device is upgraded to the new version" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-2.2" - description: "Invalid software image - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-3" - description: "bootz-3: Validate Ownership Voucher in bootz configuration" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-3.1" - description: "No ownership voucher - Device boots without OV present" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-3.2" - description: "Invalid OV - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-3.3" - description: "OV fails - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-3.4" - description: "OV valid - Device boots with OV installed" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-4" - description: "bootz-4: Validate device properly resets if provided invalid image" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-4.1" - description: "no OS provided - Device boots with existing image" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-4.2" - description: "Invalid OS image provided - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-4.3" - description: "failed to fetch image from remote URL - Device fails with status invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-4.4" - description: "OS checksum doesn't match - Device fails with invalid parameter" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} -test: { - id: "bootz-5" - description: "Validate gNSI components in bootz configuration" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" -} test: { id: "Certz-1" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/security/gnsi/certz/client_certificates/README.md" @@ -311,6 +231,17 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/qos/ate_tests/two_sp_queue_traffic_test/README.md" exec: " " } +test: { + id: "DP-1.9" + description: "WRR traffic test" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/qos/ate_tests/wrr_traffic_test/README.md" + exec: " " +} +test: { + id: "FP-1.1" + description: "Power admin DOWN/UP Test" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/tests/power_admin_down_up_test/README.md" +} test: { id: "Health-1.1" description: "Generic Health Check" @@ -330,16 +261,11 @@ test: { exec: " " } test: { - id: "DP-1.9" - description: "WRR traffic test" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/qos/ate_tests/wrr_traffic_test/README.md" + id: "MGT-1" + description: "Management HA test" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/management/README.md" exec: " " } -test: { - id: "FP-1.1" - description: "Power admin DOWN/UP Test" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/tests/power_admin_down_up_test/README.md" -} test: { id: "OC-1.1" description: "System Configuration" @@ -403,8 +329,10 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/p4rt/otg_tests/lldp_packetout_test/README.md" } test: { - id: "Replay-1.2" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/replay/tests/p4rt_replay/README.md" + id: "PLT-1.1" + description: "Interface breakout Test" + readme: "https://github.com/openconfig/featureprofiles/feature/experimental/platform/tests/breakout_configuration/README.md" + exec: " " } test: { id: "RT-1.10" @@ -508,6 +436,12 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/chained_policies/README.md" exec: " " } +test: { + id: "RT-1.3" + description: "BGP Route Propagation" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/addpath/ate_tests/route_propagation_test/README.md" + exec: " " +} test: { id: "RT-1.30" description: "BGP nested import/export policy attachment" @@ -536,12 +470,6 @@ test: { readme: "https://github.com/openconfig/featureprofiles/feature/bgp/admin_distance/README.md" exec: " " } -test: { - id: "RT-1.3" - description: "BGP Route Propagation" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/addpath/ate_tests/route_propagation_test/README.md" - exec: " " -} test: { id: "RT-1.4" description: "BGP Graceful Restart" @@ -591,35 +519,6 @@ test: { readme: "" exec: " " } -test: { - id: "RT-2.2" - description: "IS-IS LSP Updates" - readme: "https://github.com/openconfig/featureprofiles/feature/experimental/isis/otg_tests/lsp_updates_test/README.md" -} -test: { - id: "RT-2.6" - description: "IS-IS Hello-Padding enabled at interface level" - readme: "" - exec: " " -} -test: { - id: "RT-2.7" - description: "IS-IS Passive is enabled at interface level" - readme: "" - exec: " " -} -test: { - id: "RT-2.8" - description: "IS-IS Passive is enabled at the area level" - readme: "" - exec: " " -} -test: { - id: "RT-2.9" - description: "IS-IS metric style wide enabled" - readme: "" - exec: " " -} test: { id: "RT-2.10" description: "IS-IS change LSP lifetime" @@ -649,6 +548,35 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/isis/otg_tests/isis_drain_test/README.md" exec: " " } +test: { + id: "RT-2.2" + description: "IS-IS LSP Updates" + readme: "https://github.com/openconfig/featureprofiles/feature/experimental/isis/otg_tests/lsp_updates_test/README.md" +} +test: { + id: "RT-2.6" + description: "IS-IS Hello-Padding enabled at interface level" + readme: "" + exec: " " +} +test: { + id: "RT-2.7" + description: "IS-IS Passive is enabled at interface level" + readme: "" + exec: " " +} +test: { + id: "RT-2.8" + description: "IS-IS Passive is enabled at the area level" + readme: "" + exec: " " +} +test: { + id: "RT-2.9" + description: "IS-IS metric style wide enabled" + readme: "" + exec: " " +} test: { id: "RT-3.1" description: "Policy based VRF selection base" @@ -679,6 +607,12 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/singleton/ate_tests/singleton_test/README.md" exec: " " } +test: { + id: "RT-5.10" + description: "IPv6 Link Local generated by SLAAC" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/ip/ipv6_slaac_link_local_test/otg_tests/ipv6_slaac_link_local_test/README.md" + exec: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/ip/ipv6_slaac_link_local_test/otg_tests/ipv6_slaac_link_local_test/ipv6_slaac_link_local_test.go" +} test: { id: "RT-5.2" description: "Aggregate Interfaces" @@ -720,12 +654,6 @@ test: { description: "Interface Loopback mode" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/interface/interface_loopback_aggregate/otg_tests/interface_loopback_aggregate/README.md" } -test: { - id: "RT-9" - description: "Interface IPv6 ND RA disable" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/holdtime/otg_tests/holdtime_test/README.md" - exec: " " -} test: { id: "RT-5.7" description: "Aggregate Not Viable All" @@ -744,12 +672,6 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/ip/ipv6_ND/otg_tests/disable_ipv6_nd_ra_test/README.md" exec: " " } -test: { - id: "RT-5.10" - description: "IPv6 Link Local generated by SLAAC" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/ip/ipv6_slaac_link_local_test/otg_tests/ipv6_slaac_link_local_test/README.md" - exec: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/ip/ipv6_slaac_link_local_test/otg_tests/ipv6_slaac_link_local_test/ipv6_slaac_link_local_test.go" -} test: { id: "RT-6.1" description: "Core LLDP TLV Population" @@ -766,6 +688,12 @@ test: { id: "RT-7.1" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/default_policies_test/README.md" } +test: { + id: "RT-7.11" + description: "RT-7.11: BGP Policy - Import/Export Policy Action Using Multiple Criteria" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/import_export_multi_test/README.md" + exec: " " +} test: { id: "RT-7.2" description: "BGP Policy Community Set" @@ -807,18 +735,24 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/comm_match_action_test/README.md" exec: " " } -test: { - id: "RT-7.11" - description: "RT-7.11: BGP Policy - Import/Export Policy Action Using Multiple Criteria" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/bgp/policybase/otg_tests/import_export_multi_test/README.md" - exec: " " -} test: { id: "RT-8" description: "Singleton with breakouts" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/singleton/tests/singleton_with_breakouts/README.md" exec: " " } +test: { + id: "RT-9" + description: "Interface IPv6 ND RA disable" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/holdtime/otg_tests/holdtime_test/README.md" + exec: " " +} +test: { + id: "RT-9" + description: "Weighted-ECMP for IS-IS" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/isis/weighted_ECMP/README.md" + exec: " " +} test: { id: "RT-9.1" description: "Equal distribution of traffic" @@ -831,10 +765,8 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/isis/weighted_ECMP/README.md" } test: { - id: "RT-9" - description: "Weighted-ECMP for IS-IS" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/isis/weighted_ECMP/README.md" - exec: " " + id: "Replay-1.2" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/replay/tests/p4rt_replay/README.md" } test: { id: "SFLOW-1" @@ -858,6 +790,11 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/interface/staticarp/ate_tests/static_arp_test/README.md" exec: " " } +test: { + id: "TE-10" + description: "gRIBI MPLS Forwarding" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/mpls_forwarding/README.md" +} test: { id: "TE-11.2" description: "Backup NHG: Multiple NH" @@ -898,6 +835,11 @@ test: { id: "TE-16.1" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/basic_encap_test/README.md" } +test: { + id: "TE-16.2" + description: "gRIBI encapsulation FRR scenarios" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/encap_frr/README.md" +} test: { id: "TE-17.1" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/experimental/gribi/otg_tests/vrf_policy_driven_te/README.md" @@ -1062,16 +1004,6 @@ test: { description: "MPLS based forwarding Static LSP" readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/mpls_compliance/README.md" } -test: { - id: "TE-10" - description: "gRIBI MPLS Forwarding" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/mpls_forwarding/README.md" -} -test: { - id: "TE-16.2" - description: "gRIBI encapsulation FRR scenarios" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gribi/otg_tests/encap_frr/README.md" -} test: { id: "TR-6.1" description: "system logging remote syslog" @@ -1084,6 +1016,66 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/logging/console_vty_file/tests/README.md" exec: " " } +test: { + id: "TRANSCEIVER-1" + description: "400ZR Chromatic Dispersion(CD) telemetry values streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_cd_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-10" + description: "400ZR Optics FEC(Forward Error Correction) Uncorrectable Frames Streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_fec_uncorrectable_frames_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-11" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_logical_channels_test/README.md" +} +test: { + id: "TRANSCEIVER-12" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_supply_voltage_test/README.md" +} +test: { + id: "TRANSCEIVER-13" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_low_power_mode_test/README.md" +} +test: { + id: "TRANSCEIVER-3" + description: "400ZR Optics firmware version streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_firmware_version_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-4" + description: "400ZR Optics RX Input and TX Output Power streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_input_output_power_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-5" + description: "400ZR channel frequency and output TX launch power setting" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_tunable_parameters_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-6" + description: "400ZR Optics performance metrics (pm) streaming." + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_pm_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-8" + description: "400ZR Optics module temperature streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_temperature_test/README.md" + exec: " " +} +test: { + id: "TRANSCEIVER-9" + description: "400ZR TX laser bias current telemetry values streaming" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_laser_bias_current_test/README.md" + exec: " " +} test: { id: "TUN-1.1" description: "Filter based IPv4 GRE encapsulation" @@ -1168,6 +1160,86 @@ test: { readme: "" exec: " " } +test: { + id: "bootz-1.1" + description: "Missing configuration - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-1.2" + description: "Invalid configuration - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-1.3" + description: "Valid configuration - Device succeded with status ok" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-2.1" + description: "Software version is different - Device is upgraded to the new version" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-2.2" + description: "Invalid software image - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-3" + description: "bootz-3: Validate Ownership Voucher in bootz configuration" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-3.1" + description: "No ownership voucher - Device boots without OV present" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-3.2" + description: "Invalid OV - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-3.3" + description: "OV fails - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-3.4" + description: "OV valid - Device boots with OV installed" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-4" + description: "bootz-4: Validate device properly resets if provided invalid image" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-4.1" + description: "no OS provided - Device boots with existing image" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-4.2" + description: "Invalid OS image provided - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-4.3" + description: "failed to fetch image from remote URL - Device fails with status invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-4.4" + description: "OS checksum doesn't match - Device fails with invalid parameter" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} +test: { + id: "bootz-5" + description: "Validate gNSI components in bootz configuration" + readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/bootz/tests/README.md" +} test: { id: "gNMI-1.1" description: "cli Origin" @@ -1213,7 +1285,6 @@ test: { test: { id: "gNMI-1.14" description: "OpenConfig metadate consistency during large config push" - ## test intended to cover bug reported in b/271476345 readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/gnmi/metadata/tests/large_set_consistency_test/README.md" exec: " " } @@ -1363,75 +1434,3 @@ test: { readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/gnpsi/otg_tests/sampling_test/README.md" exec: " " } -test: { - id: "TRANSCEIVER-1" - description: "400ZR Chromatic Dispersion(CD) telemetry values streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_cd_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-3" - description: "400ZR Optics firmware version streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_firmware_version_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-4" - description: "400ZR Optics RX Input and TX Output Power streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_input_output_power_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-5" - description: "400ZR channel frequency and output TX launch power setting" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_tunable_parameters_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-6" - description: "400ZR Optics performance metrics (pm) streaming." - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_pm_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-8" - description: "400ZR Optics module temperature streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_temperature_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-9" - description: "400ZR TX laser bias current telemetry values streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_laser_bias_current_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-10" - description: "400ZR Optics FEC(Forward Error Correction) Uncorrectable Frames Streaming" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_fec_uncorrectable_frames_test/README.md" - exec: " " -} -test: { - id: "TRANSCEIVER-11" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_logical_channels_test/README.md" -} -test: { - id: "TRANSCEIVER-12" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_supply_voltage_test/README.md" -} -test: { - id: "TRANSCEIVER-13" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/platform/transceiver/zr_low_power_mode_test/README.md" -} -test: { - id: "PLT-1.1" - description: "Interface breakout Test" - readme: "https://github.com/openconfig/featureprofiles/feature/experimental/platform/tests/breakout_configuration/README.md" - exec: " " -} -test: { - id: "MGT-1" - description: "Management HA test" - readme: "https://github.com/openconfig/featureprofiles/blob/main/feature/system/management/README.md" - exec: " " -} diff --git a/tools/sort_testregistry/sort_testregistry.go b/tools/sort_testregistry/sort_testregistry.go new file mode 100644 index 00000000000..fa271a1daa3 --- /dev/null +++ b/tools/sort_testregistry/sort_testregistry.go @@ -0,0 +1,93 @@ +// Binary sort_registry sorts the test registry lexically such that it is easier +// for humans to add to the file and find the next available ID. It can be run +// by running: +// +// go run tools/sort_testregistry/sort_testregistry.go +// +// prior to submitting. +package main + +import ( + "bytes" + "flag" + "os" + "sort" + + log "github.com/golang/glog" + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/proto" + + tpb "github.com/openconfig/featureprofiles/proto/testregistry_go_proto" +) + +var ( + file = flag.String("file", "testregistry.textproto", "input file to read registry from") +) + +func main() { + flag.Parse() + r := &tpb.TestRegistry{} + + f, err := os.ReadFile(*file) + if err != nil { + log.Exitf("cannot read input, err: %v", err) + } + if err := prototext.Unmarshal(f, r); err != nil { + log.Exitf("invalid registry input, err: %v", err) + } + + ids := []string{} + tests := map[string][]*tpb.Test{} + for _, t := range r.GetTest() { + if _, ok := tests[t.GetId()]; !ok { + tests[t.GetId()] = []*tpb.Test{} + ids = append(ids, t.GetId()) + } + + // Deduplicate identical entries. + var skip bool + for _, existing := range tests[t.GetId()] { + if proto.Equal(existing, t) { + log.Infof("skipping duplicate for %s", t.GetId()) + skip = true + } + } + if skip { + continue + } + + tests[t.GetId()] = append(tests[t.GetId()], t) + + } + + n := &tpb.TestRegistry{ + Name: r.GetName(), + Test: []*tpb.Test{}, + } + + sort.Strings(ids) + for _, i := range ids { + for _, tc := range tests[i] { + log.Infof("appending %s to %s", tc.GetId(), i) + n.Test = append(n.Test, tc) + } + } + mo := &prototext.MarshalOptions{ + Multiline: true, + Indent: " ", + } + + s, err := mo.Marshal(n) + if err != nil { + log.Exitf("cannot marshal proceessed proto, err: %v", err) + } + + b := &bytes.Buffer{} + b.WriteString("# proto-file: /proto/testregistry.proto\n") + b.WriteString("# proto-message: TestRegistry\n\n") + b.Write(s) + + if err := os.WriteFile(*file, b.Bytes(), 0644); err != nil { + log.Exitf("cannot write out processed file, err: %v", err) + } +}