Vnet STC (setup tenant and vnet* and subsequent teardown)
Change-Id: I65287aa840dfb910b9919c30449e69d195d2306d
diff --git a/tools/test/bin/onos-check-vnet b/tools/test/bin/onos-check-vnet
new file mode 100755
index 0000000..a2ad1c9
--- /dev/null
+++ b/tools/test/bin/onos-check-vnet
@@ -0,0 +1,53 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Checks vnet related entities (tenantId, networkId).
+# -----------------------------------------------------------------------------
+
+[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
+. $ONOS_ROOT/tools/build/envDefaults
+
+aux=/tmp/stc-$$.log
+trap "rm -f $aux 2>/dev/null" EXIT
+target=${1:-$OCI}
+command_name=`basename $0`
+
+# Prints usage help
+function usage {
+ echo "usage: $command_name <node-ip> checkTenant <tenantId>" >&2
+ echo " $command_name <node-ip> getNetworkId <tenantId>" >&2
+}
+
+# Extracts networkId
+function extractAndPublishNetworkId() {
+ for token in $aString
+ do
+ if [[ $token =~ "networkId=" ]]
+ then
+ echo "@stc $token"
+ exit 0
+ fi
+ done
+ return 1
+}
+
+echo $command_name: $*
+[ $# -lt 3 ] || [ "$1" = "-h" ] && usage && exit 0
+
+case "$2" in
+ "checkTenant")
+ onos $target "vnet-tenants" | tee $aux
+ grep -w $3 $aux && exit 0
+ ;;
+ "getNetworkId")
+ onos $target "vnets" | tee $aux
+ aString=`grep "tenantId=$3," $aux | tail -1` #get last row
+ extractAndPublishNetworkId && exit 0
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+cat $aux
+exit 1
+
diff --git a/tools/test/scenarios/net-setup-vnets.xml b/tools/test/scenarios/net-setup-vnets.xml
new file mode 100644
index 0000000..66e5697
--- /dev/null
+++ b/tools/test/scenarios/net-setup-vnets.xml
@@ -0,0 +1,64 @@
+<!--
+ ~ 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="net-setup-vnets" description="Network (vnets) setup steps">
+ <group name="Net-Setup-Vnets">
+
+ <step name="Disable-FwdApp" if="echo $ONOS_APPS | grep -w fwd"
+ exec="onos ${OCI} onos:app deactivate org.onosproject.fwd"/>
+
+ <step name="Get-TenantId" requires="^" unless="${tenantId}"
+ exec="echo @stc tenantId=TestTenant"/>
+
+ <step name="Create-Tenant" requires="^"
+ exec="onos ${OCI} vnet-add-tenant ${tenantId}"/>
+
+ <step name="Query-Tenant" requires="^"
+ exec="onos-check-vnet ${OCI} checkTenant ${tenantId}"/>
+
+ <step name="Create-Vnet" requires="^"
+ exec="onos ${OCI} vnet-create ${tenantId}"/>
+
+ <step name="Query-Vnet" requires="^"
+ exec="onos-check-vnet ${OCI} getNetworkId ${tenantId}"/>
+
+ <step name="Create-Device-1" requires="^"
+ exec="onos ${OCI} vnet-create-device ${networkId} device1"/>
+
+ <step name="Create-Device-2" requires="^"
+ exec="onos ${OCI} vnet-create-device ${networkId} device2"/>
+
+ <step name="Create-Port-1" requires="^"
+ exec="onos ${OCI} vnet-create-port ${networkId} device1 1 of:0000000000000004 1"/>
+
+ <step name="Create-Port-2" requires="^"
+ exec="onos ${OCI} vnet-create-port ${networkId} device2 2 of:0000000000000009 1"/>
+
+ <step name="Create-Link-1" requires="^"
+ exec="onos ${OCI} vnet-create-link ${networkId} device1 1 device2 2"/>
+
+ <step name="Create-Link-2" requires="^"
+ exec="onos ${OCI} vnet-create-link ${networkId} device2 2 device1 1"/>
+
+ <step name="Check-intents-installed" requires="^" env="~"
+ exec="onos-check-intent ${OCI} networkId=${networkId} INSTALLED"/>
+ <!-- TODO: ignore return code once intent is working -->
+
+ <step name="Ping-hosts-1" requires="^" env="~"
+ exec="onos-mininet sendAndExpect h4 ping -c1 h9 --expect \ 0% packet loss"/>
+ <!-- TODO: ignore return code once intent is working -->
+
+ </group>
+</scenario>
diff --git a/tools/test/scenarios/net-teardown-vnets.xml b/tools/test/scenarios/net-teardown-vnets.xml
new file mode 100644
index 0000000..c030e73
--- /dev/null
+++ b/tools/test/scenarios/net-teardown-vnets.xml
@@ -0,0 +1,59 @@
+<!--
+ ~ 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="net-teardown-vnets" description="Network (vnets) teardown steps">
+ <group name="Net-Teardown-Vnets">
+
+ <step name="Check-NetworkId-Variable-Exists"
+ exec="test '${networkId}' != ''"/>
+
+ <step name="Check-Vnet-Link" requires="^"
+ exec="onos ${OCI} vnet-links ${networkId}"/>
+
+ <step name="Remove-Link-1" requires="^"
+ exec="onos ${OCI} vnet-remove-link ${networkId} device1 1 device2 2"/>
+
+ <step name="Remove-Link-2" requires="^"
+ exec="onos ${OCI} vnet-remove-link ${networkId} device2 2 device1 1"/>
+
+ <step name="Ping-hosts-2" requires="^"
+ exec="onos-mininet sendAndExpect h4 ping -c1 h9 --expect \ 100% packet loss"/>
+
+ <step name="Remove-Port-2" requires="^"
+ exec="onos ${OCI} vnet-remove-port ${networkId} device2 2"/>
+
+ <step name="Remove-Port-1" requires="^"
+ exec="onos ${OCI} vnet-remove-port ${networkId} device1 1"/>
+
+ <step name="Remove-Device-2" requires="^"
+ exec="onos ${OCI} vnet-remove-device ${networkId} device2"/>
+
+ <step name="Remove-Device-1" requires="^"
+ exec="onos ${OCI} vnet-remove-device ${networkId} device1"/>
+
+ <step name="Remove-Vnet" requires="^"
+ exec="onos ${OCI} vnet-remove ${networkId}"/>
+
+ <step name="Check-TenantId-Variable-Exists" requires="^"
+ exec="test '${tenantId}' != ''"/>
+
+ <step name="Remove-Tenant" requires="Check-TenantId-Variable-Exists"
+ exec="onos ${OCI} vnet-remove-tenant ${tenantId}"/>
+
+ <step name="Enable-FwdApp" requires="^" if="echo $ONOS_APPS | grep -w fwd"
+ exec="onos ${OCI} onos:app activate org.onosproject.fwd"/>
+
+ </group>
+</scenario>
diff --git a/tools/test/scenarios/vnets.xml b/tools/test/scenarios/vnets.xml
new file mode 100644
index 0000000..d879f73
--- /dev/null
+++ b/tools/test/scenarios/vnets.xml
@@ -0,0 +1,30 @@
+<!--
+ ~ 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="vnets" description="ONOS vnets test">
+
+ <import file="${ONOS_SCENARIOS}/net-setup.xml"/>
+
+ <import file="${ONOS_SCENARIOS}/net-setup-vnets.xml"/>
+ <dependency name="Net-Setup-Vnets" requires="Net-Setup"/>
+
+ <import file="${ONOS_SCENARIOS}/net-teardown-vnets.xml"/>
+ <dependency name="Net-Teardown-Vnets" requires="Net-Setup-Vnets"/>
+
+ <import file="${ONOS_SCENARIOS}/net-teardown.xml"/>
+ <dependency name="Net-Teardown" requires="Net-Teardown-Vnets"/>
+
+</scenario>
+