22 #include "ns3/string.h"
23 #include "ns3/double.h"
25 #include "ns3/boolean.h"
28 #include "ns3/packet.h"
30 #include "ns3/lte-rrc-header.h"
31 #include "ns3/lte-rrc-sap.h"
43 uint32_t psize = pkt->
GetSize ();
44 uint8_t buffer[psize];
45 char sbuffer[psize * 3];
47 for (uint32_t i = 0; i < psize; i++)
49 sprintf (&sbuffer[i * 3],
"%02x ",buffer[i]);
51 return std::string (sbuffer);
57 uint32_t psize = pkt->
GetSize ();
58 uint8_t buffer[psize];
59 std::ostringstream oss (std::ostringstream::out);
61 for (uint32_t i = 0; i < psize; i++)
63 oss << (std::bitset<8> (buffer[i]));
65 return std::string (oss.str () +
"\n");
71 NS_LOG_DEBUG (
"---- SERIALIZED PACKET CONTENTS (HEX): -------");
79 NS_LOG_DEBUG (
"--------- " << s.data () <<
" INFO: -------");
80 std::ostringstream oss (std::ostringstream::out);
95 virtual void DoRun (
void) = 0;
115 srbToAddMod.srbIdentity = 2;
122 srbToAddMod.logicalChannelConfig = logicalChannelConfig;
163 std::list<LteRrcSap::SrbToAddMod> srcSrbToAddModList = rrcd1.
srbToAddModList;
164 std::list<LteRrcSap::SrbToAddMod>::iterator it1 = srcSrbToAddModList.begin ();
165 std::list<LteRrcSap::SrbToAddMod> dstSrbToAddModList = rrcd2.
srbToAddModList;
166 std::list<LteRrcSap::SrbToAddMod>::iterator it2 = dstSrbToAddModList.begin ();
168 for (; it1 != srcSrbToAddModList.end (); it1++, it2++)
171 NS_TEST_ASSERT_MSG_EQ (it1->logicalChannelConfig.priority,it2->logicalChannelConfig.priority,
"logicalChannelConfig.priority");
172 NS_TEST_ASSERT_MSG_EQ (it1->logicalChannelConfig.prioritizedBitRateKbps,it2->logicalChannelConfig.prioritizedBitRateKbps,
"logicalChannelConfig.prioritizedBitRateKbps");
173 NS_TEST_ASSERT_MSG_EQ (it1->logicalChannelConfig.bucketSizeDurationMs,it2->logicalChannelConfig.bucketSizeDurationMs,
"logicalChannelConfig.bucketSizeDurationMs");
174 NS_TEST_ASSERT_MSG_EQ (it1->logicalChannelConfig.logicalChannelGroup,it2->logicalChannelConfig.logicalChannelGroup,
"logicalChannelConfig.logicalChannelGroup");
179 std::list<LteRrcSap::DrbToAddMod> srcDrbToAddModList = rrcd1.
drbToAddModList;
180 std::list<LteRrcSap::DrbToAddMod>::iterator it3 = srcDrbToAddModList.begin ();
181 std::list<LteRrcSap::DrbToAddMod> dstDrbToAddModList = rrcd2.
drbToAddModList;
182 std::list<LteRrcSap::DrbToAddMod>::iterator it4 = dstDrbToAddModList.begin ();
184 for (; it3 != srcDrbToAddModList.end (); it3++, it4++)
189 NS_TEST_ASSERT_MSG_EQ (it3->logicalChannelIdentity,it4->logicalChannelIdentity,
"logicalChannelIdentity");
192 NS_TEST_ASSERT_MSG_EQ (it3->logicalChannelConfig.priority,it4->logicalChannelConfig.priority,
"logicalChannelConfig.priority");
193 NS_TEST_ASSERT_MSG_EQ (it3->logicalChannelConfig.prioritizedBitRateKbps,it4->logicalChannelConfig.prioritizedBitRateKbps,
"logicalChannelConfig.prioritizedBitRateKbps");
194 NS_TEST_ASSERT_MSG_EQ (it3->logicalChannelConfig.bucketSizeDurationMs,it4->logicalChannelConfig.bucketSizeDurationMs,
"logicalChannelConfig.bucketSizeDurationMs");
195 NS_TEST_ASSERT_MSG_EQ (it3->logicalChannelConfig.logicalChannelGroup,it4->logicalChannelConfig.logicalChannelGroup,
"logicalChannelConfig.logicalChannelGroup");
202 std::list<uint8_t>::iterator it5 = srcDrbToReleaseList.begin ();
203 std::list<uint8_t>::iterator it6 = dstDrbToReleaseList.begin ();
205 for (; it5 != srcDrbToReleaseList.end (); it5++, it6++)
216 "haveSoundingRsUlConfigDedicated");
220 "soundingRsUlConfigDedicated.type");
223 "soundingRsUlConfigDedicated.srsBandwidth");
227 "soundingRsUlConfigDedicated.srsConfigIndex");
231 "haveAntennaInfoDedicated");
237 "antennaInfo.transmissionMode");
247 virtual void DoRun (
void);
257 packet = Create<Packet> ();
258 NS_LOG_DEBUG (
"============= RrcConnectionRequestTestCase ===========");
267 TestUtils::LogPacketInfo<RrcConnectionRequestHeader> (source,
"SOURCE");
280 TestUtils::LogPacketInfo<RrcConnectionRequestHeader> (destination,
"DESTINATION");
294 virtual void DoRun (
void);
304 packet = Create<Packet> ();
305 NS_LOG_DEBUG (
"============= RrcConnectionSetupTestCase ===========");
315 TestUtils::LogPacketInfo<RrcConnectionSetupHeader> (source,
"SOURCE");
328 TestUtils::LogPacketInfo<RrcConnectionSetupHeader> (destination,
"DESTINATION");
331 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (),destination.GetRrcTransactionIdentifier (),
"RrcTransactionIdentifier");
343 virtual void DoRun (
void);
353 packet = Create<Packet> ();
354 NS_LOG_DEBUG (
"============= RrcConnectionSetupCompleteTestCase ===========");
363 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader> (source,
"SOURCE");
376 TestUtils::LogPacketInfo<RrcConnectionSetupCompleteHeader> (destination,
"DESTINATION");
379 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (),destination.GetRrcTransactionIdentifier (),
"RrcTransactionIdentifier");
389 virtual void DoRun (
void);
400 packet = Create<Packet> ();
401 NS_LOG_DEBUG (
"============= RrcConnectionReconfigurationCompleteTestCase ===========");
410 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader> (source,
"SOURCE");
423 TestUtils::LogPacketInfo<RrcConnectionReconfigurationCompleteHeader> (destination,
"DESTINATION");
426 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (),destination.GetRrcTransactionIdentifier (),
"RrcTransactionIdentifier");
436 virtual void DoRun (
void);
447 packet = Create<Packet> ();
448 NS_LOG_DEBUG (
"============= RrcConnectionReconfigurationTestCase ===========");
534 measIdToAddMod.
measId = 7;
537 measIdToAddMod2.
measId = 4;
567 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader> (source,
"SOURCE");
580 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader> (destination,
"DESTINATION");
583 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (),destination.GetRrcTransactionIdentifier (),
"RrcTransactionIdentifier");
584 NS_TEST_ASSERT_MSG_EQ (source.GetHaveMeasConfig (),destination.GetHaveMeasConfig (),
"GetHaveMeasConfig");
585 NS_TEST_ASSERT_MSG_EQ (source.GetHaveMobilityControlInfo (),destination.GetHaveMobilityControlInfo (),
"GetHaveMobilityControlInfo");
586 NS_TEST_ASSERT_MSG_EQ (source.GetHaveRadioResourceConfigDedicated (),destination.GetHaveRadioResourceConfigDedicated (),
"GetHaveRadioResourceConfigDedicated");
588 if ( source.GetHaveMobilityControlInfo () )
590 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().targetPhysCellId,destination.GetMobilityControlInfo ().targetPhysCellId,
"GetMobilityControlInfo().targetPhysCellId");
591 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveCarrierFreq,destination.GetMobilityControlInfo ().haveCarrierFreq,
"GetMobilityControlInfo().haveCarrierFreq");
592 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveCarrierBandwidth,destination.GetMobilityControlInfo ().haveCarrierBandwidth,
"GetMobilityControlInfo().haveCarrierBandwidth");
593 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().newUeIdentity,destination.GetMobilityControlInfo ().newUeIdentity,
"GetMobilityControlInfo().newUeIdentity");
594 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveRachConfigDedicated,destination.GetMobilityControlInfo ().haveRachConfigDedicated,
"GetMobilityControlInfo().haveRachConfigDedicated");
596 if (source.GetMobilityControlInfo ().haveCarrierFreq)
599 destination.GetMobilityControlInfo ().carrierFreq.dlCarrierFreq,
600 "GetMobilityControlInfo().carrierFreq.dlCarrierFreq");
602 destination.GetMobilityControlInfo ().carrierFreq.ulCarrierFreq,
603 "GetMobilityControlInfo().carrierFreq.ulCarrierFreq");
606 if (source.GetMobilityControlInfo ().haveCarrierBandwidth)
609 destination.GetMobilityControlInfo ().carrierBandwidth.dlBandwidth,
610 "GetMobilityControlInfo().carrierBandwidth.dlBandwidth");
612 destination.GetMobilityControlInfo ().carrierBandwidth.ulBandwidth,
613 "GetMobilityControlInfo().carrierBandwidth.ulBandwidth");
616 if (source.GetMobilityControlInfo ().haveRachConfigDedicated)
619 destination.GetMobilityControlInfo ().rachConfigDedicated.raPreambleIndex,
620 "GetMobilityControlInfo().rachConfigDedicated.raPreambleIndex");
622 destination.GetMobilityControlInfo ().rachConfigDedicated.raPrachMaskIndex,
623 "GetMobilityControlInfo().rachConfigDedicated.raPrachMaskIndex");
627 if (source.GetHaveRadioResourceConfigDedicated ())
640 virtual void DoRun (
void);
650 packet = Create<Packet> ();
651 NS_LOG_DEBUG (
"============= HandoverPreparationInfoTestCase ===========");
680 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader> (source,
"SOURCE");
693 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader> (destination,
"DESTINATION");
697 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceUeIdentity, destination.GetAsConfig ().sourceUeIdentity,
"sourceUeIdentity");
698 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceMasterInformationBlock.dlBandwidth,destination.GetAsConfig ().sourceMasterInformationBlock.dlBandwidth,
"dlBandwidth");
699 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceMasterInformationBlock.systemFrameNumber, destination.GetAsConfig ().sourceMasterInformationBlock.systemFrameNumber,
"systemFrameNumber");
700 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity,
"plmnIdentity");
701 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication,
"csgIndication");
702 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity,
"cellIdentity");
703 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity,
"csgIdentity");
704 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceDlCarrierFreq, destination.GetAsConfig ().sourceDlCarrierFreq,
"sourceDlCarrierFreq");
714 virtual void DoRun (
void);
724 packet = Create<Packet> ();
725 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentRequestTestCase ===========");
736 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader> (source,
"SOURCE");
749 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader> (destination,
"DESTINATION");
753 NS_TEST_ASSERT_MSG_EQ (source.GetUeIdentity ().physCellId, destination.GetUeIdentity ().physCellId,
"physCellId");
754 NS_TEST_ASSERT_MSG_EQ (source.GetReestablishmentCause (),destination.GetReestablishmentCause (),
"ReestablishmentCause");
764 virtual void DoRun (
void);
774 packet = Create<Packet> ();
775 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentTestCase ===========");
785 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader> (source,
"SOURCE");
798 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader> (destination,
"DESTINATION");
801 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (),
"rrcTransactionIdentifier");
812 virtual void DoRun (
void);
822 packet = Create<Packet> ();
823 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentCompleteTestCase ===========");
832 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader> (source,
"SOURCE");
845 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader> (destination,
"DESTINATION");
848 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (),
"rrcTransactionIdentifier");
858 virtual void DoRun (
void);
868 packet = Create<Packet> ();
869 NS_LOG_DEBUG (
"============= RrcConnectionRejectTestCase ===========");
878 TestUtils::LogPacketInfo<RrcConnectionRejectHeader> (source,
"SOURCE");
891 TestUtils::LogPacketInfo<RrcConnectionRejectHeader> (destination,
"DESTINATION");
894 NS_TEST_ASSERT_MSG_EQ (source.GetMessage ().waitTime, destination.GetMessage ().waitTime,
"Different waitTime!");
904 virtual void DoRun (
void);
914 packet = Create<Packet> ();
915 NS_LOG_DEBUG (
"============= MeasurementReportTestCase ===========");
940 TestUtils::LogPacketInfo<MeasurementReportHeader> (source,
"SOURCE");
953 TestUtils::LogPacketInfo<MeasurementReportHeader> (destination,
"DESTINATION");
964 if (srcMeas.haveMeasResultNeighCells)
966 std::list<LteRrcSap::MeasResultEutra>::iterator itsrc = srcMeas.measResultListEutra.begin ();
967 std::list<LteRrcSap::MeasResultEutra>::iterator itdst = dstMeas.
measResultListEutra.begin ();
968 for (; itsrc != srcMeas.measResultListEutra.end (); itsrc++, itdst++)
973 if (itsrc->haveCgiInfo)
975 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.plmnIdentity, itdst->cgiInfo.plmnIdentity,
"Different cgiInfo.plmnIdentity!");
976 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.cellIdentity, itdst->cgiInfo.cellIdentity,
"Different cgiInfo.cellIdentity!");
977 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.trackingAreaCode, itdst->cgiInfo.trackingAreaCode,
"Different cgiInfo.trackingAreaCode!");
978 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.plmnIdentityList.size (), itdst->cgiInfo.plmnIdentityList.size (),
"Different cgiInfo.plmnIdentityList.size()!");
980 if (!itsrc->cgiInfo.plmnIdentityList.empty ())
982 std::list<uint32_t>::iterator itsrc2 = itsrc->cgiInfo.plmnIdentityList.begin ();
983 std::list<uint32_t>::iterator itdst2 = itdst->cgiInfo.plmnIdentityList.begin ();
984 for (; itsrc2 != itsrc->cgiInfo.plmnIdentityList.begin (); itsrc2++, itdst2++)
992 if (itsrc->haveRsrpResult)
998 if (itsrc->haveRsrqResult)
1017 :
TestSuite (
"test-asn1-encoding", UNIT)