Committed by
Gerrit Code Review
option to not remove flows in flow-tester.py
Change-Id: I6d0be801b628cd6cf3678d5c846fb99cabf41ca3
Showing
2 changed files
with
14 additions
and
6 deletions
... | @@ -148,12 +148,14 @@ public class DemoInstaller implements DemoAPI { | ... | @@ -148,12 +148,14 @@ public class DemoInstaller implements DemoAPI { |
148 | public JsonNode flowTest(Optional<JsonNode> params) { | 148 | public JsonNode flowTest(Optional<JsonNode> params) { |
149 | int flowsPerDevice = 1000; | 149 | int flowsPerDevice = 1000; |
150 | int neighbours = 0; | 150 | int neighbours = 0; |
151 | + boolean remove = true; | ||
151 | if (params.isPresent()) { | 152 | if (params.isPresent()) { |
152 | flowsPerDevice = params.get().get("flowsPerDevice").asInt(); | 153 | flowsPerDevice = params.get().get("flowsPerDevice").asInt(); |
153 | neighbours = params.get().get("neighbours").asInt(); | 154 | neighbours = params.get().get("neighbours").asInt(); |
155 | + remove = params.get().get("remove").asBoolean(); | ||
154 | } | 156 | } |
155 | 157 | ||
156 | - Future<JsonNode> future = worker.submit(new FlowTest(flowsPerDevice, neighbours)); | 158 | + Future<JsonNode> future = worker.submit(new FlowTest(flowsPerDevice, neighbours, remove)); |
157 | 159 | ||
158 | try { | 160 | try { |
159 | return future.get(10, TimeUnit.SECONDS); | 161 | return future.get(10, TimeUnit.SECONDS); |
... | @@ -496,12 +498,14 @@ public class DemoInstaller implements DemoAPI { | ... | @@ -496,12 +498,14 @@ public class DemoInstaller implements DemoAPI { |
496 | private class FlowTest implements Callable<JsonNode> { | 498 | private class FlowTest implements Callable<JsonNode> { |
497 | private final int flowPerDevice; | 499 | private final int flowPerDevice; |
498 | private final int neighbours; | 500 | private final int neighbours; |
501 | + private final boolean remove; | ||
499 | private FlowRuleOperations.Builder adds; | 502 | private FlowRuleOperations.Builder adds; |
500 | private FlowRuleOperations.Builder removes; | 503 | private FlowRuleOperations.Builder removes; |
501 | 504 | ||
502 | - public FlowTest(int flowsPerDevice, int neighbours) { | 505 | + public FlowTest(int flowsPerDevice, int neighbours, boolean remove) { |
503 | this.flowPerDevice = flowsPerDevice; | 506 | this.flowPerDevice = flowsPerDevice; |
504 | this.neighbours = neighbours; | 507 | this.neighbours = neighbours; |
508 | + this.remove = remove; | ||
505 | prepareInstallation(); | 509 | prepareInstallation(); |
506 | } | 510 | } |
507 | 511 | ||
... | @@ -574,7 +578,9 @@ public class DemoInstaller implements DemoAPI { | ... | @@ -574,7 +578,9 @@ public class DemoInstaller implements DemoAPI { |
574 | })); | 578 | })); |
575 | 579 | ||
576 | latch.await(10, TimeUnit.SECONDS); | 580 | latch.await(10, TimeUnit.SECONDS); |
577 | - flowService.apply(removes.build()); | 581 | + if (this.remove) { |
582 | + flowService.apply(removes.build()); | ||
583 | + } | ||
578 | return node; | 584 | return node; |
579 | } | 585 | } |
580 | } | 586 | } | ... | ... |
... | @@ -7,11 +7,11 @@ def run(url, request): | ... | @@ -7,11 +7,11 @@ def run(url, request): |
7 | r = requests.post(url, data) | 7 | r = requests.post(url, data) |
8 | return r | 8 | return r |
9 | 9 | ||
10 | -def runTasks(flowPerDevice, neighbours, url, servers, doJson): | 10 | +def runTasks(flowPerDevice, neighbours, url, servers, doJson, remove): |
11 | # We can use a with statement to ensure threads are cleaned up promptly | 11 | # We can use a with statement to ensure threads are cleaned up promptly |
12 | with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: | 12 | with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor: |
13 | # Start the load operations and mark each future with its URL | 13 | # Start the load operations and mark each future with its URL |
14 | - request = { "flowsPerDevice" : flowPerDevice, "neighbours" : neighbours } | 14 | + request = { "flowsPerDevice" : flowPerDevice, "neighbours" : neighbours, "remove" : remove } |
15 | future_to_url = {executor.submit(run, url % (server), request) for server in servers} | 15 | future_to_url = {executor.submit(run, url % (server), request) for server in servers} |
16 | for f in concurrent.futures.as_completed(future_to_url): | 16 | for f in concurrent.futures.as_completed(future_to_url): |
17 | try: | 17 | try: |
... | @@ -34,10 +34,12 @@ if __name__ == "__main__": | ... | @@ -34,10 +34,12 @@ if __name__ == "__main__": |
34 | default=0, type="int") | 34 | default=0, type="int") |
35 | parser.add_option("-s", "--servers", dest="servers", help="List of servers to hit", | 35 | parser.add_option("-s", "--servers", dest="servers", help="List of servers to hit", |
36 | default=[], action="append") | 36 | default=[], action="append") |
37 | + parser.add_option("-r", "--remove", dest="remove", help="Do not remove flows after installation", | ||
38 | + default=True, action="store_false") | ||
37 | parser.add_option("-j", "--json", dest="doJson", help="Print results in json", | 39 | parser.add_option("-j", "--json", dest="doJson", help="Print results in json", |
38 | default=False, action="store_true") | 40 | default=False, action="store_true") |
39 | 41 | ||
40 | (options, args) = parser.parse_args() | 42 | (options, args) = parser.parse_args() |
41 | if (len(options.servers) == 0): | 43 | if (len(options.servers) == 0): |
42 | options.servers.append("localhost") | 44 | options.servers.append("localhost") |
43 | - runTasks(options.flows, options.neighs, options.url, options.servers, options.doJson) | 45 | + runTasks(options.flows, options.neighs, options.url, options.servers, options.doJson, options.remove) | ... | ... |
-
Please register or login to post a comment