diff --git a/tools/test/scenarios/bin/find-link-in-cluster.py b/tools/test/scenarios/bin/find-link-in-cluster.py
new file mode 100755
index 0000000..928531f
--- /dev/null
+++ b/tools/test/scenarios/bin/find-link-in-cluster.py
@@ -0,0 +1,54 @@
+#! /usr/bin/env python
+
+import requests
+import sys
+
+from requests.auth import HTTPBasicAuth
+
+if len(sys.argv) != 9:
+    print "usage: find-link-in-cluster onos-node name cluster-id expected-length src-device-id src-port dst-device-id dst-port"
+    sys.exit(1)
+
+node = sys.argv[1]
+name = sys.argv[2]
+cluster = sys.argv[3]
+length = int(sys.argv[4])
+srcDeviceId = sys.argv[5]
+srcPort = sys.argv[6]
+dstDeviceId = sys.argv[7]
+dstPort = sys.argv[8]
+
+
+linksRequest = requests.get('http://' + node + ':8181/onos/v1/topology/clusters/'
+                            + cluster + '/links',
+                            auth=HTTPBasicAuth('onos', 'rocks'))
+
+if linksRequest.status_code != 200:
+    print linksRequest.text
+    sys.exit(1)
+
+linksJson = linksRequest.json()
+linksLength = len(linksJson["links"])
+
+if  linksLength != length:
+    print "Expected length {} but got {}".format(length, linksLength)
+    sys.exit(1)
+
+for link in linksJson["links"]:
+    if srcDeviceId == link["src"]["device"] and srcPort == link["src"]["port"]:
+        if dstDeviceId == link["dst"]["device"] and dstPort == link["dst"]["port"]:
+            print "@stc " + name + "SrcDevice=" + link["src"]["device"]
+            print "@stc " + name + "SrcPort=" + link["src"]["port"]
+            print "@stc " + name + "DstDevice=" + link["dst"]["device"]
+            print "@stc " + name + "DstPort=" + link["dst"]["port"]
+            print "@stc " + name + "Type=" + link["type"]
+            print "@stc " + name + "State=" + link["state"]
+            sys.exit(0)
+
+print "Could not find link from {}:{} to {}:{}"\
+    .format(srcDeviceId, srcPort, dstDeviceId, dstPort)
+sys.exit(1)
+
+
+
+
diff --git a/tools/test/scenarios/bin/find-topo-infrastructure.py b/tools/test/scenarios/bin/find-topo-infrastructure.py
new file mode 100755
index 0000000..6d1970f
--- /dev/null
+++ b/tools/test/scenarios/bin/find-topo-infrastructure.py
@@ -0,0 +1,34 @@
+#! /usr/bin/env python
+
+import requests
+import sys
+import urllib
+
+from requests.auth import HTTPBasicAuth
+
+if len(sys.argv) != 4:
+    print "usage: find-topo-infrastructure onos-node name connect-point"
+    sys.exit(1)
+
+node = sys.argv[1]
+name = sys.argv[2]
+id = sys.argv[3]
+
+infrastructureRequest = requests.get('http://' + node + ':8181/onos/v1/topology/infrastructure/' +
+                           urllib.quote_plus(id),
+                           auth=HTTPBasicAuth('onos', 'rocks'))
+
+if infrastructureRequest.status_code != 200:
+    print infrastructureRequest.text
+    sys.exit(1)
+
+infrastructureJson = infrastructureRequest.json()
+
+print "@stc " + name + "Infrastructure=" + str(infrastructureJson["infrastructure"])
+
+sys.exit(0)
+
+
+
+
+
diff --git a/tools/test/scenarios/bin/query-cluster.py b/tools/test/scenarios/bin/query-cluster.py
new file mode 100755
index 0000000..0cac7ac
--- /dev/null
+++ b/tools/test/scenarios/bin/query-cluster.py
@@ -0,0 +1,37 @@
+#! /usr/bin/env python
+
+import requests
+import sys
+import urllib
+
+from requests.auth import HTTPBasicAuth
+
+if len(sys.argv) != 4:
+    print "usage: query-cluster onos-node name cluster-number"
+    sys.exit(1)
+
+node = sys.argv[1]
+name = sys.argv[2]
+cluster = sys.argv[3]
+
+topoRequest = requests.get('http://' + node + ':8181/onos/v1/topology/clusters/'
+                           + cluster,
+                           auth=HTTPBasicAuth('onos', 'rocks'))
+
+if topoRequest.status_code != 200:
+    print topoRequest.text
+    sys.exit(1)
+
+topoJson = topoRequest.json()
+
+print "@stc " + name + "Id=" + str(topoJson["id"])
+print "@stc " + name + "DeviceCount=" + str(topoJson["deviceCount"])
+print "@stc " + name + "LinkCount=" + str(topoJson["linkCount"])
+print "@stc " + name + "Root=" + topoJson["root"]
+
+sys.exit(0)
+
+
+
+
+
diff --git a/tools/test/scenarios/bin/query-topo.py b/tools/test/scenarios/bin/query-topo.py
new file mode 100755
index 0000000..9b81b4e
--- /dev/null
+++ b/tools/test/scenarios/bin/query-topo.py
@@ -0,0 +1,35 @@
+#! /usr/bin/env python
+
+import requests
+import sys
+import urllib
+
+from requests.auth import HTTPBasicAuth
+
+if len(sys.argv) != 3:
+    print "usage: query-topo onos-node name"
+    sys.exit(1)
+
+node = sys.argv[1]
+name = sys.argv[2]
+
+topoRequest = requests.get('http://' + node + ':8181/onos/v1/topology/',
+                           auth=HTTPBasicAuth('onos', 'rocks'))
+
+if topoRequest.status_code != 200:
+    print topoRequest.text
+    sys.exit(1)
+
+topoJson = topoRequest.json()
+
+print "@stc " + name + "Time=" + str(topoJson["time"])
+print "@stc " + name + "Devices=" + str(topoJson["devices"])
+print "@stc " + name + "Links=" + str(topoJson["links"])
+print "@stc " + name + "Clusters=" + str(topoJson["clusters"])
+
+sys.exit(0)
+
+
+
+
+
diff --git a/tools/test/scenarios/bin/verify-topo-devices.py b/tools/test/scenarios/bin/verify-topo-devices.py
new file mode 100755
index 0000000..be834b9
--- /dev/null
+++ b/tools/test/scenarios/bin/verify-topo-devices.py
@@ -0,0 +1,51 @@
+#! /usr/bin/env python
+
+import requests
+import sys
+import urllib
+
+from requests.auth import HTTPBasicAuth
+
+if len(sys.argv) != 5:
+    print "usage: verify-topo-links onos-node cluster-id first-index last-index"
+    sys.exit(1)
+
+node = sys.argv[1]
+cluster = sys.argv[2]
+first = int(sys.argv[3])
+last = int(sys.argv[4])
+
+found = 0
+
+topoRequest = requests.get('http://' + node + ':8181/onos/v1/topology/clusters/'
+                           + cluster
+                           + "/devices",
+                           auth=HTTPBasicAuth('onos', 'rocks'))
+
+if topoRequest.status_code != 200:
+    print topoRequest.text
+    sys.exit(1)
+
+topoJson = topoRequest.json()
+
+for deviceIndex in range(first, last+1):
+    lookingFor = "of:" + format(deviceIndex, '016x')
+    print lookingFor
+    for arrayIndex in range(0, len(topoJson["devices"])):
+        device = topoJson["devices"][arrayIndex]
+        if device == lookingFor:
+            found = found + 1
+            print "Match found for " + device
+            break
+
+
+if found == last - first:
+    sys.exit(0)
+
+print "Found " + str(found) + " matches, need " + str(last - first)
+sys.exit(2)
+
+
+
+
+
diff --git a/tools/test/scenarios/net-smoke.xml b/tools/test/scenarios/net-smoke.xml
index 53a5729..2aad758 100644
--- a/tools/test/scenarios/net-smoke.xml
+++ b/tools/test/scenarios/net-smoke.xml
@@ -35,6 +35,9 @@
         <import file="${ONOS_SCENARIOS}/net-create-flows.xml"/>
         <dependency name="Net-Create-Flows" requires="Net-Setup,P2P-Intent-Connectivity,Net-REST"/>
 
+        <import file="${ONOS_SCENARIOS}/net-topo.xml"/>
+        <dependency name="Net-topo" requires="Net-Setup,Net-Create-Flows"/>
+
         <import file="${ONOS_SCENARIOS}/net-teardown.xml"/>
         <dependency name="Net-Teardown" requires="~Host-Intent-Connectivity,
                                                   ~P2P-Intent-Connectivity,
diff --git a/tools/test/scenarios/net-topo.xml b/tools/test/scenarios/net-topo.xml
new file mode 100644
index 0000000..e8e2399
--- /dev/null
+++ b/tools/test/scenarios/net-topo.xml
@@ -0,0 +1,76 @@
+<!--
+  ~ Copyright 2015 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-topo"
+          description="Network topology test">
+    <!-- TODO: parametrize this via recipes -->
+    <group name="Net-topo">
+
+        <!-- Verify the overall topology using the REST API -->
+        <step name="Net-topo.Query-Topo"
+              exec="query-topo.py ${OC1} topo"/>
+        <step name="Net-topo.Verify-Topo-Devices" requires="Net-topo.Query-Topo"
+              exec="test ${topoDevices} == 25"/>
+        <step name="Net-topo.Verify-Topo-Links" requires="Net-topo.Query-Topo"
+              exec="test ${topoLinks} == 140"/>
+        <step name="Net-topo.Verify-Topo-Clusters" requires="Net-topo.Query-Topo"
+              exec="test ${topoClusters} == 1"/>
+
+        <!-- Verify the cluster topology using the REST API -->
+        <step name="Net-topo.Query-Cluster0"
+              exec="query-cluster.py ${OC1} clusterTopo0 0"/>
+        <step name="Net-topo.Verify-Cluster0-Id" requires="Net-topo.Query-Cluster0"
+              exec="test ${clusterTopo0Id} == 0"/>
+        <step name="Net-topo.Verify-Cluster0-DeviceCount" requires="Net-topo.Query-Cluster0"
+              exec="test ${clusterTopo0DeviceCount} == 25"/>
+        <step name="Net-topo.Verify-Cluster0-LinkCount" requires="Net-topo.Query-Cluster0"
+              exec="test ${clusterTopo0LinkCount} == 140"/>
+        <step name="Net-topo.Verify-Cluster0-Root" requires="Net-topo.Query-Cluster0"
+              exec="test '${clusterTopo0Root}' == 'of:000000000000000a'"/>
+
+        <!-- Verify the list of devices for the cluster -->
+        <step name="Net-topo.Verify-Cluster0-Devices"
+              exec="verify-topo-devices.py ${OC1} 0 0 24"/>
+
+        <!-- Spot check some known links in the topology -->
+        <step name="Net-topo.Verify-Cluster0-Link1"
+              exec="find-link-in-cluster.py ${OC1} link1 0 140 of:000000000000000f 8 of:0000000000000015 3"/>
+        <step name="Net-topo.Verify-Cluster0-Link2"
+              exec="find-link-in-cluster.py ${OC1} link2 0 140 of:0000000000000008 3 of:0000000000000005 4"/>
+        <step name="Net-topo.Verify-Cluster0-Link3"
+              exec="find-link-in-cluster.py ${OC1} link3 0 140 of:0000000000000011 2 of:0000000000000002 9"/>
+        <step name="Net-topo.Verify-Cluster0-Link4"
+              exec="find-link-in-cluster.py ${OC1} link4 0 140 of:000000000000000f 3 of:000000000000000d 10"/>
+        <step name="Net-topo.Verify-Cluster0-Link5"
+              exec="find-link-in-cluster.py ${OC1} link5 0 140 of:000000000000000d 13 of:0000000000000010 6"/>
+
+        <!--  Verify the topology infrastructure query -->
+        <step name="Net-topo.Query-Cluster0-Infra1"
+              exec="find-topo-infrastructure.py ${OC1} infra1 of:000000000000000f:8"/>
+        <step name="Net-topo.Verify-Cluster0-Infra1" requires="Net-topo.Query-Cluster0-Infra1"
+              exec="test '${infra1Infrastructure}' == 'True'"/>
+
+        <step name="Net-topo.Query-Cluster0-Infra2"
+              exec="find-topo-infrastructure.py ${OC1} infra2 of:000000000000000d:8"/>
+        <step name="Net-topo.Verify-Cluster0-Infra2" requires="Net-topo.Query-Cluster0-Infra2"
+              exec="test '${infra2Infrastructure}' == 'True'"/>
+
+        <step name="Net-topo.Query-Cluster0-Infra3"
+              exec="find-topo-infrastructure.py ${OC1} infra3 of:0000000000000012:8"/>
+        <step name="Net-topo.Verify-Cluster0-Infra3" requires="Net-topo.Query-Cluster0-Infra3"
+              exec="test '${infra3Infrastructure}' == 'False'"/>
+
+    </group>
+</scenario>
