Allow sequential installation of ONOS in STC

- Check for ONOS_STC_SEQ_START env variable, and if set, install ONOS in
  sequence instead of in parallel

Change-Id: I6c5d9d2e46293ec3c02b1de22227d3a81d48a45f
diff --git a/tools/test/scenarios/setup.xml b/tools/test/scenarios/setup.xml
index 845380e..4f45deb 100644
--- a/tools/test/scenarios/setup.xml
+++ b/tools/test/scenarios/setup.xml
@@ -19,34 +19,57 @@
         <step name="Enable-Flow-Objective-Intents" if="${ONOS_USE_FOI}"
               exec="onos ${OC1} cfg set org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator useFlowObjectives true"/>
 
-        <parallel var="${OC#}">
-            <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}"
-                  unless="${OCT}"/>
-            <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/>
-            <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"
-                  requires="Uninstall-${#}"/>
+        <group name="Cleanup">
+            <parallel var="${OC#}">
+                <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}"
+                      unless="${OCT}"/>
+                <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/>
+                <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"
+                      requires="Uninstall-${#}"/>
+            </parallel>
+        </group>
 
-            <step name="Install-${#}" exec="onos-install ${OC#}"
-                  requires="Kill-${#},Push-Bits-${#},Push-Bits"/>
+        <group name="Install">
+            <group name="Sequential-Install" if="${ONOS_STC_SEQ_START}">
+                <sequential var="${OC#}"
+                            starts="Sequential-Install-${#}"
+                            ends="Sequential-Install-${#-1}">
+                    <step name="Sequential-Install-${#}" exec="onos-install ${OC#}"
+                          requires="Push-Bits-${#},Push-Bits,Cleanup"/>
+                </sequential>
+            </group>
 
-            <step name="Secure-SSH-${#}" requires="Install-${#}"
-                  exec="onos-secure-ssh -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} ${OC#}"/>
+            <group name="Parallel-Install" unless="${ONOS_STC_SEQ_START}">
+                <parallel var="${OC#}">
+                    <step name="Parallel-Install-${#}" exec="onos-install ${OC#}"
+                          requires="Push-Bits-${#},Push-Bits,Cleanup"/>
+                </parallel>
+            </group>
+        </group>
 
-            <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}"
-                  requires="Install-${#},~Secure-SSH-${#}"/>
+        <group name="Verify" requires="Install">
+            <parallel var="${OC#}">
+                <step name="Secure-SSH-${#}"
+                      exec="onos-secure-ssh -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} ${OC#}"
+                      requires="Install"/>
 
-            <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#}" delay="3"
-                  requires="~Wait-for-Start-${#}"/>
-            <step name="Check-Components-${#}" delay="5"
-                  exec="onos-check-components ${OC#}"
-                  requires="~Wait-for-Start-${#}"/>
+                <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}"
+                      requires="~Secure-SSH-${#}"/>
 
-            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
-                  requires="~Check-Components-${#}"/>
-            <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} ${ONOS_APPS} includes"
-                  requires="~Check-Components-${#}"/>
+                <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#}" delay="3"
+                      requires="~Wait-for-Start-${#}"/>
+                <step name="Check-Components-${#}" delay="5"
+                      exec="onos-check-components ${OC#}"
+                      requires="~Wait-for-Start-${#}"/>
 
-            <dependency name="Enable-Flow-Objective-Intents" requires="Check-Apps-${#}"/>
-        </parallel>
+                <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
+                      requires="~Check-Components-${#}"/>
+                <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} ${ONOS_APPS} includes"
+                      requires="~Check-Components-${#}"/>
+
+                <dependency name="Enable-Flow-Objective-Intents" requires="Check-Apps-${#}"/>
+            </parallel>
+        </group>
+
     </group>
 </scenario>