%description: Tests group specific state transitions of Non-Querier IGMP hosts
RFC 2236 6.:
________________
| |
| |
--------->| Non-Member |<---------
| | | |
| |________________| |
| leave group | join group | leave group
| (stop timer, |(send report, | (send leave
| send leave if | set flag, | if flag set)
| flag set) | start timer) |
________|________ | ________|________
| |<--------- | |
| |<-------------------| |
| | query received | |
| Delaying Member | (start timer) | Idle Member |
---->| |------------------->| |
| | | report received | |
| | | (stop timer, | |
| | | clear flag) | |
| |_________________|------------------->|_________________|
| query received | timer expired
| (reset timer if | (send report,
| Max Resp Time | set flag)
| < current timer) |
-------------------
This scenario checks the following trajectories:
NON MEMBER --> join group --> DELAYING MEMBER --> timer expired --> IDLE MEMBER --> leave group --> NON MEMBER
NON MEMBER --> join group --> DELAYING MEMBER --> leave group --> NON MEMBER
NON MEMBER --> join group --> DELAYING MEMBER --> timer expired --> IDLE MEMBER --> query received --> DELAYING MEMBER -->
--> report received --> IDLE MEMBER -> query received --> DELAYING MEMBER --> query received --> DELAYING MEMBER
%inifile: omnetpp.ini
[General]
ned-path = .;../../../../src;../../lib
sim-time-limit=400s
cmdenv-express-mode = true
#omnetpp 5.0 - 5.1 compatibility:
eventlog-file = "${resultdir}/${configname}-${runnumber}.elog"
output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
output-vector-file = "${resultdir}/${configname}-${runnumber}.vec"
snapshot-file = "${resultdir}/${configname}-${runnumber}.sna"
network=IGMPTestNetwork
**.igmpType = "TestIGMP"
**.scenarioManager.script = xmldoc("scenario.xml")
**.host.networkLayer.igmp.outputFile = "host-output.txt"
**.router.*.igmp.startupQueryInterval = 500s
%file: scenario.xml
%contains-regex: host-output.txt
t=100 host/eth0/225.0.0.1: NON_MEMBER --> join group --> DELAYING_MEMBER
t=.* host/eth0/225.0.0.1: DELAYING_MEMBER --> timer expired --> IDLE_MEMBER
t=111 host/eth0/225.0.0.1: IDLE_MEMBER --> leave group --> NON_MEMBER
%contains-regex: host-output.txt
t=200 host/eth0/225.0.0.2: NON_MEMBER --> join group --> DELAYING_MEMBER
t=200 host/eth0/225.0.0.2: DELAYING_MEMBER --> leave group --> NON_MEMBER
%contains-regex: host-output.txt
t=300 host/eth0/225.0.0.3: NON_MEMBER --> join group --> DELAYING_MEMBER
t=.* host/eth0/225.0.0.3: DELAYING_MEMBER --> timer expired --> IDLE_MEMBER
t=320\..* host/eth0/225.0.0.3: IDLE_MEMBER --> query received <> --> DELAYING_MEMBER
t=320\..* host/eth0/225.0.0.3: DELAYING_MEMBER --> report received <> --> IDLE_MEMBER
.*
t=350\..* host/eth0/225.0.0.3: IDLE_MEMBER --> query received <> --> DELAYING_MEMBER
t=350\..* host/eth0/225.0.0.3: DELAYING_MEMBER --> query received <> --> DELAYING_MEMBER
%#--------------------------------------------------------------------------------------------------------------
%not-contains: stdout
undisposed object:
%not-contains: stdout
-- check module destructor
%#--------------------------------------------------------------------------------------------------------------