Brian O'Connor

Updating MockFlowRuleService with new semantics

Change-Id: I0a373e6cb25728ca48736902feedc3ed8869fa44
...@@ -396,14 +396,14 @@ public class IntentManagerTest { ...@@ -396,14 +396,14 @@ public class IntentManagerTest {
396 @Test 396 @Test
397 public void errorIntentInstallFromFlows() { 397 public void errorIntentInstallFromFlows() {
398 final Long id = MockIntent.nextId(); 398 final Long id = MockIntent.nextId();
399 - flowRuleService.setFuture(false, 1); 399 + flowRuleService.setFuture(false);
400 MockIntent intent = new MockIntent(id); 400 MockIntent intent = new MockIntent(id);
401 listener.setLatch(1, Type.FAILED); 401 listener.setLatch(1, Type.FAILED);
402 listener.setLatch(1, Type.INSTALL_REQ); 402 listener.setLatch(1, Type.INSTALL_REQ);
403 service.submit(intent); 403 service.submit(intent);
404 listener.await(Type.INSTALL_REQ); 404 listener.await(Type.INSTALL_REQ);
405 delay(10); // need to make sure we have some failed futures returned first 405 delay(10); // need to make sure we have some failed futures returned first
406 - flowRuleService.setFuture(true, 0); 406 + flowRuleService.setFuture(true);
407 listener.await(Type.FAILED); 407 listener.await(Type.FAILED);
408 } 408 }
409 409
...@@ -429,7 +429,7 @@ public class IntentManagerTest { ...@@ -429,7 +429,7 @@ public class IntentManagerTest {
429 @Test 429 @Test
430 public void errorIntentInstallNeverTrue() { 430 public void errorIntentInstallNeverTrue() {
431 final Long id = MockIntent.nextId(); 431 final Long id = MockIntent.nextId();
432 - flowRuleService.setFuture(false, 1); 432 + flowRuleService.setFuture(false);
433 MockIntent intent = new MockIntent(id); 433 MockIntent intent = new MockIntent(id);
434 listener.setLatch(1, Type.WITHDRAWN); 434 listener.setLatch(1, Type.WITHDRAWN);
435 listener.setLatch(1, Type.INSTALL_REQ); 435 listener.setLatch(1, Type.INSTALL_REQ);
...@@ -437,7 +437,7 @@ public class IntentManagerTest { ...@@ -437,7 +437,7 @@ public class IntentManagerTest {
437 listener.await(Type.INSTALL_REQ); 437 listener.await(Type.INSTALL_REQ);
438 // The delay here forces the retry loop in the intent manager to time out 438 // The delay here forces the retry loop in the intent manager to time out
439 delay(100); 439 delay(100);
440 - flowRuleService.setFuture(false, 1); 440 + flowRuleService.setFuture(false);
441 service.withdraw(intent); 441 service.withdraw(intent);
442 listener.await(Type.WITHDRAWN); 442 listener.await(Type.WITHDRAWN);
443 } 443 }
......
...@@ -15,68 +15,67 @@ ...@@ -15,68 +15,67 @@
15 */ 15 */
16 package org.onosproject.net.intent.impl; 16 package org.onosproject.net.intent.impl;
17 17
18 -import java.util.Collections; 18 +import com.google.common.collect.Sets;
19 -import java.util.Set;
20 -import java.util.concurrent.Future;
21 -
22 import org.onosproject.core.ApplicationId; 19 import org.onosproject.core.ApplicationId;
23 import org.onosproject.net.DeviceId; 20 import org.onosproject.net.DeviceId;
24 import org.onosproject.net.flow.CompletedBatchOperation; 21 import org.onosproject.net.flow.CompletedBatchOperation;
22 +import org.onosproject.net.flow.DefaultFlowEntry;
25 import org.onosproject.net.flow.FlowEntry; 23 import org.onosproject.net.flow.FlowEntry;
26 import org.onosproject.net.flow.FlowRule; 24 import org.onosproject.net.flow.FlowRule;
27 -import org.onosproject.net.flow.FlowRuleBatchEntry;
28 import org.onosproject.net.flow.FlowRuleBatchOperation; 25 import org.onosproject.net.flow.FlowRuleBatchOperation;
29 import org.onosproject.net.flow.FlowRuleListener; 26 import org.onosproject.net.flow.FlowRuleListener;
30 import org.onosproject.net.flow.FlowRuleOperations; 27 import org.onosproject.net.flow.FlowRuleOperations;
31 import org.onosproject.net.flow.FlowRuleService; 28 import org.onosproject.net.flow.FlowRuleService;
32 29
33 -import com.google.common.collect.ImmutableSet; 30 +import java.util.Set;
34 -import com.google.common.collect.Sets; 31 +import java.util.concurrent.Future;
35 -import com.google.common.util.concurrent.Futures; 32 +import java.util.stream.Collectors;
36 33
37 34
38 public class MockFlowRuleService implements FlowRuleService { 35 public class MockFlowRuleService implements FlowRuleService {
39 36
40 - private Future<CompletedBatchOperation> future;
41 final Set<FlowRule> flows = Sets.newHashSet(); 37 final Set<FlowRule> flows = Sets.newHashSet();
38 + boolean success;
42 39
43 public void setFuture(boolean success) { 40 public void setFuture(boolean success) {
44 - setFuture(success, 0); 41 + this.success = success;
45 } 42 }
46 43
47 - public void setFuture(boolean success, long intentId) { 44 + @Override
48 - if (success) { 45 + public Future<CompletedBatchOperation> applyBatch(FlowRuleBatchOperation batch) {
49 - future = Futures.immediateFuture(new CompletedBatchOperation(true, Collections.emptySet(), null)); 46 + throw new UnsupportedOperationException("deprecated");
50 - } else {
51 - final Set<Long> failedIds = ImmutableSet.of(intentId);
52 - future = Futures.immediateFuture(
53 - new CompletedBatchOperation(false, flows, failedIds, null));
54 - }
55 } 47 }
56 48
57 @Override 49 @Override
58 - public Future<CompletedBatchOperation> applyBatch(FlowRuleBatchOperation batch) { 50 + public void apply(FlowRuleOperations ops) {
59 - for (FlowRuleBatchEntry fbe : batch.getOperations()) { 51 + ops.stages().forEach(stage -> stage.forEach(flow -> {
60 - FlowRule fr = fbe.target(); 52 + switch (flow.type()) {
61 - switch (fbe.operator()) {
62 case ADD: 53 case ADD:
63 - flows.add(fr); 54 + case MODIFY: //TODO is this the right behavior for modify?
55 + flows.add(flow.rule());
64 break; 56 break;
65 case REMOVE: 57 case REMOVE:
66 - flows.remove(fr); 58 + flows.remove(flow.rule());
67 - break;
68 - case MODIFY:
69 break; 59 break;
70 default: 60 default:
71 break; 61 break;
72 } 62 }
63 + }));
64 + if (success) {
65 + ops.callback().onSuccess(ops);
66 + } else {
67 + ops.callback().onError(ops);
73 } 68 }
74 - return future;
75 } 69 }
76 70
77 @Override 71 @Override
78 - public void apply(FlowRuleOperations ops) { 72 + public void addListener(FlowRuleListener listener) {
73 + //TODO not implemented
74 + }
79 75
76 + @Override
77 + public void removeListener(FlowRuleListener listener) {
78 + //TODO not implemented
80 } 79 }
81 80
82 @Override 81 @Override
...@@ -86,39 +85,43 @@ public class MockFlowRuleService implements FlowRuleService { ...@@ -86,39 +85,43 @@ public class MockFlowRuleService implements FlowRuleService {
86 85
87 @Override 86 @Override
88 public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) { 87 public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) {
89 - return null; 88 + return flows.stream()
89 + .filter(flow -> flow.deviceId().equals(deviceId))
90 + .map(DefaultFlowEntry::new)
91 + .collect(Collectors.toList());
90 } 92 }
91 93
92 @Override 94 @Override
93 public void applyFlowRules(FlowRule... flowRules) { 95 public void applyFlowRules(FlowRule... flowRules) {
96 + for (FlowRule flow : flowRules) {
97 + flows.add(flow);
98 + }
94 } 99 }
95 100
96 @Override 101 @Override
97 public void removeFlowRules(FlowRule... flowRules) { 102 public void removeFlowRules(FlowRule... flowRules) {
103 + for (FlowRule flow : flowRules) {
104 + flows.remove(flow);
105 + }
98 } 106 }
99 107
100 @Override 108 @Override
101 public void removeFlowRulesById(ApplicationId appId) { 109 public void removeFlowRulesById(ApplicationId appId) {
110 + //TODO not implemented
102 } 111 }
103 112
104 @Override 113 @Override
105 public Iterable<FlowRule> getFlowRulesById(ApplicationId id) { 114 public Iterable<FlowRule> getFlowRulesById(ApplicationId id) {
106 - return null; 115 + return flows.stream()
116 + .filter(flow -> flow.appId() == id.id())
117 + .collect(Collectors.toList());
107 } 118 }
108 119
109 @Override 120 @Override
110 public Iterable<FlowRule> getFlowRulesByGroupId(ApplicationId appId, short groupId) { 121 public Iterable<FlowRule> getFlowRulesByGroupId(ApplicationId appId, short groupId) {
111 - return null; 122 + return flows.stream()
112 - } 123 + .filter(flow -> flow.appId() == appId.id() && flow.groupId().id() == groupId)
113 - 124 + .collect(Collectors.toList());
114 - @Override
115 - public void addListener(FlowRuleListener listener) {
116 -
117 - }
118 -
119 - @Override
120 - public void removeListener(FlowRuleListener listener) {
121 -
122 } 125 }
123 } 126 }
124 127
......