ubuntu@cord-rs-s8:~/cord-tester/src/test/setup$ sudo ./cord-test.py run -m manifest-ponsim.json -t voltha:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic
# Host [172.17.0.2]:8101 found: line 3 type RSA
onoscli: eof exception found
onoscli:     logout

Connection to 172.17.0.2 closed.

result.ok, result.status_code are False and 409
ONOS app cord-config, version 2.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app aaa, version 2.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app igmp, version 2.0-SNAPSHOT installed
Controller IP [u'172.17.0.2'], Test type voltha:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic
Installing cord tester ONOS app /home/ubuntu/cord-tester/src/test/apps/ciena-cordigmp-multitable-3.0-SNAPSHOT.oar
result.ok, result.status_code are False and 409
WARNING: The DOCKER_HOST_IP variable is not set. Defaulting to a blank string.
compose_consul_1 is up-to-date
compose_fluentd_1 is up-to-date
compose_zookeeper_1 is up-to-date
compose_registrator_1 is up-to-date
compose_kafka_1 is up-to-date
IP 172.18.0.3 for service consul
IP 172.18.0.5 for service kafka
IP 172.18.0.4 for service zookeeper
IP 172.18.0.6 for service registrator
IP 172.18.0.2 for service fluentd
Chameleon voltha sevice is already running. Skipped start
VOLTHA core is already running. Skipped start
VOLTHA ofagent is already running. Skipped start
PONSIM already running. Skipped start
Radius server running with IP 172.17.0.3
Running ['voltha:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic'] tests across 1 containers in parallel
Modifying scapy tool files before running a test: ['voltha:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic']
Running tests: ['voltha:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic']
WARNING: No route found for IPv6 destination :: (no default route?)
Connecting to controller at 172.17.0.2
onoscli: Trying to connect to 172.17.0.2
# Host [172.17.0.2]:8101 found: line 1 type RSA
Spawning pexpect for ip 172.17.0.2
ssh connection asked for password, gave password
Command 'summary -j' sent to onoscli.
onoscli: eof exception found
onoscli:     logout

Connection to 172.17.0.2 closed.

Installing the multi table app /root/test/src/test/voltha/../apps/ciena-cordigmp-multitable-3.0-SNAPSHOT.oar for subscriber test
Test Method: ... Enabling ponsim olt
Pre-provisioning ponsim_olt with address 172.17.0.1:50060
Enabling device 93b691d51a9b
Checking operational status for device 93b691d51a9b
Installing OLT app
Adding subscribers through OLT app
Adding group 225.0.0.1
All subscribers have joined the channel
Subscriber on port veth0 checking data traffic receiving from group 225.0.0.1, channel 0
Subscriber on port veth0 timed out
Leaving channel 0 for subscriber on port veth0 from specific source address 2.3.4.5 and waited till GMI timer expires
Subscriber on port veth0 checking data traffic receiving from group 225.0.0.1, channel 0
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 2.3.4.5 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x93d0 src=2.3.4.5 dst=225.0.0.1 options=[] |<Raw  load='291376.636122663' |>>>>
Packet received in 291376667927.526 usecs for group 225.0.0.1 after join
Subscriber on port veth0 checking data traffic receiving from group 225.0.0.1, channel 0
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 2.3.4.5 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x93d0 src=2.3.4.5 dst=225.0.0.1 options=[] |<Raw  load='291376.708121714' |>>>>
Packet received in 291376755533.492 usecs for group 225.0.0.1 after join
Again include the channel 0 on port veth0 with souce list ip 2.3.4.5
Subscriber on port veth0 checking data traffic receiving from group 225.0.0.1, channel 0
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 3.4.5.6 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x91ce src=3.4.5.6 dst=225.0.0.1 options=[] |<Raw  load='291381.820124179' |>>>>
Packet received in 291381868686.292 usecs for group 225.0.0.1 after join
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 2.3.4.5 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x93d0 src=2.3.4.5 dst=225.0.0.1 options=[] |<Raw  load='291381.840171074' |>>>>
Packet received in 291381891514.251 usecs for group 225.0.0.1 after join
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 3.4.5.6 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x91ce src=3.4.5.6 dst=225.0.0.1 options=[] |<Raw  load='291381.864159904' |>>>>
Packet received in 291381911265.678 usecs for group 225.0.0.1 after join
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 2.3.4.5 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x93d0 src=2.3.4.5 dst=225.0.0.1 options=[] |<Raw  load='291381.888154967' |>>>>
Packet received in 291381931143.231 usecs for group 225.0.0.1 after join
Packet received for group 225.0.0.1, subscriber, port veth0 and from source ip 3.4.5.6 showing full packet <bound method Ether.show of <Ether  dst=01:00:5e:00:01:01 src=02:88:b4:e4:90:77 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=36 id=1 flags= frag=0L ttl=64 proto=hopopt chksum=0x91ce src=3.4.5.6 dst=225.0.0.1 options=[] |<Raw  load='291381.908157131' |>>>>
Packet received in 291381955066.951 usecs for group 225.0.0.1 after join
This Subscriber is tested for multiple service eligibility
Deleted subscriber for device of:0000000000000001 on port  128
Deleted subscriber for device of:0000000000000001 on port  129
Deleted subscriber for device of:0000000000000001 on port  130
Deleted subscriber for device of:0000000000000001 on port  131
Deleted subscriber for device of:0000000000000001 on port  132
Deleted subscriber for device of:0000000000000001 on port  133
Deleted subscriber for device of:0000000000000001 on port  134
Deleted subscriber for device of:0000000000000001 on port  135
Deleted subscriber for device of:0000000000000001 on port  136
Deleted subscriber for device of:0000000000000001 on port  137
Deleted subscriber for device of:0000000000000001 on port  138
Disabling device 93b691d51a9b
Deleting device 93b691d51a9b
Uninstalling OLT app
ok
Installing back the cord igmp app /root/test/src/test/voltha/../apps/ciena-cordigmp-3.0-SNAPSHOT.oar for subscriber test on exit

----------------------------------------------------------------------
Ran 1 test in 163.767s

OK
Test volthaTest.py:voltha_exchange.test_subscriber_with_voltha_for_igmp_change_to_include_back_from_exclude_mcast_group_verifying_traffic Success
Done running tests
ubuntu@cord-rs-s8:~/cord-tester/src/test/setup$
