[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)
 }