%description: Tests group specific state transitions of Non-Querier IGMP routers
RFC 2236 7.:
________________
| |
| |
timer expired| |timer expired
(notify routing -)| No Members |(notify routing -)
--------->| Present |<---------
| | | |
| | | |
| | | |
| |________________| |
| | |
| |report received |
| |(notify routing +,|
| | start timer) |
________|________ | ________|________
| |<--------- | |
| | report received | |
| | (start timer) | |
| Members Present |<-------------------| Checking |
| | g-s query rec'd | Membership |
| | (start timer*) | |
---->| |------------------->| |
| |_________________| |_________________|
| report received |
| (start timer) |
-----------------
This scenario checks the following trajectories:
NO MEMBERS PRESENT --> report received --> MEMBERS PRESENT --> report received -> MEMBERS PRESENT -->
--> g-s query received -> CHECKING MEMBERSHIP --> report received -> MEMBERS PRESENT -->
--> g-s query received -> CHECKING MEMBERSHIP --> g-s query received --> CHECKING MEMBERSHIP -->
--> timer expired --> NO MEMBERS PRESENT
NO MEMBERS PRESENT --> report received --> MEMBERS PRESENT --> report received --> MEMBERS PRESENT -->
--> timer expired --> NO MEMBERS PRESENT
%inifile: omnetpp.ini
[General]
ned-path = .;../../../../src;../../lib
sim-time-limit=500s
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")
**.nqrouter.networkLayer.igmp.outputFile = "nqrouter-output.txt"
**.igmp.queryResponseInterval = 6s
**.igmp.startupQueryInterval = 1000s
**.igmp.queryInterval = 1000s
**.igmp.groupMembershipInterval = 200s
%file: scenario.xml
%contains-regex: nqrouter-output.txt
t=0\..* nqrouter/eth0/: QUERIER --> query received <> --> NON_QUERIER
%contains-regex: nqrouter-output.txt
t=100\..* nqrouter/eth0/225.0.0.1: NON_QUERIER NO_MEMBERS_PRESENT NON_MEMBER --> report received <> --> NON_QUERIER MEMBERS_PRESENT NON_MEMBER
t=10.\..* nqrouter/eth0/225.0.0.1: NON_QUERIER MEMBERS_PRESENT NON_MEMBER --> report received <> --> NON_QUERIER MEMBERS_PRESENT NON_MEMBER
t=120\..* nqrouter/eth0/225.0.0.1: NON_QUERIER MEMBERS_PRESENT NON_MEMBER --> query received <> --> NON_QUERIER CHECKING_MEMBERSHIP NON_MEMBER
t=.* nqrouter/eth0/225.0.0.1: NON_QUERIER CHECKING_MEMBERSHIP NON_MEMBER --> report received <> --> NON_QUERIER MEMBERS_PRESENT NON_MEMBER
.*
t=130\..* nqrouter/eth0/225.0.0.1: NON_QUERIER MEMBERS_PRESENT NON_MEMBER --> query received <> --> NON_QUERIER CHECKING_MEMBERSHIP NON_MEMBER
t=131\..* nqrouter/eth0/225.0.0.1: NON_QUERIER CHECKING_MEMBERSHIP NON_MEMBER --> query received <> --> NON_QUERIER CHECKING_MEMBERSHIP NON_MEMBER
t=132\..* nqrouter/eth0/225.0.0.1: CHECKING_MEMBERSHIP --> timer expired <> --> NO_MEMBERS_PRESENT
%contains-regex: nqrouter-output.txt
t=200\..* nqrouter/eth0/225.0.0.2: NON_QUERIER NO_MEMBERS_PRESENT NON_MEMBER --> report received <> --> NON_QUERIER MEMBERS_PRESENT NON_MEMBER
t=20.\..* nqrouter/eth0/225.0.0.2: NON_QUERIER MEMBERS_PRESENT NON_MEMBER --> report received <> --> NON_QUERIER MEMBERS_PRESENT NON_MEMBER
t=40.\..* nqrouter/eth0/225.0.0.2: MEMBERS_PRESENT --> timer expired <> --> NO_MEMBERS_PRESENT
%#--------------------------------------------------------------------------------------------------------------
%not-contains: stdout
undisposed object:
%not-contains: stdout
-- check module destructor
%#--------------------------------------------------------------------------------------------------------------