STC scenario to start/stop all apps in a minimal environment
Change-Id: I7364e0c348dcea9964124843f2cff2de9dcaafb3
diff --git a/tools/test/bin/onos-generate-activate-all-scenario b/tools/test/bin/onos-generate-activate-all-scenario
new file mode 100755
index 0000000..c12400b
--- /dev/null
+++ b/tools/test/bin/onos-generate-activate-all-scenario
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+
+import sys, os
+
+SCENARIO_HEADER = '''
+<!--
+ ~ Copyright 2019-present Open Networking Foundation
+ ~
+ ~ 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.
+ -->
+
+ <!--
+ This scenario is auto generated by onos-generate-activate-all-scenario. DO NOT EDIT
+ -->
+ <scenario name="app-activate-all" description="Tests that all apps can be activated by themselves">
+ <group name="App-Activate-All">
+ <step name="App-Activate-All.Minimal-Apps"
+ exec="onos-set-up-minimal-apps ${OCI}"/>
+'''
+
+SCENARIO_FOOTER = '''
+ </group>
+ </scenario>
+'''
+
+ACTIVATE_GROUP_TEMPLATE = '''
+ <group name="App-Activate-All.%(app_id)s" %(requires)s>
+ <step name="App-Activate-All.Activate-%(app_id)s"
+ exec="onos ${OCI} app activate org.onosproject.%(app_id)s" %(requires)s/>
+ <group name="App-Activate-All.App-Check-%(app_id)s" requires="App-Activate-All.Activate-%(app_id)s">
+ <parallel var="${OC#}">
+ <step name="App-Activate-All.App-Check-${#}-%(app_id)s"
+ exec="onos-check-apps ${OC#} %(app_id)s includes"/>
+ <step name="App-Activate-All.Check-Logs-${#}-%(app_id)s" exec="onos-check-logs ${OC#}"/>
+ </parallel>
+ </group>
+ <step name="App-Activate-All.App-Deactivate-%(app_id)s"
+ exec="onos ${OCI} app deactivate org.onosproject.%(app_id)s" requires="App-Activate-All.App-Check-%(app_id)s"/>
+ <step name="App-Activate-All.Wait-For-Deactivate-%(app_id)s"
+ exec="onos-check-apps ${OCI} org.onosproject.drivers" requires="App-Activate-All.App-Deactivate-%(app_id)s"/>
+ <group name="App-Activate-All.App-Check-After-%(app_id)s" requires="App-Activate-All.Wait-For-Deactivate-%(app_id)s">
+ <parallel var="${OC#}">
+ <step name="App-Activate-All.Check-Logs-After-${#}-%(app_id)s" exec="onos-check-logs ${OC#}"/>
+ </parallel>
+ </group>
+ <step name="App-Activate-All.Minimal-Apps-%(app_id)s" requires="App-Activate-All.App-Deactivate-%(app_id)s"
+ exec="onos-set-up-minimal-apps ${OCI}"/>
+ </group>
+
+'''
+
+app_list = []
+app_list_file = ""
+
+if len(sys.argv) > 1:
+ app_list_file = sys.argv[1]
+else:
+ print "Usage: onos-generate-activate-all-scenario file-name-of-app-list"
+ sys.exit()
+
+with open(app_list_file) as apps:
+ for app in apps:
+ if not "#" in app:
+ normalized_app = app.strip(" \n")
+ if not normalized_app == "":
+ app_list.append(normalized_app)
+
+scenario = SCENARIO_HEADER + "\n"
+
+app_group_requires = 'requires="App-Activate-All.Minimal-Apps"'
+for app_id in app_list:
+ parameters = {
+ 'requires': app_group_requires,
+ 'app_id': app_id,
+ }
+ scenario = scenario + (ACTIVATE_GROUP_TEMPLATE % parameters)
+ app_group_requires = 'requires="App-Activate-All.' + app_id + '"'
+
+scenario = scenario + SCENARIO_FOOTER
+
+print scenario
+