5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
NrUeMeasurementsPiecewiseTestCase3 Class Reference

Testing UE measurements in NR with simulation of 3 eNodeB and 1 UE in piecewise configuration and 240 ms report interval. This test is to cover a corner case using event A4, which is not covered by NrUeMeasurementsPiecewiseTestCase1 and NrUeMeasurementsPiecewiseTestCase2. In this case, we test that the UE measurements at gNB are arriving 240 ms apart. Please note, the scenario simulated is engineered to specifically test the corner case in which whenever a new neighbour fulfils the entry condition for event A4, the UE RRC calls VarMeasReportListAdd method to include the new cell id in cellsTriggeredList, and then it schedules the SendMeasurementReport for periodic reporting. However, if the UE has already started the periodic reporting, scheduling the SendMeasurementReport method again causes following buggy behaviors: More...

#include "nr-test-ue-measurements.h"

+ Inheritance diagram for NrUeMeasurementsPiecewiseTestCase3:
+ Collaboration diagram for NrUeMeasurementsPiecewiseTestCase3:

Public Member Functions

 NrUeMeasurementsPiecewiseTestCase3 (std::string name, NrRrcSap::ReportConfigEutra config, std::vector< Time > expectedTime)
 
void RecvMeasurementReportCallback (std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti, NrRrcSap::MeasurementReport report)
 Triggers when eNodeB receives measurement report from UE, then perform verification on it.
 

Detailed Description

Testing UE measurements in NR with simulation of 3 eNodeB and 1 UE in piecewise configuration and 240 ms report interval. This test is to cover a corner case using event A4, which is not covered by NrUeMeasurementsPiecewiseTestCase1 and NrUeMeasurementsPiecewiseTestCase2. In this case, we test that the UE measurements at gNB are arriving 240 ms apart. Please note, the scenario simulated is engineered to specifically test the corner case in which whenever a new neighbour fulfils the entry condition for event A4, the UE RRC calls VarMeasReportListAdd method to include the new cell id in cellsTriggeredList, and then it schedules the SendMeasurementReport for periodic reporting. However, if the UE has already started the periodic reporting, scheduling the SendMeasurementReport method again causes following buggy behaviors:

  1. It generates an intermediate measurement event, which then leads to parallel intermediate measurement reports from a UE to its eNB.
  2. The old EvenId is overwritten by the new EventId stored in VarMeasReportList. This makes us lose control over the old EventId and it is impossible to cancel its events later on.

These buggy behaviors generated an issue reported in https://gitlab.com/nsnam/ns-3-dev/-/issues/224, where a UE try to send measurement reports after the RLF, even though all the measurement events are properly cancelled upon detecting RLF.

The correct behaviour should be that if a UE has already started the periodic reporting, and once a new neighbour fulfils the entry condition, we just need to add its cell id in cellsTriggeredList, without scheduling a new periodic event.

Definition at line 431 of file nr-test-ue-measurements.h.

Constructor & Destructor Documentation

◆ NrUeMeasurementsPiecewiseTestCase3()

NrUeMeasurementsPiecewiseTestCase3::NrUeMeasurementsPiecewiseTestCase3 ( std::string  name,
NrRrcSap::ReportConfigEutra  config,
std::vector< Time >  expectedTime 
)

Constructor

Parameters
namethe reference name
configNrRrcSap::ReportConfigEutra
expectedTimethe expected time

Definition at line 1738 of file nr-test-ue-measurements.cc.

◆ ~NrUeMeasurementsPiecewiseTestCase3()

NrUeMeasurementsPiecewiseTestCase3::~NrUeMeasurementsPiecewiseTestCase3 ( )
override

Definition at line 1753 of file nr-test-ue-measurements.cc.

Member Function Documentation

◆ RecvMeasurementReportCallback()

void NrUeMeasurementsPiecewiseTestCase3::RecvMeasurementReportCallback ( std::string  context,
uint64_t  imsi,
uint16_t  cellId,
uint16_t  rnti,
NrRrcSap::MeasurementReport  report 
)

Triggers when eNodeB receives measurement report from UE, then perform verification on it.

The trigger is set up beforehand by connecting to the NrUeRrc::RecvMeasurementReport trace source.

Verification consists of checking whether the report carries the right value of RSRP or not, and whether it occurs at the expected time or not.

Parameters
contextthe context
imsithe IMSI
cellIdthe cell ID
rntithe RNTI
reportNrRrcSap::MeasurementReport

Definition at line 1864 of file nr-test-ue-measurements.cc.

References ns3::NrRrcSap::MeasResults::haveMeasResultNeighCells, ns3::NrRrcSap::MeasResults::measId, ns3::NrRrcSap::MeasResults::measResultListEutra, ns3::NrRrcSap::MeasResults::measResultPCell, ns3::NrRrcSap::MeasurementReport::measResults, ns3::nr::EutranMeasurementMapping::RsrpRange2Dbm(), ns3::NrRrcSap::MeasResultPCell::rsrpResult, ns3::nr::EutranMeasurementMapping::RsrqRange2Db(), and ns3::NrRrcSap::MeasResultPCell::rsrqResult.

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: