Added STC shutdown scenario.

Change-Id: I48b882c872f69fdd84fe2fd057163e68ffb58012
diff --git a/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java b/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
index 273738b..22284b6 100644
--- a/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
+++ b/core/net/src/main/java/org/onosproject/cluster/impl/ClusterManager.java
@@ -92,21 +92,18 @@
     @Override
     public ControllerNode getLocalNode() {
         checkPermission(Permission.CLUSTER_READ);
-
         return store.getLocalNode();
     }
 
     @Override
     public Set<ControllerNode> getNodes() {
         checkPermission(Permission.CLUSTER_READ);
-
         return store.getNodes();
     }
 
     @Override
     public ControllerNode getNode(NodeId nodeId) {
         checkPermission(Permission.CLUSTER_READ);
-
         checkNotNull(nodeId, INSTANCE_ID_NULL);
         return store.getNode(nodeId);
     }
@@ -114,7 +111,6 @@
     @Override
     public ControllerNode.State getState(NodeId nodeId) {
         checkPermission(Permission.CLUSTER_READ);
-
         checkNotNull(nodeId, INSTANCE_ID_NULL);
         return store.getState(nodeId);
     }
@@ -123,7 +119,6 @@
     @Override
     public DateTime getLastUpdated(NodeId nodeId) {
         checkPermission(Permission.CLUSTER_READ);
-
         return store.getLastUpdated(nodeId);
     }
 
@@ -158,14 +153,12 @@
     @Override
     public void addListener(ClusterEventListener listener) {
         checkPermission(Permission.CLUSTER_EVENT);
-
         listenerRegistry.addListener(listener);
     }
 
     @Override
     public void removeListener(ClusterEventListener listener) {
         checkPermission(Permission.CLUSTER_EVENT);
-
         listenerRegistry.removeListener(listener);
     }
 
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index 56d41ff..586365a 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -141,8 +141,8 @@
     public void deactivate() {
         providerRegistry.unregister(this);
         controller.removeListener(listener);
+        collectors.values().forEach(PortStatsCollector::stop);
         providerService = null;
-
         LOG.info("Stopped");
     }
 
@@ -165,6 +165,7 @@
         if (sw == null || !sw.isConnected()) {
             LOG.error("Failed to probe device {} on sw={}", deviceId, sw);
             providerService.deviceDisconnected(deviceId);
+            return;
         } else {
             LOG.trace("Confirmed device {} connection", deviceId);
         }
diff --git a/tools/package/debian/onos.conf b/tools/package/debian/onos.conf
index 85c210d..634a263 100644
--- a/tools/package/debian/onos.conf
+++ b/tools/package/debian/onos.conf
@@ -15,8 +15,8 @@
 #env NEW_JAVA_HOME=/usr/lib/jvm/java-8-oracle/
 
 pre-stop script
-    /opt/onos/bin/onos halt 2>/opt/onos/var/stderr.log
-    sleep 2
+    /opt/onos/bin/onos halt 2>>/opt/onos/var/stderr.log
+    sleep 1
 end script
 
 script
diff --git a/tools/test/scenarios/shutdown.xml b/tools/test/scenarios/shutdown.xml
new file mode 100644
index 0000000..0be2164
--- /dev/null
+++ b/tools/test/scenarios/shutdown.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ 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="shutdown" description="ONOS cluster shutdown">
+    <group name="Shutdown">
+        <parallel var="${OC#}">
+            <step name="Stop-Service-${#}" exec="onos-service ${OC#} stop"/>
+            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
+                  requires="~Stop-Service-${#}"/>
+        </parallel>
+    </group>
+</scenario>
diff --git a/tools/test/scenarios/startup.xml b/tools/test/scenarios/startup.xml
new file mode 100644
index 0000000..430d51c
--- /dev/null
+++ b/tools/test/scenarios/startup.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ 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="startup" description="ONOS cluster startup">
+    <group name="Startup">
+        <parallel var="${OC#}">
+            <step name="Start-Service-${#}" exec="onos-service ${OC#} start"/>
+            <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}"
+                  requires="Start-Service-${#}"/>
+            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
+                  requires="~Wait-for-Start-${#}"/>
+        </parallel>
+    </group>
+</scenario>