@@ -820,6 +820,146 @@ func TestHandleNXDME(t *testing.T) {
820
820
fields1 := map [string ]interface {}{"value" : "foo" }
821
821
acc .AssertContainsTaggedFields (t , "dme" , fields1 , tags1 )
822
822
}
823
+ func TestHandleNXDMESubtree (t * testing.T ) {
824
+ c := & CiscoTelemetryMDT {
825
+ Transport : "dummy" ,
826
+ Aliases : map [string ]string {"dme" : "sys/dme" },
827
+ }
828
+ acc := & testutil.Accumulator {}
829
+ err := c .Start (acc )
830
+ // error is expected since we are passing in dummy transport
831
+ require .Error (t , err )
832
+
833
+ telemetry := & telemetryBis.Telemetry {
834
+ MsgTimestamp : 1543236572000 ,
835
+ EncodingPath : "sys/dme" ,
836
+ NodeId : & telemetryBis.Telemetry_NodeIdStr {NodeIdStr : "hostname" },
837
+ Subscription : & telemetryBis.Telemetry_SubscriptionIdStr {SubscriptionIdStr : "subscription" },
838
+ DataGpbkv : []* telemetryBis.TelemetryField {
839
+ {
840
+ Fields : []* telemetryBis.TelemetryField {
841
+ {
842
+ Name : "keys" ,
843
+ Fields : []* telemetryBis.TelemetryField {
844
+ {
845
+ Name : "sys/dme" ,
846
+ ValueByType : & telemetryBis.TelemetryField_StringValue {StringValue : "sys/dme" },
847
+ },
848
+ },
849
+ },
850
+ {
851
+ Name : "content" ,
852
+ Fields : []* telemetryBis.TelemetryField {
853
+ {
854
+ Fields : []* telemetryBis.TelemetryField {
855
+ {
856
+ Name : "children" ,
857
+ Fields : []* telemetryBis.TelemetryField {
858
+ {
859
+ Fields : []* telemetryBis.TelemetryField {
860
+ {
861
+ Name : "fooEntity" ,
862
+ Fields : []* telemetryBis.TelemetryField {
863
+ {
864
+ Fields : []* telemetryBis.TelemetryField {
865
+ {
866
+ Name : "attributes" ,
867
+ Fields : []* telemetryBis.TelemetryField {
868
+ {
869
+ Fields : []* telemetryBis.TelemetryField {
870
+ {
871
+ Name : "foo" ,
872
+ ValueByType : & telemetryBis.TelemetryField_StringValue {
873
+ StringValue : "bar1" ,
874
+ },
875
+ },
876
+ {
877
+ Name : "dn" ,
878
+ ValueByType : & telemetryBis.TelemetryField_StringValue {
879
+ StringValue : "eth1/1" ,
880
+ },
881
+ },
882
+ },
883
+ },
884
+ },
885
+ },
886
+ },
887
+ },
888
+ },
889
+ },
890
+ },
891
+ },
892
+ {
893
+ Fields : []* telemetryBis.TelemetryField {
894
+ {
895
+ Name : "fooEntity" ,
896
+ Fields : []* telemetryBis.TelemetryField {
897
+ {
898
+ Fields : []* telemetryBis.TelemetryField {
899
+ {
900
+ Name : "attributes" ,
901
+ Fields : []* telemetryBis.TelemetryField {
902
+ {
903
+ Fields : []* telemetryBis.TelemetryField {
904
+ {
905
+ Name : "foo" ,
906
+ ValueByType : & telemetryBis.TelemetryField_StringValue {
907
+ StringValue : "bar2" ,
908
+ },
909
+ },
910
+ {
911
+ Name : "dn" ,
912
+ ValueByType : & telemetryBis.TelemetryField_StringValue {
913
+ StringValue : "eth1/2" ,
914
+ },
915
+ },
916
+ },
917
+ },
918
+ },
919
+ },
920
+ },
921
+ },
922
+ },
923
+ },
924
+ },
925
+ },
926
+ },
927
+ },
928
+ },
929
+ },
930
+ },
931
+ },
932
+ },
933
+ },
934
+ }}
935
+ data , err := proto .Marshal (telemetry )
936
+ require .NoError (t , err )
937
+
938
+ c .handleTelemetry (data )
939
+ require .Empty (t , acc .Errors )
940
+
941
+ require .Len (t , acc .Metrics , 2 )
942
+
943
+ tags1 := map [string ]string {
944
+ "dn" : "eth1/1" ,
945
+ "path" : "sys/dme" ,
946
+ "source" : "hostname" ,
947
+ "subscription" : "subscription" ,
948
+ "sys/dme" : "sys/dme" ,
949
+ }
950
+ fields1 := map [string ]interface {}{"foo" : "bar1" , "dn" : "eth1/1" }
951
+ acc .AssertContainsTaggedFields (t , "dme" , fields1 , tags1 )
952
+
953
+ tags2 := map [string ]string {
954
+ "dn" : "eth1/2" ,
955
+ "path" : "sys/dme" ,
956
+ "source" : "hostname" ,
957
+ "subscription" : "subscription" ,
958
+ "sys/dme" : "sys/dme" ,
959
+ }
960
+ fields2 := map [string ]interface {}{"foo" : "bar2" , "dn" : "eth1/2" }
961
+ acc .AssertContainsTaggedFields (t , "dme" , fields2 , tags2 )
962
+ }
823
963
824
964
func TestTCPDialoutOverflow (t * testing.T ) {
825
965
c := & CiscoTelemetryMDT {
0 commit comments