Merge pull request #30 from pingping-lin/ONOS-Next
enable login multiple Quaggas && add new test Case1
diff --git a/TestON/drivers/common/cli/quaggaclidriver.py b/TestON/drivers/common/cli/quaggaclidriver.py
index 19717fb..0f84bc0 100644
--- a/TestON/drivers/common/cli/quaggaclidriver.py
+++ b/TestON/drivers/common/cli/quaggaclidriver.py
@@ -39,7 +39,6 @@
return main.FALSE
def loginQuagga(self, ip_address):
-
self.name = self.options['name']
self.handle = super(QuaggaCliDriver, self).connect(
user_name=self.user_name, ip_address=ip_address,
@@ -56,7 +55,7 @@
self.handle.expect("bgpd", timeout=5)
self.handle.sendline("enable")
self.handle.expect("bgpd#", timeout=5)
- main.log.info("I am inside BGP peer Quagga!")
+ main.log.info("I in quagga on host " + str(ip_address))
return self.handle
else:
@@ -120,7 +119,7 @@
else:
ingress.append("of:" + str(peer['attachmentDpid']).replace(":", "") + ":" + str(peer['attachmentPort']) )
- selector = "[IPV4_DST{ip=" + prefix + "}, ETH_TYPE{ethType=800}]"
+ selector = "[ETH_TYPE{ethType=800}, IPV4_DST{ip=" + prefix + "}]"
treatment = "[ETH_DST{mac=" + str(nextHopMac) + "}]"
intent = egress + "/" + str(sorted(ingress)) + "/" + selector + "/" + treatment
@@ -158,7 +157,7 @@
def extract_actual_routeIntents(self, get_intents_result):
intents = []
# TODO: delete the line below when change to Mininet demo script
- get_intents_result=open("../tests/SdnIpTest/intents.json").read()
+ # get_intents_result=open("../tests/SdnIpTest/intents.json").read()
intents_json_obj = json.loads(get_intents_result)
for intent in intents_json_obj:
@@ -177,7 +176,7 @@
def extract_actual_bgpIntents(self, get_intents_result):
intents = []
# TODO: delete the line below when change to Mininet demo script
- get_intents_result=open("../tests/SdnIpTest/intents.json").read()
+ # get_intents_result=open("../tests/SdnIpTest/intents.json").read()
intents_json_obj = json.loads(get_intents_result)
for intent in intents_json_obj:
@@ -274,7 +273,7 @@
except:
main.log.warn("Probably not in config-router mode!")
self.disconnect()
- main.log.report("Adding Routes")
+ main.log.info("Adding Routes")
j=0
k=0
while numRoutes > 255:
@@ -321,7 +320,7 @@
except:
main.log.warn("Probably not in config-router mode!")
self.disconnect()
- main.log.report("Deleting Routes")
+ main.log.info("Deleting Routes")
j=0
k=0
while numRoutes > 255:
diff --git a/TestON/tests/SdnIpTest/SdnIpTest.py b/TestON/tests/SdnIpTest/SdnIpTest.py
index dd73766..543bea2 100755
--- a/TestON/tests/SdnIpTest/SdnIpTest.py
+++ b/TestON/tests/SdnIpTest/SdnIpTest.py
@@ -1,3 +1,4 @@
+from cupshelpers.config import prefix
#Testing the basic functionality of SDN-IP
@@ -24,38 +25,51 @@
SDNIP_JSON_FILE_PATH = "../tests/SdnIpTest/sdnip.json"
# all expected routes for all BGP peers
allRoutes_expected = []
- main.step("Start to generate routes for BGP peer on host1")
- prefixes = main.Quaggacli.generate_prefixes(1, 3)
- main.log.info(prefixes)
+ main.step("Start to generate routes for all BGP peers")
+ #bgpPeerHosts = []
+ #for i in range(3, 5):
+ # bgpPeerHosts.append("host" + str(i))
+ #main.log.info("BGP Peer Hosts are:" + bgpPeerHosts)
- # TODO: delete the static prefix below after integration with Demo Mininet script
- prefixes = []
- prefixes.append("172.16.30.0/24")
- prefixes.append("1.0.0.0/24")
- prefixes.append("2.0.0.0/24")
- prefixes.append("3.0.0.0/24")
+ #for i in range(3, 5):
+ # QuaggaCliHost = "QuaggaCliHost" + str(i)
+ # prefixes = main.QuaggaCliHost.generate_prefixes(3, 10)
+ # main.log.info(prefixes)
+ #allRoutes_expected.append(prefixes)
+ main.log.info("Generate prefixes for host3")
+ prefixes_host3 = main.QuaggaCliHost3.generate_prefixes(3, 10)
+ main.log.info(prefixes_host3)
+ # generate route with next hop
+ for prefix in prefixes_host3:
+ allRoutes_expected.append(prefix + "/" + "192.168.20.1")
+ routeIntents_expected_host3 = main.QuaggaCliHost3.generate_expected_onePeerRouteIntents(prefixes_host3, "192.168.20.1", "00:00:00:00:02:02", SDNIP_JSON_FILE_PATH)
- for prefix in prefixes:
- # generate route with next hop
- allRoutes_expected.append(prefix + "/" + "1.1.1.1")
+ main.log.info("Generate prefixes for host4")
+ prefixes_host4 = main.QuaggaCliHost4.generate_prefixes(4, 10)
+ main.log.info(prefixes_host4)
+ # generate route with next hop
+ for prefix in prefixes_host4:
+ allRoutes_expected.append(prefix + "/" + "192.168.30.1")
+ routeIntents_expected_host4 = main.QuaggaCliHost4.generate_expected_onePeerRouteIntents(prefixes_host4, "192.168.30.1", "00:00:00:00:03:01", SDNIP_JSON_FILE_PATH)
- routeIntents_expected = main.Quaggacli.generate_expected_onePeerRouteIntents(prefixes, "192.168.30.1", "00:00:00:00:03:01", SDNIP_JSON_FILE_PATH)
+ routeIntents_expected = routeIntents_expected_host3 + routeIntents_expected_host4
- # start to insert routes into the bgp peer
- main.step("Start Quagga-cli on host1")
- main.Quaggacli.loginQuagga("1.1.1.1")
+ main.step("Login all BGP peers and add routes into peers")
+ main.log.info("Login Quagga CLI on host3")
+ main.QuaggaCliHost3.loginQuagga("1.168.30.2")
+ main.log.info("Enter configuration model of Quagga CLI on host3")
+ main.QuaggaCliHost3.enter_config(64514)
+ main.log.info("Add routes to Quagga on host3")
+ main.QuaggaCliHost3.add_routes(prefixes_host3, 1)
- main.step("Start to configure Quagga on host1")
- main.Quaggacli.enter_config(64513)
-
- main.step("Start to generate and add routes for BGP peer on host1")
- routes = main.Quaggacli.generate_prefixes(8, 3)
- main.Quaggacli.add_routes(routes, 1)
-
- # add generates routes to allRoutes
- for route in routes:
- allRoutes_expected.append(route + "/" + "1.1.1.1")
+ main.log.info("Login Quagga CLI on host4")
+ main.QuaggaCliHost4.loginQuagga("1.168.30.3")
+ main.log.info("Enter configuration model of Quagga CLI on host4")
+ main.QuaggaCliHost4.enter_config(64516)
+ main.log.info("Add routes to Quagga on host4")
+ main.QuaggaCliHost4.add_routes(prefixes_host4, 1)
+
cell_name = main.params['ENV']['cellName']
ONOS1_ip = main.params['CTRL']['ip1']
@@ -77,42 +91,46 @@
main.log.info(list_result)
#get all routes inside SDN-IP
- get_routes_result = main.ONOScli.routes(json_format=True)
+ get_routes_result = main.ONOScli.routes(json_format=True)
# parse routes from ONOS CLI
- allRoutes_actual = main.Quaggacli.extract_actual_routes(get_routes_result)
+ allRoutes_actual = main.QuaggaCliHost3.extract_actual_routes(get_routes_result)
+ allRoutes_str_expected = str(sorted(allRoutes_expected))
+ allRoutes_str_actual = str(allRoutes_actual).replace('u',"")
main.step("Check routes installed")
main.log.info("Routes expected:")
- main.log.info(sorted(allRoutes_expected))
+ main.log.info(allRoutes_str_expected)
main.log.info("Routes get from ONOS CLI:")
- main.log.info(allRoutes_actual)
- utilities.assert_equals(expect=sorted(allRoutes_expected), actual=allRoutes_actual,
+ main.log.info(allRoutes_str_actual)
+ utilities.assert_equals(expect=allRoutes_str_expected, actual=allRoutes_str_actual,
onpass="***Routes in SDN-IP are correct!***",
onfail="***Routes in SDN-IP are wrong!***")
- time.sleep(2)
+ time.sleep(20)
get_intents_result = main.ONOScli.intents(json_format=True)
main.step("Check MultiPointToSinglePointIntent intents installed")
# route_intents_expected are generated when generating routes
# get rpoute intents from ONOS CLI
- routeIntents_actual = main.Quaggacli.extract_actual_routeIntents(get_intents_result)
+ routeIntents_actual = main.QuaggaCliHost3.extract_actual_routeIntents(get_intents_result)
+ routeIntents_str_expected = str(sorted(routeIntents_expected))
+ routeIntents_str_actual = str(routeIntents_actual).replace('u',"")
main.log.info("MultiPointToSinglePoint intents expected:")
- main.log.info(routeIntents_expected)
+ main.log.info(routeIntents_str_expected)
main.log.info("MultiPointToSinglePoint intents get from ONOS CLI:")
- main.log.info(routeIntents_actual)
- utilities.assert_equals(expect=True, actual=eq(routeIntents_expected, routeIntents_actual),
+ main.log.info(routeIntents_str_actual)
+ utilities.assert_equals(expect=True, actual=eq(routeIntents_str_expected, routeIntents_str_actual),
onpass="***MultiPointToSinglePoint Intents in SDN-IP are correct!***",
onfail="***MultiPointToSinglePoint Intents in SDN-IP are wrong!***")
main.step("Check BGP PointToPointIntent intents installed")
# bgp intents expected
- bgpIntents_expected = main.Quaggacli.generate_expected_bgpIntents(SDNIP_JSON_FILE_PATH)
+ bgpIntents_expected = main.QuaggaCliHost3.generate_expected_bgpIntents(SDNIP_JSON_FILE_PATH)
# get BGP intents from ONOS CLI
- bgpIntents_actual = main.Quaggacli.extract_actual_bgpIntents(get_intents_result)
+ bgpIntents_actual = main.QuaggaCliHost3.extract_actual_bgpIntents(get_intents_result)
bgpIntents_str_expected = str(bgpIntents_expected).replace('u',"")
bgpIntents_str_actual = str(bgpIntents_actual)
diff --git a/TestON/tests/SdnIpTest/SdnIpTest.topo b/TestON/tests/SdnIpTest/SdnIpTest.topo
index 1d23878..a2d9616 100755
--- a/TestON/tests/SdnIpTest/SdnIpTest.topo
+++ b/TestON/tests/SdnIpTest/SdnIpTest.topo
@@ -28,14 +28,30 @@
<COMPONENTS> </COMPONENTS>
</ONOS1>
- <Quaggacli>
+ <QuaggaCliHost3>
<host>127.0.0.1</host>
<user>username</user>
<password>password</password>
<type>QuaggaCliDriver</type>
<connect_order>5</connect_order>
<COMPONENTS> </COMPONENTS>
- </Quaggacli>
+ </QuaggaCliHost3>
+ <QuaggaCliHost4>
+ <host>127.0.0.1</host>
+ <user>username</user>
+ <password>password</password>
+ <type>QuaggaCliDriver</type>
+ <connect_order>5</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </QuaggaCliHost4>
+ <QuaggaCliHost5>
+ <host>127.0.0.1</host>
+ <user>username</user>
+ <password>password</password>
+ <type>QuaggaCliDriver</type>
+ <connect_order>5</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </QuaggaCliHost5>
</COMPONENT>
</TOPOLOGY>