ubuntu@olt-tester:~/cord-tester/src/test/setup$
ubuntu@olt-tester:~/cord-tester/src/test/setup$
ubuntu@olt-tester:~/cord-tester/src/test/setup$ ./voltha-test.py --test-type=dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server --manifest=manifest-olt-voltha-local.json --voltha-host=10.70.47.64 --olt-type=tibit_olt --olt-arg=00:0c:e2:31:05:00 --disable-teardown --disable-cleanup --test-mode
Starting CordTester Web Server
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 718-316-938
Running test case dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server
WARNING: No route found for IPv6 destination :: (no default route?)
Controller IP [u'10.70.47.64'], Test type dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server
Installing ONOS cord apps
# Host [10.70.47.64]:8101 found: line 5
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old
onoscli: eof exception found
onoscli:     logout

Connection to 10.70.47.64 closed.

result.ok, result.status_code are False and 409
ONOS app cord-config, version 3.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app sadis-app, version 3.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app olt-app, version 3.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app aaa, version 3.0-SNAPSHOT installed
result.ok, result.status_code are False and 409
ONOS app igmp, version 3.0-SNAPSHOT installed
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
Radius server running with IP 11.0.0.3
Running ['dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server'] tests across 1 containers in parallel
Modifying scapy tool files before running a test: ['dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server']
Running tests: ['dhcpl2relay:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server']
Connecting to controller at 10.70.47.64
onoscli: Trying to connect to 10.70.47.64
Spawning pexpect for ip 10.70.47.64
ssh connection asked for password, gave password
Command 'summary -j' sent to onoscli.
onoscli: eof exception found
onoscli:     logout

Connection to 10.70.47.64 closed.

Voltha device of:0001000000000001 not in map. Using uplink vlan 333
Installing OLT app /root/test/src/test/utils/../apps/olt-app-3.0-SNAPSHOT.oar
Connecting to controller at 10.70.47.64
onoscli: Trying to connect to 10.70.47.64
# Host [10.70.47.64]:8101 found: line 1 type RSA
Spawning pexpect for ip 10.70.47.64
ssh connection asked for password, gave password
Command 'summary -j' sent to onoscli.
onoscli: eof exception found
onoscli:     logout

Connection to 10.70.47.64 closed.

test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server (dhcpl2relay.dhcpl2relayTest.dhcpl2relay_exchange) ... # Host [10.70.47.64]:8101 found: line 1 type RSA
Existing connect point of dhcp server is [u'of:000022589e4e744e/12', u'of:000022589e4e744e/1', u'of:000022589e4e744e/9', u'of:000022589e4e744e/6', u'of:000022589e4e744e/7']
Added array of connect points of dhcp server is [u'of:000022589e4e744e/12', 'of:000022589e4e744e/1', 'of:000022589e4e744e/5', 'of:000022589e4e744e/9', 'of:000022589e4e744e/19']
org.opencord.dhcpl2relay app is being installed
The network configuration is shown {u'dhcpl2relay': {u'dhcpServerConnectPoints': [u'of:000022589e4e744e/12', u'of:000022589e4e744e/1', u'of:000022589e4e744e/5', u'of:000022589e4e744e/9', u'of:000022589e4e744e/19']}}
The loaded onos network configuration is = [u'of:000022589e4e744e/12', 'of:000022589e4e744e/1', 'of:000022589e4e744e/5', 'of:000022589e4e744e/9', 'of:000022589e4e744e/19']
Got dhcp client IP 192.168.1.11 from server 192.168.1.2 for mac 02:03:04:00:00:01

Test test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server has errors and warnings

2017-10-10 12:42:28,932 | WARN  | of-event-stats-9 | FlowModBuilderVer13              | 194 - org.onosproject.onos-providers-openflow-flow - 1.10.6 | Match type INNER_VLAN_VID not yet implemented.
2017-10-10 12:42:33,931 | WARN  | f-event-stats-27 | FlowModBuilderVer13              | 194 - org.onosproject.onos-providers-openflow-flow - 1.10.6 | Match type INNER_VLAN_VID not yet implemented.
2017-10-10 12:42:34,750 | WARN  |  I/O worker #341 | PacketManager                    | 127 - org.onosproject.onos-core-net - 1.10.6 | Packet processor org.opencord.dhcpl2relay.DhcpL2Relay$DhcpRelayPacketProcessor@5c548042 threw an exception
java.lang.NullPointerException
2017-10-10 12:42:35,864 | WARN  |  I/O worker #341 | PacketManager                    | 127 - org.onosproject.onos-core-net - 1.10.6 | Packet processor org.opencord.dhcpl2relay.DhcpL2Relay$DhcpRelayPacketProcessor@5c548042 threw an exception
java.lang.NullPointerException
Exception:
        at org.opencord.dhcpl2relay.DhcpL2Relay.nasPortId(DhcpL2Relay.java:338)[208:org.opencord.dhcpl2relay:1.2.0.SNAPSHOT]
        at org.opencord.dhcpl2relay.DhcpL2Relay.access$800(DhcpL2Relay.java:92)[208:org.opencord.dhcpl2relay:1.2.0.SNAPSHOT]
        at org.opencord.dhcpl2relay.DhcpL2Relay$DhcpRelayPacketProcessor.processDhcpPacketFromClient(DhcpL2Relay.java:520)[208:org.opencord.dhcpl2relay:1.2.0.SNAPSHOT]
        at org.opencord.dhcpl2relay.DhcpL2Relay$DhcpRelayPacketProcessor.processDhcpPacket(DhcpL2Relay.java:479)[208:org.opencord.dhcpl2relay:1.2.0.SNAPSHOT]
        at org.opencord.dhcpl2relay.DhcpL2Relay$DhcpRelayPacketProcessor.process(DhcpL2Relay.java:413)[208:org.opencord.dhcpl2relay:1.2.0.SNAPSHOT]
        at org.onosproject.net.packet.impl.PacketManager$InternalPacketProviderService.processPacket(PacketManager.java:389)[127:org.onosproject.onos-core-net:1.10.6]
        at org.onosproject.provider.of.packet.impl.OpenFlowPacketProvider$InternalPacketProvider.handlePacket(OpenFlowPacketProvider.java:171)[193:org.onosproject.onos-providers-openflow-packet:1.10.6]
        at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl.processPacket(OpenFlowControllerImpl.java:335)[191:org.onosproject.onos-protocols-openflow-ctl:1.10.6]
        at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl$OpenFlowSwitchAgent.processMessage(OpenFlowControllerImpl.java:746)[191:org.onosproject.onos-protocols-openflow-ctl:1.10.6]
        at org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch.handleMessage(AbstractOpenFlowSwitch.java:267)[189:org.onosproject.onos-protocols-openflow-api:1.10.6]
ok

----------------------------------------------------------------------
Ran 1 test in 32.291s

OK
Test dhcpl2relayTest.py:dhcpl2relay_exchange.test_dhcpl2relay_with_array_of_connect_points_for_dhcp_server Success
Done running tests
127.0.0.1 - - [10/Oct/2017 05:42:36] "POST /test HTTP/1.1" 200 -
ubuntu@olt-tester:~/cord-tester/src/test/setup$

