IGMP_querier_groupstates.test 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. %description: Tests group specific state transitions of Querier IGMP routers
  2. RFC 2236 7.:
  3. ________________
  4. ----------------------------| |<-----------------------
  5. | | |timer expired |
  6. | timer expired| |(notify routing -, |
  7. | (notify routing -)| No Members |clear rxmt tmr) |
  8. | ------->| Present |<------- |
  9. | | | | | |
  10. |v1 report rec'd | | | | ------------ |
  11. |(notify routing +, | |________________| | | rexmt timer| |
  12. | start timer, | | | | expired | |
  13. | start v1 host | v2 report received| | | (send g-s | |
  14. | timer) | (notify routing +,| | | query, | |
  15. | | start timer)| | | st rxmt | |
  16. | __________|______ | _____|_|______ tmr)| |
  17. | | |<------------ | | | |
  18. | | | | |<----- |
  19. | | | v2 report received | | |
  20. | | | (start timer) | | |
  21. | | Members Present |<-------------------| Checking | |
  22. | ----->| | leave received | Membership | |
  23. | | | | (start timer*, | | |
  24. | | | | start rexmt timer,| | |
  25. | | | | send g-s query) | | |
  26. | | --->| |------------------->| | |
  27. | | | |_________________| |______________| |
  28. | | |v2 report rec'd | | | |
  29. | | |(start timer) | |v1 report rec'd |v1 report rec'd |
  30. | | ---------------- |(start timer, |(start timer, |
  31. | |v1 host | start v1 host timer) | start v1 host |
  32. | |tmr ______________V__ | timer) |
  33. | |exp'd | |<---------------------- |
  34. | ------| | |
  35. | | Version 1 |timer expired |
  36. | | Members Present |(notify routing -) |
  37. ------->| |-------------------------------------------
  38. | |<--------------------
  39. ------->|_________________| v1 report rec'd |
  40. | v2 report rec'd | | (start timer, |
  41. | (start timer) | | start v1 host timer) |
  42. ----------------- --------------------------
  43. This scenario checks the following trajectories:
  44. NO MEMBERS PRESENT --> report received --> MEMBERS PRESENT --> report received -> MEMBERS PRESENT -->
  45. --> leave received -> CHECKING MEMBERSHIP --> report received -> MEMBERS PRESENT -->
  46. --> leave received -> CHECKING MEMBERSHIP --> rexmit timer expired --> CHECKING MEMBERSHIP -->
  47. --> timer expired --> NO MEMBERS PRESENT
  48. NO MEMBERS PRESENT --> report received --> MEMBERS PRESENT --> report received --> MEMBERS PRESENT -->
  49. --> timer expired --> NO MEMBERS PRESENT
  50. %inifile: omnetpp.ini
  51. [General]
  52. ned-path = .;../../../../src;../../lib
  53. sim-time-limit=500s
  54. cmdenv-express-mode = true
  55. #omnetpp 5.0 - 5.1 compatibility:
  56. eventlog-file = "${resultdir}/${configname}-${runnumber}.elog"
  57. output-scalar-file = "${resultdir}/${configname}-${runnumber}.sca"
  58. output-vector-file = "${resultdir}/${configname}-${runnumber}.vec"
  59. snapshot-file = "${resultdir}/${configname}-${runnumber}.sna"
  60. network=IGMPTestNetwork
  61. **.igmpType = "TestIGMP"
  62. **.scenarioManager.script = xmldoc("scenario.xml")
  63. **.router.*.igmp.outputFile = "router-output.txt"
  64. **.igmp.queryResponseInterval = 6s
  65. **.igmp.startupQueryInterval = 1000s
  66. **.igmp.queryInterval = 1000s
  67. **.igmp.groupMembershipInterval = 100s
  68. %file: scenario.xml
  69. <scenario>
  70. <join t="100" module="host2.networkLayer.igmp" ifname="eth0" group="225.0.0.1"/>
  71. <join t="110" module="host.networkLayer.igmp" ifname="eth0" group="225.0.0.1"/>
  72. <leave t="120" module="host.networkLayer.igmp" ifname="eth0" group="225.0.0.1"/>
  73. <leave t="140" module="host2.networkLayer.igmp" ifname="eth0" group="225.0.0.1"/>
  74. <join t="200" module="host.networkLayer.igmp" ifname="eth0" group="225.0.0.2"/>
  75. </scenario>
  76. %contains-regex: router-output.txt
  77. t=0 router/eth0: INITIAL --> configure interface <send query> --> QUERIER
  78. %contains-regex: router-output.txt
  79. t=100\..* router/eth0/225.0.0.1: QUERIER NO_MEMBERS_PRESENT NON_MEMBER --> report received <> --> QUERIER MEMBERS_PRESENT NON_MEMBER
  80. t=10.\..* router/eth0/225.0.0.1: QUERIER MEMBERS_PRESENT NON_MEMBER --> report received <> --> QUERIER MEMBERS_PRESENT NON_MEMBER
  81. .*
  82. t=120\..* router/eth0/225.0.0.1: QUERIER MEMBERS_PRESENT NON_MEMBER --> leave received <send query> --> QUERIER CHECKING_MEMBERSHIP NON_MEMBER
  83. t=12.\..* router/eth0/225.0.0.1: QUERIER CHECKING_MEMBERSHIP NON_MEMBER --> report received <> --> QUERIER MEMBERS_PRESENT NON_MEMBER
  84. t=140\..* router/eth0/225.0.0.1: QUERIER MEMBERS_PRESENT NON_MEMBER --> leave received <send query> --> QUERIER CHECKING_MEMBERSHIP NON_MEMBER
  85. t=141\..* router/eth0/225.0.0.1: CHECKING_MEMBERSHIP --> rexmt timer expired <send query> --> CHECKING_MEMBERSHIP
  86. t=142\..* router/eth0/225.0.0.1: CHECKING_MEMBERSHIP --> timer expired <> --> NO_MEMBERS_PRESENT
  87. %contains-regex: router-output.txt
  88. t=200\..* router/eth0/225.0.0.2: QUERIER NO_MEMBERS_PRESENT NON_MEMBER --> report received <> --> QUERIER MEMBERS_PRESENT NON_MEMBER
  89. t=20.\..* router/eth0/225.0.0.2: QUERIER MEMBERS_PRESENT NON_MEMBER --> report received <> --> QUERIER MEMBERS_PRESENT NON_MEMBER
  90. t=30.\..* router/eth0/225.0.0.2: MEMBERS_PRESENT --> timer expired <> --> NO_MEMBERS_PRESENT
  91. %#--------------------------------------------------------------------------------------------------------------
  92. %not-contains: stdout
  93. undisposed object:
  94. %not-contains: stdout
  95. -- check module destructor
  96. %#--------------------------------------------------------------------------------------------------------------