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 ===========");
514 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader> (source,
"SOURCE");
527 TestUtils::LogPacketInfo<RrcConnectionReconfigurationHeader> (destination,
"DESTINATION");
530 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (),destination.GetRrcTransactionIdentifier (),
"RrcTransactionIdentifier");
531 NS_TEST_ASSERT_MSG_EQ (source.GetHaveMeasConfig (),destination.GetHaveMeasConfig (),
"GetHaveMeasConfig");
532 NS_TEST_ASSERT_MSG_EQ (source.GetHaveMobilityControlInfo (),destination.GetHaveMobilityControlInfo (),
"GetHaveMobilityControlInfo");
533 NS_TEST_ASSERT_MSG_EQ (source.GetHaveRadioResourceConfigDedicated (),destination.GetHaveRadioResourceConfigDedicated (),
"GetHaveRadioResourceConfigDedicated");
535 if ( source.GetHaveMobilityControlInfo () )
537 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().targetPhysCellId,destination.GetMobilityControlInfo ().targetPhysCellId,
"GetMobilityControlInfo().targetPhysCellId");
538 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveCarrierFreq,destination.GetMobilityControlInfo ().haveCarrierFreq,
"GetMobilityControlInfo().haveCarrierFreq");
539 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveCarrierBandwidth,destination.GetMobilityControlInfo ().haveCarrierBandwidth,
"GetMobilityControlInfo().haveCarrierBandwidth");
540 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().newUeIdentity,destination.GetMobilityControlInfo ().newUeIdentity,
"GetMobilityControlInfo().newUeIdentity");
541 NS_TEST_ASSERT_MSG_EQ (source.GetMobilityControlInfo ().haveRachConfigDedicated,destination.GetMobilityControlInfo ().haveRachConfigDedicated,
"GetMobilityControlInfo().haveRachConfigDedicated");
543 if (source.GetMobilityControlInfo ().haveCarrierFreq)
546 destination.GetMobilityControlInfo ().carrierFreq.dlCarrierFreq,
547 "GetMobilityControlInfo().carrierFreq.dlCarrierFreq");
549 destination.GetMobilityControlInfo ().carrierFreq.ulCarrierFreq,
550 "GetMobilityControlInfo().carrierFreq.ulCarrierFreq");
553 if (source.GetMobilityControlInfo ().haveCarrierBandwidth)
556 destination.GetMobilityControlInfo ().carrierBandwidth.dlBandwidth,
557 "GetMobilityControlInfo().carrierBandwidth.dlBandwidth");
559 destination.GetMobilityControlInfo ().carrierBandwidth.ulBandwidth,
560 "GetMobilityControlInfo().carrierBandwidth.ulBandwidth");
563 if (source.GetMobilityControlInfo ().haveRachConfigDedicated)
566 destination.GetMobilityControlInfo ().rachConfigDedicated.raPreambleIndex,
567 "GetMobilityControlInfo().rachConfigDedicated.raPreambleIndex");
569 destination.GetMobilityControlInfo ().rachConfigDedicated.raPrachMaskIndex,
570 "GetMobilityControlInfo().rachConfigDedicated.raPrachMaskIndex");
574 if (source.GetHaveRadioResourceConfigDedicated ())
587 virtual void DoRun (
void);
597 packet = Create<Packet> ();
598 NS_LOG_DEBUG (
"============= HandoverPreparationInfoTestCase ===========");
627 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader> (source,
"SOURCE");
640 TestUtils::LogPacketInfo<HandoverPreparationInfoHeader> (destination,
"DESTINATION");
644 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceUeIdentity, destination.GetAsConfig ().sourceUeIdentity,
"sourceUeIdentity");
645 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceMasterInformationBlock.dlBandwidth,destination.GetAsConfig ().sourceMasterInformationBlock.dlBandwidth,
"dlBandwidth");
646 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceMasterInformationBlock.systemFrameNumber, destination.GetAsConfig ().sourceMasterInformationBlock.systemFrameNumber,
"systemFrameNumber");
647 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity,
"plmnIdentity");
648 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication,
"csgIndication");
649 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.cellIdentity,
"cellIdentity");
650 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity, destination.GetAsConfig ().sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity,
"csgIdentity");
651 NS_TEST_ASSERT_MSG_EQ (source.GetAsConfig ().sourceDlCarrierFreq, destination.GetAsConfig ().sourceDlCarrierFreq,
"sourceDlCarrierFreq");
661 virtual void DoRun (
void);
671 packet = Create<Packet> ();
672 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentRequestTestCase ===========");
683 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader> (source,
"SOURCE");
696 TestUtils::LogPacketInfo<RrcConnectionReestablishmentRequestHeader> (destination,
"DESTINATION");
700 NS_TEST_ASSERT_MSG_EQ (source.GetUeIdentity ().physCellId, destination.GetUeIdentity ().physCellId,
"physCellId");
701 NS_TEST_ASSERT_MSG_EQ (source.GetReestablishmentCause (),destination.GetReestablishmentCause (),
"ReestablishmentCause");
711 virtual void DoRun (
void);
721 packet = Create<Packet> ();
722 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentTestCase ===========");
732 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader> (source,
"SOURCE");
745 TestUtils::LogPacketInfo<RrcConnectionReestablishmentHeader> (destination,
"DESTINATION");
748 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (),
"rrcTransactionIdentifier");
759 virtual void DoRun (
void);
769 packet = Create<Packet> ();
770 NS_LOG_DEBUG (
"============= RrcConnectionReestablishmentCompleteTestCase ===========");
779 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader> (source,
"SOURCE");
792 TestUtils::LogPacketInfo<RrcConnectionReestablishmentCompleteHeader> (destination,
"DESTINATION");
795 NS_TEST_ASSERT_MSG_EQ (source.GetRrcTransactionIdentifier (), destination.GetRrcTransactionIdentifier (),
"rrcTransactionIdentifier");
805 virtual void DoRun (
void);
815 packet = Create<Packet> ();
816 NS_LOG_DEBUG (
"============= RrcConnectionRejectTestCase ===========");
825 TestUtils::LogPacketInfo<RrcConnectionRejectHeader> (source,
"SOURCE");
838 TestUtils::LogPacketInfo<RrcConnectionRejectHeader> (destination,
"DESTINATION");
841 NS_TEST_ASSERT_MSG_EQ (source.GetMessage ().waitTime, destination.GetMessage ().waitTime,
"Different waitTime!");
851 virtual void DoRun (
void);
861 packet = Create<Packet> ();
862 NS_LOG_DEBUG (
"============= MeasurementReportTestCase ===========");
887 TestUtils::LogPacketInfo<MeasurementReportHeader> (source,
"SOURCE");
900 TestUtils::LogPacketInfo<MeasurementReportHeader> (destination,
"DESTINATION");
911 if (srcMeas.haveMeasResultNeighCells)
913 std::list<LteRrcSap::MeasResultEutra>::iterator itsrc = srcMeas.measResultListEutra.begin ();
914 std::list<LteRrcSap::MeasResultEutra>::iterator itdst = dstMeas.
measResultListEutra.begin ();
915 for (; itsrc != srcMeas.measResultListEutra.end (); itsrc++, itdst++)
920 if (itsrc->haveCgiInfo)
922 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.plmnIdentity, itdst->cgiInfo.plmnIdentity,
"Different cgiInfo.plmnIdentity!");
923 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.cellIdentity, itdst->cgiInfo.cellIdentity,
"Different cgiInfo.cellIdentity!");
924 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.trackingAreaCode, itdst->cgiInfo.trackingAreaCode,
"Different cgiInfo.trackingAreaCode!");
925 NS_TEST_ASSERT_MSG_EQ (itsrc->cgiInfo.plmnIdentityList.size (), itdst->cgiInfo.plmnIdentityList.size (),
"Different cgiInfo.plmnIdentityList.size()!");
927 if (!itsrc->cgiInfo.plmnIdentityList.empty ())
929 std::list<uint32_t>::iterator itsrc2 = itsrc->cgiInfo.plmnIdentityList.begin ();
930 std::list<uint32_t>::iterator itdst2 = itdst->cgiInfo.plmnIdentityList.begin ();
931 for (; itsrc2 != itsrc->cgiInfo.plmnIdentityList.begin (); itsrc2++, itdst2++)
939 if (itsrc->haveRsrpResult)
945 if (itsrc->haveRsrqResult)