SRBridging test (CASE-6) Paired-leaf pod

Change-Id: I452cb1619e9d433142626c95c95ed0794b4b749a
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tofino b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
similarity index 78%
rename from TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tofino
rename to TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
index 51490de..67b0d48 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tofino
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.params.tucson
@@ -1,8 +1,8 @@
 <PARAMS>
-    <testcases>9,19,29,39,49,59,69,79</testcases>
+    <testcases>6</testcases>
 
     <GRAPH>
-        <nodeCluster>QA-Pod</nodeCluster>
+        <nodeCluster>pairedleaves</nodeCluster>
         <builds>20</builds>
         <jobName>SRBridging-tofino</jobName>
         <branch>master</branch>
@@ -33,35 +33,6 @@
         <namespace>tost</namespace>
     </kubernetes>
 
-    <PERF>
-        <traffic_host>Host1</traffic_host>
-        <pcap_host>ng40vm</pcap_host>
-        <pcap_cmd_arguments>-t e -F pcap -s 100 </pcap_cmd_arguments>
-        <iterations>1</iterations>
-        <topo>
-            <leaf1>
-                <ports>260 268 276 284</ports>
-                <note>eNB</note>
-            </leaf1>
-            <leaf2>
-                <ports>132 140 148 156</ports>
-                <note>upstream</note>
-            </leaf2>
-            <spine1>
-                <ports>132 140 148 156</ports>
-                <note>spine</note>
-            </spine1>
-            <spine2>
-                <ports>132 140 148 156</ports>
-                <note>spine</note>
-            </spine2>
-        </topo>
-    </PERF>
-
-
-
-
-
     <ENV>
         <cellName>productionCell</cellName>
         <cellApps>drivers,fpm,lldpprovider,hostprovider,netcfghostprovider,drivers.bmv2,pipelines.fabric,org.stratumproject.fabric-tna,drivers.barefoot,segmentrouting,t3</cellApps>
@@ -118,8 +89,8 @@
     </SLEEP>
 
     <TOPO>
-        <switchNum>4</switchNum>
-        <linkNum>16</linkNum>
+        <switchNum>2</switchNum>
+        <linkNum>2</linkNum>
     </TOPO>
 
     <ALARM>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
new file mode 100644
index 0000000..7289a0d
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.0x2.tucson
@@ -0,0 +1,186 @@
+<TOPOLOGY>
+    <COMPONENT>
+        <ONOScell>
+            <host>localhost</host>  # ONOS "bench" machine
+            <user>sdn</user>
+            <password>rocks</password>
+            <type>OnosClusterDriver</type>
+            <connect_order>1</connect_order>
+            <home></home>   # defines where onos home is on the build machine. Defaults to "~/onos/" if empty.
+            <COMPONENTS>
+                <kubeConfig>~/.kube/dev-pairedleaves-tucson</kubeConfig>  # If set, will attempt to use this file for setting up port-forwarding
+                <useDocker>True</useDocker>  # Whether to use docker for ONOS nodes
+                <docker_prompt>\$</docker_prompt>
+                <cluster_name></cluster_name>  # Used as a prefix for cluster components. Defaults to 'ONOS'
+                <diff_clihost>True</diff_clihost> # if it has different host other than localhost for CLI. True or empty. OC# will be used if True.
+                <karaf_username>karaf</karaf_username>
+                <karaf_password>karaf</karaf_password>
+                <node_username>sdn</node_username>
+                <node_password>rocks</node_password>
+                <karafPrompt_username>karaf</karafPrompt_username>
+                <karafPrompt_password>karaf</karafPrompt_password>
+                <web_user>karaf</web_user>
+                <web_pass>karaf</web_pass>
+                <rest_port></rest_port>
+                <prompt></prompt>  # TODO: we technically need a few of these, one per component
+                <onos_home></onos_home>  # defines where onos home is on the target cell machine. Defaults to entry in "home" if empty.
+                <nodes> 3 </nodes>  # number of nodes in the cluster
+            </COMPONENTS>
+        </ONOScell>
+
+        <Leaf1>
+            <host>10.128.13.209</host>
+            <user>root</user>
+            <password>onl</password>
+            <type>StratumOSSwitchDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS>
+                <prompt>#</prompt>
+                <shortName>leaf1</shortName>
+                <port1>1</port1>
+                <link1>Host1</link1>
+                <onosConfigPath></onosConfigPath>
+                <onosConfigFile></onosConfigFile>
+            </COMPONENTS>
+        </Leaf1>
+
+        <Leaf2>
+            <host>10.128.13.211</host>
+            <user>root</user>
+            <password>onl</password>
+            <type>StratumOSSwitchDriver</type>
+            <connect_order>2</connect_order>
+            <COMPONENTS>
+                <prompt>#</prompt>
+                <shortName>leaf2</shortName>
+                <port1>2</port1>
+                <link1>Host2</link1>
+                <onosConfigPath></onosConfigPath>
+                <onosConfigFile></onosConfigFile>
+            </COMPONENTS>
+        </Leaf2>
+
+        <Compute1>
+            <host>10.76.28.74</host>
+            <user>jenkins</user>
+            <password></password>
+            <type>HostDriver</type>
+            <connect_order>6</connect_order>
+            <jump_host></jump_host>
+            <COMPONENTS>
+                <mac></mac>
+                <inband>false</inband>
+                <dhcp>True</dhcp>
+                <ip>10.32.11.2</ip>
+                <shortName>h1</shortName>
+                <port1></port1>
+                <link1></link1>
+                <interfaceName>pairbond</interfaceName>
+                <routes>
+                    <route1>
+                        <network>10.32.11.126</network>
+                        <netmask>25</netmask>
+                        <gw>10.32.11.126</gw>
+                        <interface>pairbond</interface>
+                    </route1>
+                </routes>
+                <sudo_required>true</sudo_required>
+            </COMPONENTS>
+        </Compute1>
+
+        <Compute2>
+            <host>10.76.28.72</host>
+            <user>jenkins</user>
+            <password></password>
+            <type>HostDriver</type>
+            <connect_order>7</connect_order>
+            <jump_host></jump_host>
+            <COMPONENTS>
+                <mac></mac>
+                <inband>false</inband>
+                <dhcp>True</dhcp>
+                <ip>10.32.11.3</ip>
+                <shortName>h2</shortName>
+                <port1></port1>
+                <link1></link1>
+                <interfaceName>pairbond</interfaceName>
+                <routes>
+                    <route1>
+                        <network>10.32.11.126</network>
+                        <netmask>25</netmask>
+                        <gw>10.32.11.126</gw>
+                        <interface>pairbond</interface>
+                    </route1>
+                </routes>
+                <sudo_required>true</sudo_required>
+            </COMPONENTS>
+        </Compute2>
+
+        <Compute3>
+            <host>10.76.28.68</host>
+            <user>jenkins</user>
+            <password></password>
+            <type>HostDriver</type>
+            <connect_order>8</connect_order>
+            <jump_host></jump_host>
+            <COMPONENTS>
+                <mac></mac>
+                <inband>false</inband>
+                <dhcp>True</dhcp>
+                <ip>10.32.11.194</ip>
+                <shortName>h3</shortName>
+                <port1></port1>
+                <link1></link1>
+                <interfaceName>eno2</interfaceName>
+                <routes>
+                    <route1>
+                        <network>10.32.11.254</network>
+                        <netmask>26</netmask>
+                        <gw>10.32.11.254</gw>
+                        <interface>26</interface>
+                    </route1>
+                </routes>
+                <sudo_required>true</sudo_required>
+            </COMPONENTS>
+        </Compute3>
+
+        <ManagmentServer>
+            <host>10.76.28.66</host>
+            <user>jenkins</user>
+            <password></password>
+            <type>HostDriver</type>
+            <connect_order>1</connect_order>
+            <COMPONENTS>
+                <mac></mac>
+                <inband>false</inband>
+                <dhcp>True</dhcp>
+                <ip>10.32.11.1</ip>
+                <shortName>mgmt</shortName>
+                <port1></port1>
+                <link1></link1>
+                <interfaceName>pairbond</interfaceName>
+                <routes>
+                    <route1>
+                        <network>10.32.11.126</network>
+                        <netmask>25</netmask>
+                        <gw>10.32.11.126</gw>
+                        <interface>pairbond</interface>
+                    </route1>
+                </routes>
+                <sudo_required>true</sudo_required>
+
+            </COMPONENTS>
+        </ManagmentServer>
+
+        <NetworkBench>
+            <host>10.128.13.253</host>
+            <user>sdn</user>
+            <password>rocks</password>
+            <type>NetworkDriver</type>
+            <connect_order>10</connect_order>
+            <COMPONENTS>
+            </COMPONENTS>
+        </NetworkBench>
+
+    </COMPONENT>
+</TOPOLOGY>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.2x2.physical b/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.2x2.physical
deleted file mode 100644
index e4a823b..0000000
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/SRBridging.topo.2x2.physical
+++ /dev/null
@@ -1,177 +0,0 @@
-<TOPOLOGY>
-    <COMPONENT>
-        <ONOScell>
-            <host>localhost</host>  # ONOS "bench" machine
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>OnosClusterDriver</type>
-            <connect_order>1</connect_order>
-            <home></home>   # defines where onos home is on the build machine. Defaults to "~/onos/" if empty.
-            <COMPONENTS>
-                <kubeConfig>~/.kube/qa-ace-menlo</kubeConfig>  # If set, will attempt to use this file for setting up port-forwarding
-                <useDocker>True</useDocker>  # Whether to use docker for ONOS nodes
-                <docker_prompt>\$</docker_prompt>
-                <cluster_name></cluster_name>  # Used as a prefix for cluster components. Defaults to 'ONOS'
-                <diff_clihost>True</diff_clihost> # if it has different host other than localhost for CLI. True or empty. OC# will be used if True.
-                <karaf_username>karaf</karaf_username>
-                <karaf_password>karaf</karaf_password>
-                <node_username>sdn</node_username>
-                <node_password>rocks</node_password>
-                <karafPrompt_username>karaf</karafPrompt_username>
-                <karafPrompt_password>karaf</karafPrompt_password>
-                <web_user>karaf</web_user>
-                <web_pass>karaf</web_pass>
-                <rest_port></rest_port>
-                <prompt></prompt>  # TODO: we technically need a few of these, one per component
-                <onos_home></onos_home>  # defines where onos home is on the target cell machine. Defaults to entry in "home" if empty.
-                <nodes> 3 </nodes>  # number of nodes in the cluster
-            </COMPONENTS>
-        </ONOScell>
-
-        <Leaf1>
-            <host>10.128.13.209</host>
-            <user>root</user>
-            <password>onl</password>
-            <type>StratumOSSwitchDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-                <prompt>#</prompt>
-                <shortName>leaf1</shortName>
-                <port1>1</port1>
-                <link1>Host1</link1>
-                <onosConfigPath></onosConfigPath>
-                <onosConfigFile></onosConfigFile>
-            </COMPONENTS>
-        </Leaf1>
-
-        <Leaf2>
-            <host>10.128.13.211</host>
-            <user>root</user>
-            <password>onl</password>
-            <type>StratumOSSwitchDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-                <prompt>#</prompt>
-                <shortName>leaf2</shortName>
-                <port1>2</port1>
-                <link1>Host2</link1>
-                <onosConfigPath></onosConfigPath>
-                <onosConfigFile></onosConfigFile>
-            </COMPONENTS>
-        </Leaf2>
-
-        <Spine1>
-            <host>10.128.13.213</host>
-            <user>root</user>
-            <password>onl</password>
-            <type>StratumOSSwitchDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-                <prompt>#</prompt>
-                <shortName>spine1</shortName>
-                <onosConfigPath></onosConfigPath>
-                <onosConfigFile></onosConfigFile>
-            </COMPONENTS>
-        </Spine1>
-
-        <Spine2>
-            <host>10.128.13.215</host>
-            <user>root</user>
-            <password>onl</password>
-            <type>StratumOSSwitchDriver</type>
-            <connect_order>2</connect_order>
-            <COMPONENTS>
-                <prompt>#</prompt>
-                <shortName>spine2</shortName>
-                <onosConfigPath></onosConfigPath>
-                <onosConfigFile></onosConfigFile>
-            </COMPONENTS>
-        </Spine2>
-
-        <Host1>
-            <host>10.128.13.253</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>HostDriver</type>
-            <connect_order>6</connect_order>
-            <COMPONENTS>
-                <mac>3c:fd:fe:a8:ea:30</mac>
-                <inband>false</inband>
-                <ip>192.168.102.3</ip>
-                <shortName>h1</shortName>
-                <port1>0</port1>
-                <link1>Leaf1</link1>
-                <interfaceName>ens6f0</interfaceName>
-                <routes>
-                    <route1>
-                        <network>192.168.101.1</network>
-                        <netmask>24</netmask>
-                        <gw>192.168.103.1</gw>
-                        <interface></interface>
-                    </route1>
-                </routes>
-            </COMPONENTS>
-        </Host1>
-
-        <Host2>
-            <host>10.128.13.253</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>HostDriver</type>
-            <connect_order>7</connect_order>
-            <COMPONENTS>
-                <mac>3c:fd:fe:a8:ea:31</mac>
-                <inband>false</inband>
-                <ip>192.168.103.3</ip>
-                <shortName>h2</shortName>
-                <port1>0</port1>
-                <link1>Leaf1</link1>
-                <interfaceName>ens6f1</interfaceName>
-                <routes>
-                    <route1>
-                        <network>192.168.101.1</network>
-                        <netmask>24</netmask>
-                        <gw>192.168.103.1</gw>
-                        <interface></interface>
-                    </route1>
-                </routes>
-            </COMPONENTS>
-        </Host2>
-
-        <ng40vm>
-            <host>10.92.1.71</host>
-            <user>ng40</user>
-            <password>ng40</password>
-            <type>HostDriver</type>
-            <connect_order>8</connect_order>
-            <COMPONENTS>
-                <mac>52:54:00:71:b5:96</mac>
-                <inband>false</inband>
-                <ip>192.168.102.101</ip>
-                <shortName>ng40</shortName>
-                <port1></port1>
-                <link1></link1>
-                <interfaceName>ens9</interfaceName>
-                <routes>
-                    <route1>
-                        <network>192.168.101.1</network>
-                        <netmask>24</netmask>
-                        <gw>192.168.103.1</gw>
-                        <interface>ens9</interface>
-                    </route1>
-                </routes>
-            </COMPONENTS>
-        </ng40vm>
-
-        <NetworkBench>
-            <host>10.128.13.253</host>
-            <user>sdn</user>
-            <password>rocks</password>
-            <type>NetworkDriver</type>
-            <connect_order>10</connect_order>
-            <COMPONENTS>
-            </COMPONENTS>
-        </NetworkBench>
-
-    </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
index 458a4a7..e2b175f 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/SRBridgingTest.py
@@ -34,7 +34,6 @@
         self.switchNames[ '2x2' ] = [ "leaf1", "leaf2", "spine101", "spine102" ]
         main.switchType = "ovs"
 
-
     def runTest( self, main, test_idx, topology, onosNodes, description, vlan = [] ):
         try:
             skipPackage = False
@@ -90,7 +89,6 @@
                     main.log.info( "Using %s switch" % main.switchType )
 
                 run.startMininet( main, 'trellis_fabric.py', args=mininet_args )
-
             else:
                 # Run the test with physical devices
                 run.connectToPhysicalNetwork( main, hostDiscovery=False )  # We don't want to do host discovery in the pod
@@ -112,6 +110,7 @@
                 leaf_dpid = [ "of:%016d" % ( ls + 1 ) for ls in range( self.topo[ topology ][ 'leaves' ] ) ]
             for dpid in leaf_dpid:
                 run.checkFlowsByDpid( main, dpid, self.topo[ topology ][ 'minFlow-Stratum' if main.useBmv2 else 'minFlow-OvS' ], sleep=5 )
+            run.populateHostsVlan( main, main.Network.hosts.keys()  )
             run.verifyTopology( main, switches, links, onosNodes )
             run.pingAll( main )
         except Exception as e:
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE09.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE09.chart
index f52bad8..f1fe795 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE09.chart
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE09.chart
@@ -1,4 +1,4 @@
 {
   "leaf1": {"expect": "True",
-    "hosts":["h1", "ng40"]}
+    "hosts":["h1", "h2"]}
 }
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE19.chart b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE19.chart
index f1fe795..f52bad8 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE19.chart
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/chart/CASE19.chart
@@ -1,4 +1,4 @@
 {
   "leaf1": {"expect": "True",
-    "hosts":["h1", "h2"]}
+    "hosts":["h1", "ng40"]}
 }
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
new file mode 100644
index 0000000..a10a0ca
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/json/CASE06.json.tucson
@@ -0,0 +1,48 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-1"
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "10.32.11.126/25"
+                    ],
+                    "vlan-untagged":111,
+                    "name": "compute-1-2"
+                }
+            ]
+        },
+        "device:leaf1/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged": 111,
+                "name": "compute-2-1"
+              }
+            ]
+          },
+          "device:leaf2/40": {
+            "interfaces": [
+              {
+                "ips": [
+                  "10.32.11.126/25"
+                ],
+                "vlan-untagged": 111,
+                "name": "compute-2-2"
+              }
+            ]
+          }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE06.cfg b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE06.cfg
new file mode 100644
index 0000000..ced0429
--- /dev/null
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE06.cfg
@@ -0,0 +1,24 @@
+{
+"ports":{
+        "device:leaf1/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "192.168.103.1/24"
+                    ],
+                    "vlan-untagged":102
+                }
+            ]
+        },
+        "device:leaf2/56":{
+            "interfaces":[
+                {
+                    "ips":[
+                        "192.168.103.2/24"
+                    ],
+                    "vlan-untagged":102
+                }
+            ]
+        }
+    }
+}
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE09.cfg b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE09.cfg
index ced0429..4cb68f0 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE09.cfg
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE09.cfg
@@ -6,7 +6,7 @@
                     "ips":[
                         "192.168.103.1/24"
                     ],
-                    "vlan-untagged":102
+                    "vlan-untagged":[102]
                 }
             ]
         },
@@ -16,7 +16,7 @@
                     "ips":[
                         "192.168.103.2/24"
                     ],
-                    "vlan-untagged":102
+                    "vlan-untagged":[102]
                 }
             ]
         }
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE19.cfg b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE19.cfg
index 7fe7a67..d5c73e0 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE19.cfg
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE19.cfg
@@ -6,7 +6,7 @@
                     "ips":[
                         "192.168.103.1/24"
                     ],
-                    "vlan-tagged":102
+                    "vlan-tagged":[102]
                 }
             ]
         },
@@ -16,7 +16,7 @@
                     "ips":[
                         "192.168.103.2/24"
                     ],
-                    "vlan-tagged":103
+                    "vlan-tagged":[103]
                 }
             ]
         }
diff --git a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE29.cfg b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE29.cfg
index c09601a..b09226c 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE29.cfg
+++ b/TestON/tests/USECASE/SegmentRouting/SRBridging/dependencies/netcfg/CASE29.cfg
@@ -6,8 +6,8 @@
                     "ips":[
                         "192.168.103.1/24"
                     ],
-                    "vlan-native":103
-                    "vlan-tagged":102
+                    "vlan-native":[103]
+                    "vlan-tagged":[102]
                 }
             ]
         },
@@ -17,8 +17,8 @@
                     "ips":[
                         "192.168.103.2/24"
                     ],
-                    "vlan-native":103
-                    "vlan-untagged":102
+                    "vlan-native":[103]
+                    "vlan-untagged":[102]
                 }
             ]
         }