Committed by
Gerrit Code Review
Enhancing STC
Change-Id: Ibb8a001f5c6550860c4ade97378af7e97876a0ab
Showing
8 changed files
with
134 additions
and
3 deletions
... | @@ -13,7 +13,8 @@ cat $aux | ... | @@ -13,7 +13,8 @@ cat $aux |
13 | cut -c7- $aux | cut -d\ -f1 | sort > $aux.1 | 13 | cut -c7- $aux | cut -d\ -f1 | sort > $aux.1 |
14 | 14 | ||
15 | # Normalize the expected apps | 15 | # Normalize the expected apps |
16 | -apps=${ONOS_APPS:-drivers,openflow} | 16 | +apps=${2:-$ONOS_APPS} |
17 | +apps=${apps:-drivers,openflow} | ||
17 | (for app in ${apps//,/ }; do echo org.onosproject.$app; done) | sort > $aux.2 | 18 | (for app in ${apps//,/ }; do echo org.onosproject.$app; done) | sort > $aux.2 |
18 | 19 | ||
19 | # Check for differences | 20 | # Check for differences | ... | ... |
tools/test/bin/onos-check-nodes
0 → 100755
1 | +#!/bin/bash | ||
2 | +# ----------------------------------------------------------------------------- | ||
3 | +# Checks whether all and only the ONOS instances configured active. | ||
4 | +# ----------------------------------------------------------------------------- | ||
5 | + | ||
6 | +aux=/tmp/stc-$$.log | ||
7 | +trap "rm -f $aux $aux.1 $aux.2 2>/dev/null" EXIT | ||
8 | + | ||
9 | +onos ${1:-$OCI} "onos:nodes" > $aux | ||
10 | +cat $aux | ||
11 | + | ||
12 | +# Normalize the nodes | ||
13 | +cut -d= -f3 $aux | cut -d: -f1 | sort > $aux.1 | ||
14 | + | ||
15 | +# Normalize the expected apps | ||
16 | +ONOS_NODES=$(env | egrep "OC[0-9]*=" | cut -d= -f2 | sort) | ||
17 | +nodes=${2:-$ONOS_NODES} | ||
18 | +(for node in $nodes; do echo $node; done) | sort > $aux.2 | ||
19 | + | ||
20 | +# Check for differences | ||
21 | +diff $aux.1 $aux.2 |
tools/test/bin/onos-untar-and-run
0 → 100755
1 | +#!/bin/bash | ||
2 | +# ----------------------------------------------------------------------------- | ||
3 | +# Untars ONOS tar.gz on the remote machine and runs ONOS. | ||
4 | +# ----------------------------------------------------------------------------- | ||
5 | + | ||
6 | +[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 | ||
7 | +. $ONOS_ROOT/tools/build/envDefaults | ||
8 | + | ||
9 | +node=${1:-$OCI} | ||
10 | +remote=$ONOS_USER@$node | ||
11 | + | ||
12 | +ssh $remote " | ||
13 | + [ -d $ONOS_INSTALL_DIR/bin ] && echo \"ONOS is already installed\" && exit 1 | ||
14 | + cd /tmp && rm -fr /tmp/$ONOS_BITS | ||
15 | + tar zxf /tmp/$ONOS_BITS.tar.gz | ||
16 | + | ||
17 | + cd /tmp/$ONOS_BITS | ||
18 | + bin/onos-service server 1>/tmp/onos.out 2>/tmp/onos.err & | ||
19 | + | ||
20 | + # Setup a symlink to allow other tools to work | ||
21 | + sudo ln -s /tmp/$ONOS_BITS $ONOS_INSTALL_DIR | ||
22 | +" |
... | @@ -18,10 +18,11 @@ | ... | @@ -18,10 +18,11 @@ |
18 | <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/> | 18 | <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/> |
19 | 19 | ||
20 | <parallel var="${OC#}"> | 20 | <parallel var="${OC#}"> |
21 | + <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" unless="${OCT}"/> | ||
21 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> | 22 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> |
22 | 23 | ||
23 | <step name="Install-${#}" exec="onos-install ${OC#}" | 24 | <step name="Install-${#}" exec="onos-install ${OC#}" |
24 | - requires="Uninstall-${#},Push-Bits"/> | 25 | + requires="Uninstall-${#},Push-Bits-${#},Push-Bits"/> |
25 | 26 | ||
26 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" | 27 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" |
27 | requires="Install-${#}"/> | 28 | requires="Install-${#}"/> | ... | ... |
tools/test/scenarios/tar-setup.xml
0 → 100644
1 | +<!-- | ||
2 | + ~ Copyright 2015 Open Networking Laboratory | ||
3 | + ~ | ||
4 | + ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + ~ you may not use this file except in compliance with the License. | ||
6 | + ~ You may obtain a copy of the License at | ||
7 | + ~ | ||
8 | + ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + ~ | ||
10 | + ~ Unless required by applicable law or agreed to in writing, software | ||
11 | + ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + ~ See the License for the specific language governing permissions and | ||
14 | + ~ limitations under the License. | ||
15 | + --> | ||
16 | +<scenario name="tar-setup" description="ONOS cluster setup via onos.tar.gz"> | ||
17 | + <group name="Setup-Instances"> | ||
18 | + <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/> | ||
19 | + | ||
20 | + <parallel var="${OC#}"> | ||
21 | + <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" | ||
22 | + unless="${OCT}"/> | ||
23 | + <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> | ||
24 | + <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"/> | ||
25 | + | ||
26 | + <step name="Untar-And-Run-${#}" exec="onos-untar-and-run ${OC#}" | ||
27 | + requires="Uninstall-${#},Push-Bits-${#},Push-Bits"/> | ||
28 | + | ||
29 | + <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" | ||
30 | + requires="Untar-And-Run-${#}"/> | ||
31 | + | ||
32 | + <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}" | ||
33 | + requires="~Wait-for-Start-${#}"/> | ||
34 | + <step name="Check-Components-${#}" | ||
35 | + exec="onos-check-components ${OC#}" | ||
36 | + requires="~Wait-for-Start-${#}"/> | ||
37 | + <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} drivers" | ||
38 | + requires="~Wait-for-Start-${#}"/> | ||
39 | + | ||
40 | + <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#} ${OC#}" | ||
41 | + requires="~Wait-for-Start-${#}"/> | ||
42 | + </parallel> | ||
43 | + </group> | ||
44 | + | ||
45 | + <group name="Setup-Cluster" requires="Setup-Instances" unless="${NO_CLUSTER}"> | ||
46 | + <step name="Form-Cluster" exec="onos-form-cluster cell"/> | ||
47 | + <parallel var="${OC#}"> | ||
48 | + <step name="Wait-for-Start-Again-${#}" | ||
49 | + exec="onos-wait-for-start ${OC#}" | ||
50 | + requires="Form-Cluster"/> | ||
51 | + | ||
52 | + <step name="Check-Logs-Again-${#}" exec="onos-check-logs ${OC#}" | ||
53 | + requires="~Wait-for-Start-Again-${#}"/> | ||
54 | + <step name="Check-Components-Again-${#}" | ||
55 | + exec="onos-check-components ${OC#}" | ||
56 | + requires="~Wait-for-Start-Again-${#}"/> | ||
57 | + <step name="Check-Apps-Again-${#}" | ||
58 | + exec="onos-check-apps ${OC#} drivers" | ||
59 | + requires="~Wait-for-Start-Again-${#}"/> | ||
60 | + | ||
61 | + <step name="Check-Nodes-Again-${#}" exec="onos-check-nodes ${OC#}" | ||
62 | + requires="~Wait-for-Start-Again-${#}"/> | ||
63 | + </parallel> | ||
64 | + </group> | ||
65 | + | ||
66 | +</scenario> |
... | @@ -106,7 +106,8 @@ public class Compiler { | ... | @@ -106,7 +106,8 @@ public class Compiler { |
106 | ImmutableSet.copyOf(dependencies)); | 106 | ImmutableSet.copyOf(dependencies)); |
107 | 107 | ||
108 | // Extract the log directory if there was one specified | 108 | // Extract the log directory if there was one specified |
109 | - String path = scenario.definition().getString(LOG_DIR, DEFAULT_LOG_DIR); | 109 | + String defaultPath = DEFAULT_LOG_DIR + scenario.name(); |
110 | + String path = scenario.definition().getString(LOG_DIR, defaultPath); | ||
110 | logDir = new File(expand(path)); | 111 | logDir = new File(expand(path)); |
111 | } | 112 | } |
112 | 113 | ... | ... |
... | @@ -38,6 +38,7 @@ class ScenarioStore { | ... | @@ -38,6 +38,7 @@ class ScenarioStore { |
38 | 38 | ||
39 | private final ProcessFlow processFlow; | 39 | private final ProcessFlow processFlow; |
40 | private final File storeFile; | 40 | private final File storeFile; |
41 | + private final File logDir; | ||
41 | 42 | ||
42 | private final List<StepEvent> events = Lists.newArrayList(); | 43 | private final List<StepEvent> events = Lists.newArrayList(); |
43 | private final Map<String, Status> statusMap = Maps.newConcurrentMap(); | 44 | private final Map<String, Status> statusMap = Maps.newConcurrentMap(); |
... | @@ -51,6 +52,7 @@ class ScenarioStore { | ... | @@ -51,6 +52,7 @@ class ScenarioStore { |
51 | */ | 52 | */ |
52 | ScenarioStore(ProcessFlow processFlow, File logDir, String name) { | 53 | ScenarioStore(ProcessFlow processFlow, File logDir, String name) { |
53 | this.processFlow = processFlow; | 54 | this.processFlow = processFlow; |
55 | + this.logDir = logDir; | ||
54 | this.storeFile = new File(logDir, name + ".stc"); | 56 | this.storeFile = new File(logDir, name + ".stc"); |
55 | load(); | 57 | load(); |
56 | } | 58 | } |
... | @@ -63,6 +65,7 @@ class ScenarioStore { | ... | @@ -63,6 +65,7 @@ class ScenarioStore { |
63 | statusMap.clear(); | 65 | statusMap.clear(); |
64 | processFlow.getVertexes().forEach(step -> statusMap.put(step.name(), WAITING)); | 66 | processFlow.getVertexes().forEach(step -> statusMap.put(step.name(), WAITING)); |
65 | try { | 67 | try { |
68 | + removeLogs(); | ||
66 | PropertiesConfiguration cfg = new PropertiesConfiguration(storeFile); | 69 | PropertiesConfiguration cfg = new PropertiesConfiguration(storeFile); |
67 | cfg.clear(); | 70 | cfg.clear(); |
68 | cfg.save(); | 71 | cfg.save(); |
... | @@ -171,4 +174,18 @@ class ScenarioStore { | ... | @@ -171,4 +174,18 @@ class ScenarioStore { |
171 | } | 174 | } |
172 | } | 175 | } |
173 | 176 | ||
177 | + /** | ||
178 | + * Removes all scenario log files. | ||
179 | + */ | ||
180 | + private void removeLogs() { | ||
181 | + File[] logFiles = logDir.listFiles(); | ||
182 | + if (logFiles != null && logFiles.length > 0) { | ||
183 | + for (File file : logFiles) { | ||
184 | + if (!file.delete()) { | ||
185 | + print("Unable to delete log file %s", file); | ||
186 | + } | ||
187 | + } | ||
188 | + } | ||
189 | + } | ||
190 | + | ||
174 | } | 191 | } | ... | ... |
-
Please register or login to post a comment