Work in progress

Test Cases

IDFeatureScenario

# of ONOS

instances

TopologyPass Criteria

Implemented/

Status

BRIDGING01L2 Bridging

Connectivity between two untagged hosts

(Ports are configured as vlan-untagged)

10x1All pings succeedImplemented
BRIDGING0210x2All pings succeedImplemented
BRIDGING0312x2All pings succeedImplemented
BRIDGING0412x4All pings succeedImplemented
BRIDGING0530x1All pings succeedImplemented
BRIDGING0630x2All pings succeedImplemented
BRIDGING0732x2All pings succeedImplemented
BRIDGING0832x4All pings succeedImplemented
BRIDGING11~18

Connectivity between two tagged hosts

(Ports are configured as vlan-tagged)



All pings succeedImplemented
BRIDGING21~28

Connectivity between two untagged hosts

(Ports are configured as vlan-native with vlan-tagged)



All pings succeedImplemented
BRIDGING31~38

Connectivity between two untagged hosts

(Ports are configured as vlan-native with vlan-tagged,

and vlan-untagged)



All pings succeed

Implemented
BRIDGING41~48

Connectivity between untagged host and tagged host

(Ports are configured as vlan-untagged and

vlan-tagged with same vlan id, respectively)



All pings succeedImplemented
BRIDGING51~58

Connectivity between two untagged hosts with different vlan id

(Ports are configured as vlan-untagged 10 and 20, respectively)



All pings failImplemented
BRIDGING61~68

Connectivity between two tagged hosts with different vlan id

(Ports are configured as vlan-tagged 10 and 20, respectively)



All pings failImplemented
BRIDGING71~78

Connectivity between untagged and tagged hosts with different vlan id

(Ports are configured as vlan-untagged 10 and

vlan-tagged 20, respectively)



All pings failImplemented
ROUTING001Routing v4/v6

IPv4 pingall between all the hosts in the topology.

(All routing tests also check IP address assignment to hosts and specific number of flows and groups in the switches)

32x5

For all routing tests:

 All pings succeed; Host IP addresses are expected; Flow/group numbers are expected

Implemented
ROUTING002

IPv6 pingall between all the hosts in the topology.

32x5
Implemented
ROUTING003

All IPv4 hosts ping each other and all IPv6 hosts ping each other.

32x5
Implemented
ROUTING004

IPv4 pingall between all the hosts in the topology.

IPv4 ping from internal hosts to external hosts.

32x5
Implemented
ROUTING005

IPv6 pingall between all the hosts in the topology.

IPv6 ping from internal hosts to external hosts.

32x5
Implemented
ROUTING006

All IPv4 hosts ping each other and all IPv6 hosts ping each other.

IPv4 and IPv6 ping from internal hosts to external hosts.

32x5

Implemented

ROUTING007Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command32x5
Implemented
ROUTING008Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command32x5
Implemented
ROUTING009Ping between ipv4 and ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command32x5
Implemented
ROUTING101

Kill and recover links.

Ping between all ipv4 hosts in the topology.

32x5
Implemented
ROUTING102

Kill and recover links.

Ping between all ipv6 hosts in the topology.

32x5
Implemented
ROUTING103

Kill and recover links.

Ping between all ipv4 and ipv6 hosts in the topology.

32x5
Implemented
ROUTING104

Kill and recover links

Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts

32x5
Implemented
ROUTING105

Kill and recover links

Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts

32x5
Implemented
ROUTING106

Kill and recover links

Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts

32x5
Implemented
ROUTING107

Kill and recover links

Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING108

Kill and recover links

Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING109

Kill and recover links

Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING201

Kill and recover spine switches.

Ping between all ipv4 hosts in the topology.

32x5


Implemented
ROUTING202

Kill and recover spine switches.

Ping between all ipv6 hosts in the topology.

32x5


Implemented
ROUTING203

Kill and recover spine switches.

Ping between all ipv4 and ipv6 hosts in the topology.

32x5


Implemented
ROUTING204

Kill and recover spine switches

Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts

32x5


Implemented
ROUTING205

Kill and recover spine switches

Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts

32x5


Implemented
ROUTING206

Kill and recover spine switches

Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts

32x5


Implemented
ROUTING207

Kill and recover spine switches

Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING208

Kill and recover spine switches

Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING209

Kill and recover spine switches

Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING301

Kill and recover ONOS nodes

Ping between all ipv4 hosts in the topology.

32x5
Implemented
ROUTING302

Kill and recover ONOS nodes

Ping between all ipv6 hosts in the topology.

32x5
Implemented
ROUTING303

Kill and recover ONOS nodes

Ping between all ipv4 and ipv6 hosts in the topology.

32x5
Implemented
ROUTING304

Kill and recover ONOS nodes

Ping between all ipv4 hosts in the topology and check connectivity to external ipv4 hosts

32x5
Implemented
ROUTING305

Kill and recover ONOS nodes

Ping between all ipv6 hosts in the topology and check connectivity to external ipv6 hosts

32x5
Implemented
ROUTING306

Kill and recover ONOS nodes

Ping between all ipv4 and ipv6 hosts in the topology and check connectivity to external ipv4 and ipv6 hosts

32x5
Implemented
ROUTING307

Kill and recover ONOS nodes

Ping between ipv4 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING308

Kill and recover ONOS nodes

Ping between ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
ROUTING309

Kill and recover ONOS nodes

Ping between ipv4/ipv6 hosts and an external host that is not configured in external router config, but reachable through the use of route-add command

32x5
Implemented
DHCP relay test

DHCP relay v4/v6

(Work in progress)

Clients gets IP or IPv6 address from DHCP server

The host store and router store should includes specific hosts and routes.

Only one switch in DHCP relay test





DHCPRELAY01

DHCP v4 tests

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp4-1

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented
DHCPRELAY02

DHCP v4 tests

Client: 4 clients attached to switch directly

Server: 1 server attached to switch indirectly (via gateway)

3dhcp4-2

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented

(test is failing)

DHCPRELAY03

DHCP v4 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch directly
3dhcp4-3

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IP address

Implemented

(test is failing)

DHCPRELAY04

DHCP v4 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch indirectly (via gateway)
3dhcp4-4

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IP address

Implemented

(test is failing)

DHCPRELAY05

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host

3dhcp4-5

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IP address

Implemented

(test is failing)

DHCPRELAY06

DHCP v4 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via special DHCP relay)

Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host

"DhcpRelayAgentIp" address should be configured for indirect hosts

3dhcp4-6

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IP address

Implemented

(test is failing)

DHCPRELAY11

DHCP v6 tests

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp6-1 

find 4+1 hosts from host store with correct information

All hosts should get IPv6 address
Implemented
DHCPRELAY12

DHCP v6 tests

Client: 4 clients attached to switch directly

Server: 1 server attached to switch indirectly (via gateway)

3dhcp6-2 

find 4+1 hosts from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY13

DHCP v6 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch directly
3dhcp6-3 

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY14

DHCP v6 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch indirectly (via gateway)
3dhcp6-4 

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY15

DHCP v6 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via normal DHCP relay)

Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host

3dhcp6-5 

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY16

DHCP v6 tests

Client: 2 clients attached to switch directly, 2 clients attached to switch indirectly (via special DHCP relay)

Server: 1 server attached to switch directly for direct connected host another server attached to switch directly for indirect connected host

"DhcpRelayAgentIp" address should be configured for indirect hosts

3dhcp6-6 

find 2+1 hosts from host store with correct information

find 2 routes from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY21

DHCP v4 tests with tagged hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp4-1

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented
DHCPRELAY22

DHCP v4 tests with tagged hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch indirectly (via gateway)

3dhcp4-2

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented
DHCPRELAY31

DHCP v6 tests with tagged hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp6-1

find 4+1 hosts from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

DHCPRELAY41

DHCP v4 tests with dual-homed hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp4-7

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented

DHCPRELAY51

DHCP v6 tests with dual-homed hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp6-7

find 4+1 hosts from host store with correct information

All hosts should get IPv6 address

Implemented

DHCPRELAY61

DHCP v4 tests with dual-homed tagged hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp4-7

find 4+1 hosts from host store with correct information

All hosts should get IP address

Implemented

DHCPRELAY71

DHCP v6 tests with dual-homed tagged hosts

Client: 4 clients attached to switch directly

Server: 1 server attached to switch directly

3dhcp6-7

find 4+1 hosts from host store with correct information

All hosts should get IPv6 address

Implemented

(test is failing)

MCAST1

Multicast v4/v6

(Work in progress)

Start 2x2 topology of hardware switches

32x2All switches are up and discovered by ONOSImplemented
MCAST01

Sink and source on the same dual-tor leaf

32x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST02
Sink and source on different dual-tor leaves32x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST03
Sink and source on different leaves (sink on single-tor)32x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST04
Combines MCAST01 and MCAST0232x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST05
Combines MCAST02 and MCAST0332x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST06
Combines MCAST01 and MCAST0332x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST07
Combines MCAST01, MCAST02 and MCAST0332x5

Flows and groups are installed

Traffic is properly forwarded

Flows and groups are removed

Implemented
MCAST08
Combines MCAST07 with route removal32x5

Flows and groups are removed

Implemented
MCAST101
Combines MCAST07 with a link failure (link ingress-spine)32x5

Flows and groups are installed

Traffic is properly forwarded

Implemented
MCAST102
Combines MCAST07 with a link failure (link spine-egress-dt-leaf)32x5

Flows and groups are installed

Traffic is properly forwarded

Implemented
MCAST103
Combines MCAST07 with a link failure (link spine-egress-st-leaf)32x5

Flows and groups are installed

Traffic is properly forwarded

Implemented
MCAST201
Combines MCAST07 with spine failure32x5

Flows and groups are installed

Traffic is properly forwarded

Implemented
MCAST202
Combines MCAST07 with ingress failure and recovery32x5

Flows and groups are removed (failure)

Flows and groups are installed (recovery)

Traffic is properly forwarded (recovery)

Implemented
MCAST203
Combines MCAST07 with egress-dt-leaf failure and recovery32x5

Flows and groups are removed for the failing sink (failure)

Traffic is properly forwarded on remaining sinks (failure)

Implemented
MCAST204
Combines MCAST07 with egress-st-leaf failure and recovery32x5

Flows and groups are removed for the failing sink (failure)

Traffic is properly forwarded on remaining sinks (failure)

Flows and groups are installed (recovery)

Traffic is properly forwarded (recovery)

Implemented
MCAST205
Combines MCAST07 with egress leaves failure and recovery32x5

Flows and groups are removed for the failing sinks (failure)

Traffic is properly forwarded on remaining sink (failure)

Flows and groups are installed (recovery)

Traffic is properly forwarded (recovery)

Implemented
MCAST301
Combines MCAST07 with ONOS failure and recovery32x5

Flows and groups are installed (failure)

Traffic is properly forwarded (failure)

Flows and groups are installed (recovery)

Traffic is properly forwarded (recovery)

Implemented
DYNAMIC01

Dynamic Interface Configuration

(Work in progress)


P1: untagged 10 --> tagged 10
h1: not configured --> VLAN ID 10
(P2: untagged 10, P3 and P4: tagged 20 and native 10)
(h2-h4: not configured)

30x1

Ping succeeds between:

  • h1, h2, h3, h4
Implemented
DYNAMIC02

P1: untagged 10 --> untagged 20
(P2: untagged 10, P3 and P4: tagged 20 and native 10
(h1-h4: not configured)

32x2

Ping succeeds between:

  • h1, h3, h4


Implemented
DYNAMIC03

P1, P2: untagged 10 --> untagged 110
(P3 and P4: untagged 20)
(h1-h4: not configured)

32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC04

P1: untagged 10 --> tagged 20
h1: not configured --> VLAN ID 20
(P2: untagged 10, P3 and P4: untagged 20)
(h2-h4: not configured)

32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC05P1: untagged 10 --> tagged 20, native 10
(P2: untagged 10, P3 and P4: untagged 20)
(h1-h4: not configured)
32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC06P1 and P2: untagged 10 --> tagged 120, native 110
(P3 and P4: untagged 20)
(h1-h4: not configured)
32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC07

P1: tagged 10 --> untagged 10
h1: VLAN ID 10 --> not configured
(P2: untagged 10, P3 and P4: untagged 20)
(h2-h4: not configured)

32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC08P1: tagged 20 --> tagged 20, native 10
(P2: untagged 10, P3 and P4: untagged 20)
(h1-h4: not configured)
32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC09

P1, P2: tagged 10 --> tagged 120, native 110
h1, h2: VLAN ID 10 --> not configured
(P3 and P4: untagged 20)
(h3 and h4: not configured)

32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC10P1: tagged 10, native 20 --> untagged 20
(P2: tagged 10, native 20, P3 and P4: untagged 20)
(h1-h4: not configured)
32x2

Ping succeeds between:

  • h1, h2, h3, h4
Implemented
DYNAMIC11P1: tagged 20, native 10 --> tagged 20
(P2: tagged 20, native 10, P3 and P4: untagged 20)
(h1-h4: not configured)
32x2

Ping fails between:

  • h1 <--> h2, h3, h4
Implemented
DYNAMIC12

P1, P2: tagged 20, native 10 --> tagged 20, native 110
(P3 and P4: untagged 20)
(h1-h4: not configured)

32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC13

P1: tagged 20, native 10 --> tagged 120, native 10
(P2: tagged 20, native 10, P3 and P4: untagged 20)
(h1-h4: not configured)

32x2

Ping succeeds between:

  • h1, h2
  • h3, h4
Implemented
DYNAMIC14

P1: untagged 10 --> tagged 20
(P2: untagged 10, P3 and P4: untagged 20)
(h1: VLAN ID 20, h2-h4: not configured)

32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC15P1: untagged 10 --> tagged 120
(P2: untagged 10, P3 and P4: untagged 20)
(h1: VLAN ID 20, h2-h4: not configured)
32x2

Ping fails between:

  • h1 <--> h2, h3, h4
Implemented
DYNAMIC16

P1: untagged 10 --> tagged 20, native 10
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)

32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC17P1: tagged 20 --> tagged 120
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping fails between:

  • h1 <--> h2, h3, h4
Implemented
DYNAMIC18P1: tagged 20 --> tagged 20, native 10
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC19P1: tagged 20, native 10 --> untagged 20
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping fails between:

  • h1 <--> h2, h3, h4
Implemented
DYNAMIC20P1: tagged 20, native 10 --> tagged 20
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC21P1: tagged 20, native 10 --> tagged 20, native 110
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping succeeds between:

  • h1, h3, h4
Implemented
DYNAMIC22P1: tagged 20, native 10 --> tagged 120, native 10
(P2: untagged 10, P3 and P4: tagged 20)
(h1, h3, h4: VLAN ID 20, h2: not configured)
32x2

Ping fails between:

  • h1 <--> h2, h3, h4
Implemented
DYNAMIC23

Consecutive configuration changes:
P1: untagged 20 --> Tagged 10 --> Untagged 50 --> Tagged 20 --> Tagged 40 with Native 30 --> Tagged 20 --> Untagged 20 --> Untagged 10
(P2: tagged 10, native 20, P3 and P4: untagged 20)
(h1-h4: not configured)

32x2

Ping succeeds between:

  • h1 <---> h2
Implemented
DYNAMIC24

Changing a subnet
Leaf1-P1: untagged 20 and 10.0.2.254/24 --> untagged 60 and 10.0.6.254/24
h1: 10.0.2.1 --> 10.0.6.1
(Leaf1-P2, P3, P4: 10.0.2.254/24, h2, h3, h4: 10.0.2.0/24)
(Leaf2-P1, P2, P3 P4: 10.0.3.254/24, h5, h6, h7, h8: 10.0.3.0/24)

32x2

Ping succeeds between:

  • h1 <---> h5


Implemented

Host config





Router advertisement v6





Topology

  • 0x1 single ToR
  • 0x2 dual-homed ToR
  • 2x2 leaf-spine
  • 2x4 leaf-spine with dual-homed ToR
  • 2x3 leaf-spine with dual-homed ToR on one leaf 
  • 2x5 topology with spines S0 and S1, and leafs L0, L1, L2, L3, L4. 
    • L1+L2 and L3+L4 are paired switches.
    • All spine links with L1-4 are double links.
    • Hosts take ips with dhcp and there exist 2 external routers.
    • Hosts can use ipv4 or ipv6.
    • We configure untagged/tagged single/dual home hosts in order to test every possible combination.
    • Most of the hosts reside in different ip subnets.

Tests steps

  1. Configure and install ONOS

  2. Start mininet and check flow state

  3. Test connectivity

    1. pingall

    2. (Optional) ping 10.0.99.2 to check external IPv4 connectivity

    3. (Optional) ping6 2000:9902 to check external IPv6 connectivity

  4. Additional actions and tests defined in each individual test case

Common configuration

  • ONOS_APPS: drivers,openflow,segmentrouting,fpm,dhcprelay,netcfghostprovider,routeradvertisement,t3,hostprobingprovider

  • Driver: ofdpa-ovs