Ray Milkey
Committed by Gerrit Code Review

STC scenario for testing posting and removal of configs

Change-Id: I5395d6b42a52ba29063eb9ee139dcfb659247614
#! /usr/bin/env python
import requests
import sys
from requests.auth import HTTPBasicAuth
if len(sys.argv) < 3:
print "usage: find-dhcp-netcfg onos-node name1=value1 ..."
sys.exit(1)
node = sys.argv[1]
cfgRequest = requests.get('http://' + node + ':8181/onos/v1/network/configuration',
auth=HTTPBasicAuth('onos', 'rocks'))
if cfgRequest.status_code != 200:
print cfgRequest.text
sys.exit(1)
cfgJson = cfgRequest.json()
appFound = False
for index in range(2, len(sys.argv)):
pair = sys.argv[index].split("=")
for app in cfgJson["apps"]:
if app == "org.onosproject.dhcp":
dhcp = cfgJson["apps"][app]["dhcp"]
appFound = True
name = pair[0]
value = pair[1]
if dhcp[name] != value:
print name + " differs: expected " + value + " but found " + dhcp[name]
print cfgJson
sys.exit(1)
if appFound:
sys.exit(0)
print "DHCP app not found"
print cfgJson
sys.exit(2)
#! /usr/bin/env python
import requests
from requests.auth import HTTPBasicAuth
import sys
if len(sys.argv) != 3:
print "usage: delete-netcfg onos-node config-name"
sys.exit(1)
node = sys.argv[1]
configName = sys.argv[2]
intentRequest = requests.delete('http://' + node + ':8181/onos/v1/network/configuration/' + configName,
auth=HTTPBasicAuth('onos', 'rocks'))
if intentRequest.status_code != 204:
print intentRequest.text
sys.exit(1)
sys.exit(0)
#! /usr/bin/env python
import requests
from requests.auth import HTTPBasicAuth
import sys
if len(sys.argv) != 3:
print "usage: post-netcfg onos-node json-file-name"
sys.exit(1)
node = sys.argv[1]
configFileName = sys.argv[2]
jsonFile = open(configFileName, 'rb')
configJson = jsonFile.read()
request = requests.post('http://' + node + ':8181/onos/v1/network/configuration',
auth=HTTPBasicAuth('onos', 'rocks'),
data=configJson)
if request.status_code != 200:
print request.text
sys.exit(1)
sys.exit(0)
{
"apps": {
"org.onosproject.dhcp" : {
"dhcp" : {
"ip": "10.1.11.50",
"mac": "ca:fe:ca:fe:ca:fe",
"subnet": "255.255.252.0",
"broadcast": "10.1.11.255",
"router": "10.1.8.1",
"domain": "8.8.8.8",
"ttl": "1",
"lease": "2",
"renew": "3",
"rebind": "4",
"delay": "5",
"timeout": "6",
"startip": "10.1.11.51",
"endip": "10.1.11.100"
}
}
}
}
{
"apps": {
"org.onosproject.dhcp" : {
"dhcp" : {
"ip": "10.1.11.50",
"mac": "ca:fe:ca:fe:ca:fe",
"subnet": "255.255.252.0",
"broadcast": "10.1.11.255",
"router": "10.1.8.1",
"domain": "8.8.8.8",
"ttl": "21",
"lease": "22",
"renew": "23",
"rebind": "24",
"delay": "25",
"timeout": "26",
"startip": "10.1.11.51",
"endip": "10.1.11.100"
}
}
}
}
<!--
~ Copyright 2016-present Open Networking Laboratory
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<scenario name="netcfg"
description="Network configuration REST API test">
<group name="Netcfg">
<!-- Activate the DHCP app -->
<step name="Netcfg.Activate-Dhcp"
exec="onos ${OC1} app activate org.onosproject.dhcp"/>
<!-- Upload the first set of config changes -->
<step name="Netcfg.Post-1" requires="^"
exec="post-netcfg.py ${OC1} ${ONOS_SCENARIOS}/netcfg-test/dhcp-cfg1.json"/>
<group name="Query1" requires="Netcfg.Post-1">
<parallel var="${OC#}" starts="Netcfg.Query-1-${#}">
<!-- Check that the values made it into the config for the DHCP server -->
<step name="Netcfg.QueryDhcp-1-${#}" exec="check-dhcp-netcfg.py ${OC#} ttl=1 lease=2 renew=3 rebind=4 delay=5 timeout=6"/>
</parallel>
</group>
<!-- Upload the second set of config changes -->
<step name="Netcfg.Post-2" requires="Query1"
exec="post-netcfg.py ${OC1} ${ONOS_SCENARIOS}/netcfg-test/dhcp-cfg2.json"/>
<!-- Check that the values made it into the config for the DHCP server -->
<group name="Query2" requires="Netcfg.Post-2">
<parallel var="${OC#}" starts="Netcfg.Query-2-${#}">
<!-- Check that the values made it into the config for the DHCP server -->
<step name="Netcfg.QueryDhcp-2-${#}" exec="check-dhcp-netcfg.py ${OC#} ttl=21 lease=22 renew=23 rebind=24 delay=25 timeout=26"/>
</parallel>
</group>
<!-- Delete the DHCP server config -->
<step name="Netcfg.Delete" requires="Query2"
exec="delete-netcfg.py ${OC1} apps/org.onosproject.dhcp/dhcp"/>
<!-- Check that the config for the DHCP server is no longer there -->
<group name="Query3" requires="Netcfg.Delete">
<parallel var="${OC#}" starts="Netcfg.Query-3-${#}">
<!-- Check that the values were deleted for the config for the DHCP server -->
<step name="Netcfg.QueryDhcp-31-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} ttl=21"/>
<step name="Netcfg.QueryDhcp-32-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} lease=22"/>
<step name="Netcfg.QueryDhcp-33-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} renew=23"/>
<step name="Netcfg.QueryDhcp-34-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} rebind=24"/>
<step name="Netcfg.QueryDhcp-35-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} delay=25"/>
<step name="Netcfg.QueryDhcp-36-${#}" env="!" exec="check-dhcp-netcfg.py ${OC#} timeout=26"/>
</parallel>
</group>
<!-- Deactivate the DHCP app -->
<step name="Netcfg.Deactivate-Dhcp" requires="Query3"
exec="onos ${OC1} app deactivate org.onosproject.dhcp"/>
</group>
</scenario>
......@@ -34,6 +34,9 @@
<import file="${ONOS_SCENARIOS}/drivers-test.xml"/>
<dependency name="Drivers-Test" requires="Setup,Net-Smoke,Archetypes"/>
<import file="${ONOS_SCENARIOS}/netcfg.xml"/>
<dependency name="Netcfg" requires="Setup"/>
<import file="${ONOS_SCENARIOS}/wrapup.xml"/>
<dependency name="Wrapup" requires="~Archetypes,~Setup,~Net-Smoke,~Drivers-Test,~MetaAppReactivated"/>
<dependency name="Wrapup" requires="~Archetypes,~Setup,~Net-Smoke,~Drivers-Test,~MetaAppReactivated,~Netcfg"/>
</scenario>
......