STC work in progress

Change-Id: Ie5e444e3b560b605b066899289cdee7a5fe8338c
diff --git a/tools/test/bin/onos-check-bits b/tools/test/bin/onos-check-bits
new file mode 100755
index 0000000..0cf5fe5
--- /dev/null
+++ b/tools/test/bin/onos-check-bits
@@ -0,0 +1,9 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Checks if ONOS bits are available in preparation for install.
+# -----------------------------------------------------------------------------
+
+[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
+. $ONOS_ROOT/tools/build/envDefaults
+
+test -f $ONOS_TAR
diff --git a/tools/test/bin/stc b/tools/test/bin/stc
new file mode 100755
index 0000000..9dfa38f
--- /dev/null
+++ b/tools/test/bin/stc
@@ -0,0 +1,13 @@
+#!/bin/bash
+#-------------------------------------------------------------------------------
+#   System Test Coordinator
+#-------------------------------------------------------------------------------
+
+STC_ROOT=${STC_ROOT:-$(dirname $0)/..}
+cd $STC_ROOT
+VER=1.2.0-SNAPSHOT
+
+PATH=$PWD/bin:$PATH
+
+java -jar ~/.m2/repository/org/onosproject/onlab-stc/$VER/onlab-stc-$VER.jar \
+    "${@:-$ONOS_ROOT/tools/test/scenarios/smoke.xml}"
diff --git a/tools/test/bin/stc-launcher b/tools/test/bin/stc-launcher
new file mode 100755
index 0000000..3ef661e
--- /dev/null
+++ b/tools/test/bin/stc-launcher
@@ -0,0 +1,5 @@
+#!/bin/bash
+#-------------------------------------------------------------------------------
+#   System Test Coordinator process launcher
+#-------------------------------------------------------------------------------
+"$@" 2>&1
diff --git a/tools/test/scenarios/prerequisites.xml b/tools/test/scenarios/prerequisites.xml
new file mode 100644
index 0000000..55d8c0d
--- /dev/null
+++ b/tools/test/scenarios/prerequisites.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ 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="prerequisites" description="ONOS test pre-requisites">
+    <group name="Prerequisites">
+        <step name="Check-Environment" exec="test -n ${ONOS_ROOT} -a -n ${ONOS_NIC} -a -n ${OC1}"/>
+        <step name="Check-ONOS-Bits" exec="onos-check-bits"/>
+        <parallel var="${OC#}">
+            <step name="Check-Passwordless-Login-${#}"
+                  exec="ssh -n -o ConnectTimeout=3 -o PasswordAuthentication=no sdn@${OC#} date"/>
+        </parallel>
+    </group>
+</scenario>
diff --git a/tools/test/scenarios/setup.xml b/tools/test/scenarios/setup.xml
new file mode 100644
index 0000000..bd12216
--- /dev/null
+++ b/tools/test/scenarios/setup.xml
@@ -0,0 +1,29 @@
+<!--
+  ~ 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="setup" description="ONOS cluster setup">
+    <group name="Setup">
+        <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/>
+        <parallel var="${OC#}">
+            <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/>
+            <step name="Install-${#}" exec="onos-install ${OC#}"
+                  requires="Uninstall-${#},Push-Bits"/>
+            <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}"
+                  requires="Install-${#}"/>
+            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
+                  requires="-Wait-for-Start-${#}"/>
+        </parallel>
+    </group>
+</scenario>
diff --git a/tools/test/scenarios/smoke.xml b/tools/test/scenarios/smoke.xml
new file mode 100644
index 0000000..423f348
--- /dev/null
+++ b/tools/test/scenarios/smoke.xml
@@ -0,0 +1,20 @@
+<!--
+  ~ 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="smoke-test" description="ONOS smoke test">
+    <import file="${ONOS_ROOT}/tools/test/scenarios/prerequisites.xml"/>
+    <import file="${ONOS_ROOT}/tools/test/scenarios/setup.xml"/>
+    <dependency name="Setup" requires="Prerequisites"/>
+</scenario>