[VOL-3832] Reporting correct EntityIDs dirung the MIB Upload process
Change-Id: I8e3e8998abc0d495495c1699aa17fa582241ec32
diff --git a/internal/common/omci/mib_test.go b/internal/common/omci/mib_test.go
index a55eeeb..f569bce 100644
--- a/internal/common/omci/mib_test.go
+++ b/internal/common/omci/mib_test.go
@@ -77,13 +77,14 @@
want mibExpected
}{
{"mibUploadNext-0", createTestMibUploadNextArgs(t, 1, 0),
- mibExpected{messageType: omci.MibUploadNextResponseType, entityID: 0, transactionId: 1, entityClass: me.OnuDataClassID, attributes: map[string]interface{}{"MibDataSync": MDS}}},
+
+ mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 1, entityID: 0, entityClass: me.OnuDataClassID, attributes: map[string]interface{}{"MibDataSync": MDS}}},
{"mibUploadNext-1", createTestMibUploadNextArgs(t, 2, 1),
- mibExpected{messageType: omci.MibUploadNextResponseType, entityID: 0, transactionId: 2, entityClass: me.CircuitPackClassID, attributes: map[string]interface{}{"Type": uint8(47), "NumberOfPorts": uint8(4)}}},
+ mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 2, entityID: 257, entityClass: me.CircuitPackClassID, attributes: map[string]interface{}{"Type": uint8(47), "NumberOfPorts": uint8(4)}}},
{"mibUploadNext-4", createTestMibUploadNextArgs(t, 3, 4),
- mibExpected{messageType: omci.MibUploadNextResponseType, entityID: 0, transactionId: 3, entityClass: me.CircuitPackClassID, attributes: map[string]interface{}{"PowerShedOverride": uint32(0)}}},
+ mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 3, entityID: 257, entityClass: me.CircuitPackClassID, attributes: map[string]interface{}{"PowerShedOverride": uint32(0)}}},
{"mibUploadNext-10", createTestMibUploadNextArgs(t, 4, 10),
- mibExpected{messageType: omci.MibUploadNextResponseType, entityID: 258, transactionId: 4, entityClass: me.CircuitPackClassID, attributes: map[string]interface{}{"SensedType": uint8(47)}}},
+ mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 4, entityID: 258, entityClass: me.PhysicalPathTerminationPointEthernetUniClassID, attributes: map[string]interface{}{"SensedType": uint8(47)}}},
}
for _, tt := range tests {
@@ -111,5 +112,60 @@
}
})
}
+}
+type pqueueExpected struct {
+ entityId uint16
+ relatedPort uint32
+}
+
+func TestGeneratePriorityQueueMe(t *testing.T) {
+
+ tests := []struct {
+ name string
+ sequence uint16
+ want pqueueExpected
+ }{
+ {"generate-pq-downstream-1", 26,
+ pqueueExpected{entityId: 1, relatedPort: 16842752}},
+ {"generate-pq-downstream-2", 30,
+ pqueueExpected{entityId: 2, relatedPort: 16842753}},
+ {"generate-pq-downstream-3", 58,
+ pqueueExpected{entityId: 9, relatedPort: 16842760}},
+ {"generate-pq-upstream-1", 28,
+ pqueueExpected{entityId: 32769, relatedPort: 2147549184}},
+ {"generate-pq-upstream-2", 32,
+ pqueueExpected{entityId: 32770, relatedPort: 2147549185}},
+ {"generate-pq-upstream-3", 60,
+ pqueueExpected{entityId: 32777, relatedPort: 2147614720}},
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ reportedMe, meErr := GeneratePriorityQueueMe(tt.sequence)
+ if meErr.GetError() != nil {
+ t.Fatal(meErr.Error())
+ }
+
+ assert.Equal(t, reportedMe.GetEntityID(), tt.want.entityId)
+
+ relatedPort, _ := reportedMe.GetAttribute("RelatedPort")
+ assert.Equal(t, relatedPort, tt.want.relatedPort)
+ })
+ }
+
+ // test that the related ports are unique
+ allRelatedPorts := make(map[uint32]struct{})
+ for v := 26; v <= 281; v++ {
+ reportedMe, meErr := GeneratePriorityQueueMe(uint16(v))
+ if meErr.GetError() != nil {
+ t.Fatal(meErr.Error())
+ }
+ relatedPort, _ := reportedMe.GetAttribute("RelatedPort")
+ allRelatedPorts[relatedPort.(uint32)] = struct{}{}
+ }
+
+ // we report 128 queues total, but each of them is comprised of 2 messages
+ // that's why the 256 iterations
+ assert.Equal(t, len(allRelatedPorts), 128)
}