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>
