IntentInstaller: changing from Set to Collection to improve perf
Change-Id: Ia7f0f7d893645c7528ac9f51acff133f6d82383d
Showing
10 changed files
with
110 additions
and
124 deletions
... | @@ -15,11 +15,11 @@ | ... | @@ -15,11 +15,11 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent; | 16 | package org.onosproject.net.intent; |
17 | 17 | ||
18 | -import java.util.List; | ||
19 | -import java.util.Set; | ||
20 | - | ||
21 | import org.onosproject.net.flow.FlowRuleOperation; | 18 | import org.onosproject.net.flow.FlowRuleOperation; |
22 | 19 | ||
20 | +import java.util.Collection; | ||
21 | +import java.util.List; | ||
22 | + | ||
23 | /** | 23 | /** |
24 | * Abstraction of entity capable of installing intents to the environment. | 24 | * Abstraction of entity capable of installing intents to the environment. |
25 | */ | 25 | */ |
... | @@ -32,7 +32,7 @@ public interface IntentInstaller<T extends Intent> { | ... | @@ -32,7 +32,7 @@ public interface IntentInstaller<T extends Intent> { |
32 | * @return flow rule operations to complete install | 32 | * @return flow rule operations to complete install |
33 | * @throws IntentException if issues are encountered while installing the intent | 33 | * @throws IntentException if issues are encountered while installing the intent |
34 | */ | 34 | */ |
35 | - List<Set<FlowRuleOperation>> install(T intent); | 35 | + List<Collection<FlowRuleOperation>> install(T intent); |
36 | 36 | ||
37 | /** | 37 | /** |
38 | * Uninstalls the specified intent from the environment. | 38 | * Uninstalls the specified intent from the environment. |
... | @@ -41,7 +41,7 @@ public interface IntentInstaller<T extends Intent> { | ... | @@ -41,7 +41,7 @@ public interface IntentInstaller<T extends Intent> { |
41 | * @return flow rule operations to complete uninstall | 41 | * @return flow rule operations to complete uninstall |
42 | * @throws IntentException if issues are encountered while uninstalling the intent | 42 | * @throws IntentException if issues are encountered while uninstalling the intent |
43 | */ | 43 | */ |
44 | - List<Set<FlowRuleOperation>> uninstall(T intent); | 44 | + List<Collection<FlowRuleOperation>> uninstall(T intent); |
45 | 45 | ||
46 | /** | 46 | /** |
47 | * Replaces the specified intent with a new one in the environment. | 47 | * Replaces the specified intent with a new one in the environment. |
... | @@ -51,6 +51,6 @@ public interface IntentInstaller<T extends Intent> { | ... | @@ -51,6 +51,6 @@ public interface IntentInstaller<T extends Intent> { |
51 | * @return flow rule operations to complete the replace | 51 | * @return flow rule operations to complete the replace |
52 | * @throws IntentException if issues are encountered while uninstalling the intent | 52 | * @throws IntentException if issues are encountered while uninstalling the intent |
53 | */ | 53 | */ |
54 | - List<Set<FlowRuleOperation>> replace(T oldIntent, T newIntent); | 54 | + List<Collection<FlowRuleOperation>> replace(T oldIntent, T newIntent); |
55 | 55 | ||
56 | } | 56 | } | ... | ... |
... | @@ -15,28 +15,23 @@ | ... | @@ -15,28 +15,23 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent; | 16 | package org.onosproject.net.intent; |
17 | 17 | ||
18 | -import static org.junit.Assert.assertEquals; | 18 | +import org.junit.After; |
19 | -import static org.junit.Assert.assertFalse; | 19 | +import org.junit.Before; |
20 | -import static org.junit.Assert.assertNull; | 20 | +import org.junit.Test; |
21 | -import static org.junit.Assert.fail; | 21 | +import org.onosproject.core.IdGenerator; |
22 | -import static org.onosproject.net.intent.IntentEvent.Type.FAILED; | 22 | +import org.onosproject.net.flow.FlowRuleOperation; |
23 | -import static org.onosproject.net.intent.IntentEvent.Type.INSTALLED; | 23 | +import org.onosproject.net.resource.LinkResourceAllocations; |
24 | -import static org.onosproject.net.intent.IntentEvent.Type.INSTALL_REQ; | ||
25 | -import static org.onosproject.net.intent.IntentEvent.Type.WITHDRAWN; | ||
26 | 24 | ||
27 | import java.util.ArrayList; | 25 | import java.util.ArrayList; |
28 | import java.util.Arrays; | 26 | import java.util.Arrays; |
27 | +import java.util.Collection; | ||
29 | import java.util.Collections; | 28 | import java.util.Collections; |
30 | import java.util.Iterator; | 29 | import java.util.Iterator; |
31 | import java.util.List; | 30 | import java.util.List; |
32 | import java.util.Set; | 31 | import java.util.Set; |
33 | 32 | ||
34 | -import org.junit.After; | 33 | +import static org.junit.Assert.*; |
35 | -import org.junit.Before; | 34 | +import static org.onosproject.net.intent.IntentEvent.Type.*; |
36 | -import org.junit.Test; | ||
37 | -import org.onosproject.core.IdGenerator; | ||
38 | -import org.onosproject.net.flow.FlowRuleOperation; | ||
39 | -import org.onosproject.net.resource.LinkResourceAllocations; | ||
40 | 35 | ||
41 | /** | 36 | /** |
42 | * Suite of tests for the intent service contract. | 37 | * Suite of tests for the intent service contract. |
... | @@ -319,7 +314,7 @@ public class IntentServiceTest { | ... | @@ -319,7 +314,7 @@ public class IntentServiceTest { |
319 | } | 314 | } |
320 | 315 | ||
321 | @Override | 316 | @Override |
322 | - public List<Set<FlowRuleOperation>> install(TestInstallableIntent intent) { | 317 | + public List<Collection<FlowRuleOperation>> install(TestInstallableIntent intent) { |
323 | if (fail) { | 318 | if (fail) { |
324 | throw new IntentException("install failed by design"); | 319 | throw new IntentException("install failed by design"); |
325 | } | 320 | } |
... | @@ -327,7 +322,7 @@ public class IntentServiceTest { | ... | @@ -327,7 +322,7 @@ public class IntentServiceTest { |
327 | } | 322 | } |
328 | 323 | ||
329 | @Override | 324 | @Override |
330 | - public List<Set<FlowRuleOperation>> uninstall(TestInstallableIntent intent) { | 325 | + public List<Collection<FlowRuleOperation>> uninstall(TestInstallableIntent intent) { |
331 | if (fail) { | 326 | if (fail) { |
332 | throw new IntentException("remove failed by design"); | 327 | throw new IntentException("remove failed by design"); |
333 | } | 328 | } |
... | @@ -335,7 +330,7 @@ public class IntentServiceTest { | ... | @@ -335,7 +330,7 @@ public class IntentServiceTest { |
335 | } | 330 | } |
336 | 331 | ||
337 | @Override | 332 | @Override |
338 | - public List<Set<FlowRuleOperation>> replace(TestInstallableIntent intent, | 333 | + public List<Collection<FlowRuleOperation>> replace(TestInstallableIntent intent, |
339 | TestInstallableIntent newIntent) { | 334 | TestInstallableIntent newIntent) { |
340 | return null; | 335 | return null; |
341 | } | 336 | } | ... | ... |
... | @@ -15,23 +15,8 @@ | ... | @@ -15,23 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl; | 16 | package org.onosproject.net.intent.impl; |
17 | 17 | ||
18 | -import java.util.ArrayList; | 18 | +import com.google.common.collect.ImmutableList; |
19 | -import java.util.Collection; | 19 | +import com.google.common.collect.ImmutableMap; |
20 | -import java.util.Collections; | ||
21 | -import java.util.EnumSet; | ||
22 | -import java.util.Iterator; | ||
23 | -import java.util.List; | ||
24 | -import java.util.Map; | ||
25 | -import java.util.Optional; | ||
26 | -import java.util.Set; | ||
27 | -import java.util.concurrent.Callable; | ||
28 | -import java.util.concurrent.ConcurrentHashMap; | ||
29 | -import java.util.concurrent.ConcurrentMap; | ||
30 | -import java.util.concurrent.ExecutionException; | ||
31 | -import java.util.concurrent.ExecutorService; | ||
32 | -import java.util.concurrent.Future; | ||
33 | -import java.util.stream.Collectors; | ||
34 | - | ||
35 | import org.apache.felix.scr.annotations.Activate; | 20 | import org.apache.felix.scr.annotations.Activate; |
36 | import org.apache.felix.scr.annotations.Component; | 21 | import org.apache.felix.scr.annotations.Component; |
37 | import org.apache.felix.scr.annotations.Deactivate; | 22 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -68,8 +53,21 @@ import org.onosproject.net.intent.impl.phase.WithdrawRequest; | ... | @@ -68,8 +53,21 @@ import org.onosproject.net.intent.impl.phase.WithdrawRequest; |
68 | import org.onosproject.net.intent.impl.phase.Withdrawn; | 53 | import org.onosproject.net.intent.impl.phase.Withdrawn; |
69 | import org.slf4j.Logger; | 54 | import org.slf4j.Logger; |
70 | 55 | ||
71 | -import com.google.common.collect.ImmutableList; | 56 | +import java.util.ArrayList; |
72 | -import com.google.common.collect.ImmutableMap; | 57 | +import java.util.Collection; |
58 | +import java.util.Collections; | ||
59 | +import java.util.EnumSet; | ||
60 | +import java.util.Iterator; | ||
61 | +import java.util.List; | ||
62 | +import java.util.Map; | ||
63 | +import java.util.Optional; | ||
64 | +import java.util.concurrent.Callable; | ||
65 | +import java.util.concurrent.ConcurrentHashMap; | ||
66 | +import java.util.concurrent.ConcurrentMap; | ||
67 | +import java.util.concurrent.ExecutionException; | ||
68 | +import java.util.concurrent.ExecutorService; | ||
69 | +import java.util.concurrent.Future; | ||
70 | +import java.util.stream.Collectors; | ||
73 | 71 | ||
74 | import static com.google.common.base.Preconditions.checkNotNull; | 72 | import static com.google.common.base.Preconditions.checkNotNull; |
75 | import static com.google.common.base.Preconditions.checkState; | 73 | import static com.google.common.base.Preconditions.checkState; |
... | @@ -77,11 +75,7 @@ import static java.util.concurrent.Executors.newFixedThreadPool; | ... | @@ -77,11 +75,7 @@ import static java.util.concurrent.Executors.newFixedThreadPool; |
77 | import static java.util.concurrent.Executors.newSingleThreadExecutor; | 75 | import static java.util.concurrent.Executors.newSingleThreadExecutor; |
78 | import static org.onlab.util.Tools.groupedThreads; | 76 | import static org.onlab.util.Tools.groupedThreads; |
79 | import static org.onlab.util.Tools.isNullOrEmpty; | 77 | import static org.onlab.util.Tools.isNullOrEmpty; |
80 | -import static org.onosproject.net.intent.IntentState.FAILED; | 78 | +import static org.onosproject.net.intent.IntentState.*; |
81 | -import static org.onosproject.net.intent.IntentState.INSTALLED; | ||
82 | -import static org.onosproject.net.intent.IntentState.INSTALL_REQ; | ||
83 | -import static org.onosproject.net.intent.IntentState.WITHDRAWN; | ||
84 | -import static org.onosproject.net.intent.IntentState.WITHDRAW_REQ; | ||
85 | import static org.slf4j.LoggerFactory.getLogger; | 79 | import static org.slf4j.LoggerFactory.getLogger; |
86 | 80 | ||
87 | /** | 81 | /** |
... | @@ -310,7 +304,7 @@ public class IntentManager | ... | @@ -310,7 +304,7 @@ public class IntentManager |
310 | oldInstallables.size() == newInstallables.size(), | 304 | oldInstallables.size() == newInstallables.size(), |
311 | "Old and New Intent must have equivalent installable intents."); | 305 | "Old and New Intent must have equivalent installable intents."); |
312 | 306 | ||
313 | - List<List<Set<FlowRuleOperation>>> plans = new ArrayList<>(); | 307 | + List<List<Collection<FlowRuleOperation>>> plans = new ArrayList<>(); |
314 | for (int i = 0; i < newInstallables.size(); i++) { | 308 | for (int i = 0; i < newInstallables.size(); i++) { |
315 | Intent newInstallable = newInstallables.get(i); | 309 | Intent newInstallable = newInstallables.get(i); |
316 | registerSubclassInstallerIfNeeded(newInstallable); | 310 | registerSubclassInstallerIfNeeded(newInstallable); |
... | @@ -369,7 +363,7 @@ public class IntentManager | ... | @@ -369,7 +363,7 @@ public class IntentManager |
369 | // TODO: make this non-public due to short term hack for ONOS-1051 | 363 | // TODO: make this non-public due to short term hack for ONOS-1051 |
370 | public FlowRuleOperations uninstallCoordinate(IntentData current, IntentData pending) { | 364 | public FlowRuleOperations uninstallCoordinate(IntentData current, IntentData pending) { |
371 | List<Intent> installables = current.installables(); | 365 | List<Intent> installables = current.installables(); |
372 | - List<List<Set<FlowRuleOperation>>> plans = new ArrayList<>(); | 366 | + List<List<Collection<FlowRuleOperation>>> plans = new ArrayList<>(); |
373 | for (Intent installable : installables) { | 367 | for (Intent installable : installables) { |
374 | plans.add(getInstaller(installable).uninstall(installable)); | 368 | plans.add(getInstaller(installable).uninstall(installable)); |
375 | trackerService.removeTrackedResources(pending.key(), installable.resources()); | 369 | trackerService.removeTrackedResources(pending.key(), installable.resources()); |
... | @@ -395,20 +389,20 @@ public class IntentManager | ... | @@ -395,20 +389,20 @@ public class IntentManager |
395 | 389 | ||
396 | 390 | ||
397 | // TODO needs tests... or maybe it's just perfect | 391 | // TODO needs tests... or maybe it's just perfect |
398 | - private FlowRuleOperations.Builder merge(List<List<Set<FlowRuleOperation>>> plans) { | 392 | + private FlowRuleOperations.Builder merge(List<List<Collection<FlowRuleOperation>>> plans) { |
399 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); | 393 | FlowRuleOperations.Builder builder = FlowRuleOperations.builder(); |
400 | // Build a batch one stage at a time | 394 | // Build a batch one stage at a time |
401 | for (int stageNumber = 0;; stageNumber++) { | 395 | for (int stageNumber = 0;; stageNumber++) { |
402 | // Get the sub-stage from each plan (List<Set<FlowRuleOperation>) | 396 | // Get the sub-stage from each plan (List<Set<FlowRuleOperation>) |
403 | - for (Iterator<List<Set<FlowRuleOperation>>> itr = plans.iterator(); itr.hasNext();) { | 397 | + for (Iterator<List<Collection<FlowRuleOperation>>> itr = plans.iterator(); itr.hasNext();) { |
404 | - List<Set<FlowRuleOperation>> plan = itr.next(); | 398 | + List<Collection<FlowRuleOperation>> plan = itr.next(); |
405 | if (plan.size() <= stageNumber) { | 399 | if (plan.size() <= stageNumber) { |
406 | // we have consumed all stages from this plan, so remove it | 400 | // we have consumed all stages from this plan, so remove it |
407 | itr.remove(); | 401 | itr.remove(); |
408 | continue; | 402 | continue; |
409 | } | 403 | } |
410 | // write operations from this sub-stage into the builder | 404 | // write operations from this sub-stage into the builder |
411 | - Set<FlowRuleOperation> stage = plan.get(stageNumber); | 405 | + Collection<FlowRuleOperation> stage = plan.get(stageNumber); |
412 | for (FlowRuleOperation entry : stage) { | 406 | for (FlowRuleOperation entry : stage) { |
413 | builder.operation(entry); | 407 | builder.operation(entry); |
414 | } | 408 | } | ... | ... |
... | @@ -15,10 +15,10 @@ | ... | @@ -15,10 +15,10 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl; | 16 | package org.onosproject.net.intent.impl; |
17 | 17 | ||
18 | -import java.util.List; | 18 | +import com.google.common.collect.HashMultimap; |
19 | -import java.util.Set; | 19 | +import com.google.common.collect.ImmutableSet; |
20 | -import java.util.stream.Collectors; | 20 | +import com.google.common.collect.Lists; |
21 | - | 21 | +import com.google.common.collect.SetMultimap; |
22 | import org.apache.felix.scr.annotations.Activate; | 22 | import org.apache.felix.scr.annotations.Activate; |
23 | import org.apache.felix.scr.annotations.Component; | 23 | import org.apache.felix.scr.annotations.Component; |
24 | import org.apache.felix.scr.annotations.Deactivate; | 24 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -42,10 +42,10 @@ import org.onosproject.net.intent.IntentExtensionService; | ... | @@ -42,10 +42,10 @@ import org.onosproject.net.intent.IntentExtensionService; |
42 | import org.onosproject.net.intent.IntentInstaller; | 42 | import org.onosproject.net.intent.IntentInstaller; |
43 | import org.onosproject.net.intent.LinkCollectionIntent; | 43 | import org.onosproject.net.intent.LinkCollectionIntent; |
44 | 44 | ||
45 | -import com.google.common.collect.HashMultimap; | 45 | +import java.util.Collection; |
46 | -import com.google.common.collect.ImmutableSet; | 46 | +import java.util.List; |
47 | -import com.google.common.collect.Lists; | 47 | +import java.util.Set; |
48 | -import com.google.common.collect.SetMultimap; | 48 | +import java.util.stream.Collectors; |
49 | 49 | ||
50 | /** | 50 | /** |
51 | * Installer for {@link org.onosproject.net.intent.LinkCollectionIntent} path | 51 | * Installer for {@link org.onosproject.net.intent.LinkCollectionIntent} path |
... | @@ -75,18 +75,19 @@ public class LinkCollectionIntentInstaller | ... | @@ -75,18 +75,19 @@ public class LinkCollectionIntentInstaller |
75 | } | 75 | } |
76 | 76 | ||
77 | @Override | 77 | @Override |
78 | - public List<Set<FlowRuleOperation>> install(LinkCollectionIntent intent) { | 78 | + public List<Collection<FlowRuleOperation>> install(LinkCollectionIntent intent) { |
79 | return generateBatchOperations(intent, FlowRuleOperation.Type.ADD); | 79 | return generateBatchOperations(intent, FlowRuleOperation.Type.ADD); |
80 | } | 80 | } |
81 | 81 | ||
82 | @Override | 82 | @Override |
83 | - public List<Set<FlowRuleOperation>> uninstall(LinkCollectionIntent intent) { | 83 | + public List<Collection<FlowRuleOperation>> uninstall(LinkCollectionIntent intent) { |
84 | return generateBatchOperations(intent, FlowRuleOperation.Type.REMOVE); | 84 | return generateBatchOperations(intent, FlowRuleOperation.Type.REMOVE); |
85 | } | 85 | } |
86 | 86 | ||
87 | - private List<Set<FlowRuleOperation>> generateBatchOperations( | 87 | + private List<Collection<FlowRuleOperation>> generateBatchOperations( |
88 | LinkCollectionIntent intent, FlowRuleOperation.Type operation) { | 88 | LinkCollectionIntent intent, FlowRuleOperation.Type operation) { |
89 | 89 | ||
90 | + //TODO do we need a set here? | ||
90 | SetMultimap<DeviceId, PortNumber> outputPorts = HashMultimap.create(); | 91 | SetMultimap<DeviceId, PortNumber> outputPorts = HashMultimap.create(); |
91 | 92 | ||
92 | for (Link link : intent.links()) { | 93 | for (Link link : intent.links()) { |
... | @@ -121,10 +122,10 @@ public class LinkCollectionIntentInstaller | ... | @@ -121,10 +122,10 @@ public class LinkCollectionIntentInstaller |
121 | } | 122 | } |
122 | 123 | ||
123 | @Override | 124 | @Override |
124 | - public List<Set<FlowRuleOperation>> replace(LinkCollectionIntent oldIntent, | 125 | + public List<Collection<FlowRuleOperation>> replace(LinkCollectionIntent oldIntent, |
125 | LinkCollectionIntent newIntent) { | 126 | LinkCollectionIntent newIntent) { |
126 | // FIXME: implement this in a more intelligent/less brute force way | 127 | // FIXME: implement this in a more intelligent/less brute force way |
127 | - List<Set<FlowRuleOperation>> batches = Lists.newArrayList(); | 128 | + List<Collection<FlowRuleOperation>> batches = Lists.newArrayList(); |
128 | batches.addAll(uninstall(oldIntent)); | 129 | batches.addAll(uninstall(oldIntent)); |
129 | batches.addAll(install(newIntent)); | 130 | batches.addAll(install(newIntent)); |
130 | return batches; | 131 | return batches; | ... | ... |
1 | package org.onosproject.net.intent.impl; | 1 | package org.onosproject.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.Iterator; | 3 | +import com.google.common.collect.ImmutableSet; |
4 | -import java.util.List; | 4 | +import com.google.common.collect.Lists; |
5 | -import java.util.Set; | 5 | +import com.google.common.collect.Sets; |
6 | - | ||
7 | import org.apache.felix.scr.annotations.Activate; | 6 | import org.apache.felix.scr.annotations.Activate; |
8 | import org.apache.felix.scr.annotations.Component; | 7 | import org.apache.felix.scr.annotations.Component; |
9 | import org.apache.felix.scr.annotations.Deactivate; | 8 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -40,9 +39,10 @@ import org.onosproject.net.resource.ResourceAllocation; | ... | @@ -40,9 +39,10 @@ import org.onosproject.net.resource.ResourceAllocation; |
40 | import org.onosproject.net.resource.ResourceType; | 39 | import org.onosproject.net.resource.ResourceType; |
41 | import org.slf4j.Logger; | 40 | import org.slf4j.Logger; |
42 | 41 | ||
43 | -import com.google.common.collect.ImmutableSet; | 42 | +import java.util.Collection; |
44 | -import com.google.common.collect.Lists; | 43 | +import java.util.Iterator; |
45 | -import com.google.common.collect.Sets; | 44 | +import java.util.List; |
45 | +import java.util.Set; | ||
46 | 46 | ||
47 | import static com.google.common.base.Preconditions.checkNotNull; | 47 | import static com.google.common.base.Preconditions.checkNotNull; |
48 | import static org.slf4j.LoggerFactory.getLogger; | 48 | import static org.slf4j.LoggerFactory.getLogger; |
... | @@ -81,14 +81,14 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> | ... | @@ -81,14 +81,14 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> |
81 | } | 81 | } |
82 | 82 | ||
83 | @Override | 83 | @Override |
84 | - public List<Set<FlowRuleOperation>> install(MplsPathIntent intent) { | 84 | + public List<Collection<FlowRuleOperation>> install(MplsPathIntent intent) { |
85 | LinkResourceAllocations allocations = assignMplsLabel(intent); | 85 | LinkResourceAllocations allocations = assignMplsLabel(intent); |
86 | return generateRules(intent, allocations, FlowRuleOperation.Type.ADD); | 86 | return generateRules(intent, allocations, FlowRuleOperation.Type.ADD); |
87 | 87 | ||
88 | } | 88 | } |
89 | 89 | ||
90 | @Override | 90 | @Override |
91 | - public List<Set<FlowRuleOperation>> uninstall(MplsPathIntent intent) { | 91 | + public List<Collection<FlowRuleOperation>> uninstall(MplsPathIntent intent) { |
92 | LinkResourceAllocations allocations = resourceService | 92 | LinkResourceAllocations allocations = resourceService |
93 | .getAllocations(intent.id()); | 93 | .getAllocations(intent.id()); |
94 | resourceService.releaseResources(allocations); | 94 | resourceService.releaseResources(allocations); |
... | @@ -97,10 +97,10 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> | ... | @@ -97,10 +97,10 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> |
97 | } | 97 | } |
98 | 98 | ||
99 | @Override | 99 | @Override |
100 | - public List<Set<FlowRuleOperation>> replace(MplsPathIntent oldIntent, | 100 | + public List<Collection<FlowRuleOperation>> replace(MplsPathIntent oldIntent, |
101 | MplsPathIntent newIntent) { | 101 | MplsPathIntent newIntent) { |
102 | - | 102 | + //FIXME this is brute force |
103 | - List<Set<FlowRuleOperation>> batches = Lists.newArrayList(); | 103 | + List<Collection<FlowRuleOperation>> batches = Lists.newArrayList(); |
104 | batches.addAll(uninstall(oldIntent)); | 104 | batches.addAll(uninstall(oldIntent)); |
105 | batches.addAll(install(newIntent)); | 105 | batches.addAll(install(newIntent)); |
106 | return batches; | 106 | return batches; |
... | @@ -140,7 +140,7 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> | ... | @@ -140,7 +140,7 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> |
140 | return null; | 140 | return null; |
141 | } | 141 | } |
142 | 142 | ||
143 | - private List<Set<FlowRuleOperation>> generateRules(MplsPathIntent intent, | 143 | + private List<Collection<FlowRuleOperation>> generateRules(MplsPathIntent intent, |
144 | LinkResourceAllocations allocations, | 144 | LinkResourceAllocations allocations, |
145 | FlowRuleOperation.Type operation) { | 145 | FlowRuleOperation.Type operation) { |
146 | 146 | ||
... | @@ -150,7 +150,7 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> | ... | @@ -150,7 +150,7 @@ public class MplsPathIntentInstaller implements IntentInstaller<MplsPathIntent> |
150 | 150 | ||
151 | Link link = links.next(); | 151 | Link link = links.next(); |
152 | // List of flow rules to be installed | 152 | // List of flow rules to be installed |
153 | - Set<FlowRuleOperation> rules = Sets.newHashSet(); | 153 | + List<FlowRuleOperation> rules = Lists.newLinkedList(); |
154 | 154 | ||
155 | // Ingress traffic | 155 | // Ingress traffic |
156 | // Get the new MPLS label | 156 | // Get the new MPLS label | ... | ... |
... | @@ -49,10 +49,10 @@ import static com.google.common.base.Preconditions.checkArgument; | ... | @@ -49,10 +49,10 @@ import static com.google.common.base.Preconditions.checkArgument; |
49 | import static com.google.common.base.Preconditions.checkNotNull; | 49 | import static com.google.common.base.Preconditions.checkNotNull; |
50 | import static com.google.common.collect.Multimaps.synchronizedSetMultimap; | 50 | import static com.google.common.collect.Multimaps.synchronizedSetMultimap; |
51 | import static java.util.concurrent.Executors.newSingleThreadExecutor; | 51 | import static java.util.concurrent.Executors.newSingleThreadExecutor; |
52 | +import static org.onlab.util.Tools.namedThreads; | ||
52 | import static org.onosproject.net.LinkKey.linkKey; | 53 | import static org.onosproject.net.LinkKey.linkKey; |
53 | import static org.onosproject.net.link.LinkEvent.Type.LINK_REMOVED; | 54 | import static org.onosproject.net.link.LinkEvent.Type.LINK_REMOVED; |
54 | import static org.onosproject.net.link.LinkEvent.Type.LINK_UPDATED; | 55 | import static org.onosproject.net.link.LinkEvent.Type.LINK_UPDATED; |
55 | -import static org.onlab.util.Tools.namedThreads; | ||
56 | import static org.slf4j.LoggerFactory.getLogger; | 56 | import static org.slf4j.LoggerFactory.getLogger; |
57 | 57 | ||
58 | /** | 58 | /** |
... | @@ -66,6 +66,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { | ... | @@ -66,6 +66,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { |
66 | private final Logger log = getLogger(getClass()); | 66 | private final Logger log = getLogger(getClass()); |
67 | 67 | ||
68 | private final SetMultimap<LinkKey, Key> intentsByLink = | 68 | private final SetMultimap<LinkKey, Key> intentsByLink = |
69 | + //TODO this could be slow as a point of synchronization | ||
69 | synchronizedSetMultimap(HashMultimap.<LinkKey, Key>create()); | 70 | synchronizedSetMultimap(HashMultimap.<LinkKey, Key>create()); |
70 | 71 | ||
71 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 72 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ... | ... |
... | @@ -15,9 +15,8 @@ | ... | @@ -15,9 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl; | 16 | package org.onosproject.net.intent.impl; |
17 | 17 | ||
18 | -import java.util.List; | 18 | +import com.google.common.collect.ImmutableSet; |
19 | -import java.util.Set; | 19 | +import com.google.common.collect.Lists; |
20 | - | ||
21 | import org.apache.felix.scr.annotations.Activate; | 20 | import org.apache.felix.scr.annotations.Activate; |
22 | import org.apache.felix.scr.annotations.Component; | 21 | import org.apache.felix.scr.annotations.Component; |
23 | import org.apache.felix.scr.annotations.Deactivate; | 22 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -49,9 +48,8 @@ import org.onosproject.net.resource.ResourceType; | ... | @@ -49,9 +48,8 @@ import org.onosproject.net.resource.ResourceType; |
49 | import org.onosproject.net.topology.TopologyService; | 48 | import org.onosproject.net.topology.TopologyService; |
50 | import org.slf4j.Logger; | 49 | import org.slf4j.Logger; |
51 | 50 | ||
52 | -import com.google.common.collect.ImmutableSet; | 51 | +import java.util.Collection; |
53 | -import com.google.common.collect.Lists; | 52 | +import java.util.List; |
54 | -import com.google.common.collect.Sets; | ||
55 | 53 | ||
56 | import static org.onosproject.net.flow.DefaultTrafficTreatment.builder; | 54 | import static org.onosproject.net.flow.DefaultTrafficTreatment.builder; |
57 | import static org.slf4j.LoggerFactory.getLogger; | 55 | import static org.slf4j.LoggerFactory.getLogger; |
... | @@ -94,24 +92,24 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn | ... | @@ -94,24 +92,24 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn |
94 | } | 92 | } |
95 | 93 | ||
96 | @Override | 94 | @Override |
97 | - public List<Set<FlowRuleOperation>> install(OpticalPathIntent intent) { | 95 | + public List<Collection<FlowRuleOperation>> install(OpticalPathIntent intent) { |
98 | LinkResourceAllocations allocations = assignWavelength(intent); | 96 | LinkResourceAllocations allocations = assignWavelength(intent); |
99 | return generateRules(intent, allocations, FlowRuleOperation.Type.ADD); | 97 | return generateRules(intent, allocations, FlowRuleOperation.Type.ADD); |
100 | } | 98 | } |
101 | 99 | ||
102 | @Override | 100 | @Override |
103 | - public List<Set<FlowRuleOperation>> uninstall(OpticalPathIntent intent) { | 101 | + public List<Collection<FlowRuleOperation>> uninstall(OpticalPathIntent intent) { |
104 | LinkResourceAllocations allocations = resourceService.getAllocations(intent.id()); | 102 | LinkResourceAllocations allocations = resourceService.getAllocations(intent.id()); |
105 | - List<Set<FlowRuleOperation>> rules = generateRules(intent, allocations, FlowRuleOperation.Type.REMOVE); | 103 | + List<Collection<FlowRuleOperation>> rules = generateRules(intent, allocations, FlowRuleOperation.Type.REMOVE); |
106 | log.info("uninstall rules: {}", rules); | 104 | log.info("uninstall rules: {}", rules); |
107 | return rules; | 105 | return rules; |
108 | } | 106 | } |
109 | 107 | ||
110 | @Override | 108 | @Override |
111 | - public List<Set<FlowRuleOperation>> replace(OpticalPathIntent oldIntent, | 109 | + public List<Collection<FlowRuleOperation>> replace(OpticalPathIntent oldIntent, |
112 | OpticalPathIntent newIntent) { | 110 | OpticalPathIntent newIntent) { |
113 | // FIXME: implement this | 111 | // FIXME: implement this |
114 | - List<Set<FlowRuleOperation>> batches = Lists.newArrayList(); | 112 | + List<Collection<FlowRuleOperation>> batches = Lists.newArrayList(); |
115 | batches.addAll(uninstall(oldIntent)); | 113 | batches.addAll(uninstall(oldIntent)); |
116 | batches.addAll(install(newIntent)); | 114 | batches.addAll(install(newIntent)); |
117 | return batches; | 115 | return batches; |
... | @@ -125,13 +123,13 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn | ... | @@ -125,13 +123,13 @@ public class OpticalPathIntentInstaller implements IntentInstaller<OpticalPathIn |
125 | return retLambda; | 123 | return retLambda; |
126 | } | 124 | } |
127 | 125 | ||
128 | - private List<Set<FlowRuleOperation>> generateRules(OpticalPathIntent intent, | 126 | + private List<Collection<FlowRuleOperation>> generateRules(OpticalPathIntent intent, |
129 | LinkResourceAllocations allocations, | 127 | LinkResourceAllocations allocations, |
130 | FlowRuleOperation.Type operation) { | 128 | FlowRuleOperation.Type operation) { |
131 | TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder(); | 129 | TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder(); |
132 | selectorBuilder.matchInPort(intent.src().port()); | 130 | selectorBuilder.matchInPort(intent.src().port()); |
133 | 131 | ||
134 | - Set<FlowRuleOperation> rules = Sets.newHashSet(); | 132 | + List<FlowRuleOperation> rules = Lists.newLinkedList(); |
135 | ConnectPoint prev = intent.src(); | 133 | ConnectPoint prev = intent.src(); |
136 | 134 | ||
137 | //FIXME check for null allocations | 135 | //FIXME check for null allocations | ... | ... |
... | @@ -15,10 +15,8 @@ | ... | @@ -15,10 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl; | 16 | package org.onosproject.net.intent.impl; |
17 | 17 | ||
18 | -import java.util.Iterator; | 18 | +import com.google.common.collect.ImmutableSet; |
19 | -import java.util.List; | 19 | +import com.google.common.collect.Lists; |
20 | -import java.util.Set; | ||
21 | - | ||
22 | import org.apache.felix.scr.annotations.Activate; | 20 | import org.apache.felix.scr.annotations.Activate; |
23 | import org.apache.felix.scr.annotations.Component; | 21 | import org.apache.felix.scr.annotations.Component; |
24 | import org.apache.felix.scr.annotations.Deactivate; | 22 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -45,9 +43,9 @@ import org.onosproject.net.resource.LinkResourceRequest; | ... | @@ -45,9 +43,9 @@ import org.onosproject.net.resource.LinkResourceRequest; |
45 | import org.onosproject.net.resource.LinkResourceService; | 43 | import org.onosproject.net.resource.LinkResourceService; |
46 | import org.slf4j.Logger; | 44 | import org.slf4j.Logger; |
47 | 45 | ||
48 | -import com.google.common.collect.ImmutableSet; | 46 | +import java.util.Collection; |
49 | -import com.google.common.collect.Lists; | 47 | +import java.util.Iterator; |
50 | -import com.google.common.collect.Sets; | 48 | +import java.util.List; |
51 | 49 | ||
52 | import static org.onosproject.net.flow.DefaultTrafficTreatment.builder; | 50 | import static org.onosproject.net.flow.DefaultTrafficTreatment.builder; |
53 | import static org.slf4j.LoggerFactory.getLogger; | 51 | import static org.slf4j.LoggerFactory.getLogger; |
... | @@ -83,14 +81,14 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { | ... | @@ -83,14 +81,14 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { |
83 | } | 81 | } |
84 | 82 | ||
85 | @Override | 83 | @Override |
86 | - public List<Set<FlowRuleOperation>> install(PathIntent intent) { | 84 | + public List<Collection<FlowRuleOperation>> install(PathIntent intent) { |
87 | LinkResourceAllocations allocations = allocateResources(intent); | 85 | LinkResourceAllocations allocations = allocateResources(intent); |
88 | 86 | ||
89 | TrafficSelector.Builder builder = | 87 | TrafficSelector.Builder builder = |
90 | DefaultTrafficSelector.builder(intent.selector()); | 88 | DefaultTrafficSelector.builder(intent.selector()); |
91 | Iterator<Link> links = intent.path().links().iterator(); | 89 | Iterator<Link> links = intent.path().links().iterator(); |
92 | ConnectPoint prev = links.next().dst(); | 90 | ConnectPoint prev = links.next().dst(); |
93 | - Set<FlowRuleOperation> rules = Sets.newHashSet(); | 91 | + List<FlowRuleOperation> rules = Lists.newLinkedList(); |
94 | // TODO Generate multiple batches | 92 | // TODO Generate multiple batches |
95 | while (links.hasNext()) { | 93 | while (links.hasNext()) { |
96 | builder.matchInPort(prev.port()); | 94 | builder.matchInPort(prev.port()); |
... | @@ -113,13 +111,13 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { | ... | @@ -113,13 +111,13 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { |
113 | } | 111 | } |
114 | 112 | ||
115 | @Override | 113 | @Override |
116 | - public List<Set<FlowRuleOperation>> uninstall(PathIntent intent) { | 114 | + public List<Collection<FlowRuleOperation>> uninstall(PathIntent intent) { |
117 | deallocateResources(intent); | 115 | deallocateResources(intent); |
118 | TrafficSelector.Builder builder = | 116 | TrafficSelector.Builder builder = |
119 | DefaultTrafficSelector.builder(intent.selector()); | 117 | DefaultTrafficSelector.builder(intent.selector()); |
120 | Iterator<Link> links = intent.path().links().iterator(); | 118 | Iterator<Link> links = intent.path().links().iterator(); |
121 | ConnectPoint prev = links.next().dst(); | 119 | ConnectPoint prev = links.next().dst(); |
122 | - Set<FlowRuleOperation> rules = Sets.newHashSet(); | 120 | + List<FlowRuleOperation> rules = Lists.newLinkedList(); |
123 | // TODO Generate multiple batches | 121 | // TODO Generate multiple batches |
124 | while (links.hasNext()) { | 122 | while (links.hasNext()) { |
125 | builder.matchInPort(prev.port()); | 123 | builder.matchInPort(prev.port()); |
... | @@ -140,9 +138,9 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { | ... | @@ -140,9 +138,9 @@ public class PathIntentInstaller implements IntentInstaller<PathIntent> { |
140 | } | 138 | } |
141 | 139 | ||
142 | @Override | 140 | @Override |
143 | - public List<Set<FlowRuleOperation>> replace(PathIntent oldIntent, PathIntent newIntent) { | 141 | + public List<Collection<FlowRuleOperation>> replace(PathIntent oldIntent, PathIntent newIntent) { |
144 | // FIXME: implement this | 142 | // FIXME: implement this |
145 | - List<Set<FlowRuleOperation>> batches = Lists.newArrayList(); | 143 | + List<Collection<FlowRuleOperation>> batches = Lists.newArrayList(); |
146 | batches.addAll(uninstall(oldIntent)); | 144 | batches.addAll(uninstall(oldIntent)); |
147 | batches.addAll(install(newIntent)); | 145 | batches.addAll(install(newIntent)); |
148 | return batches; | 146 | return batches; | ... | ... |
... | @@ -194,7 +194,7 @@ public class IntentManagerTest { | ... | @@ -194,7 +194,7 @@ public class IntentManagerTest { |
194 | 194 | ||
195 | private static class TestIntentInstaller implements IntentInstaller<MockInstallableIntent> { | 195 | private static class TestIntentInstaller implements IntentInstaller<MockInstallableIntent> { |
196 | @Override | 196 | @Override |
197 | - public List<Set<org.onosproject.net.flow.FlowRuleOperation>> install(MockInstallableIntent intent) { | 197 | + public List<Collection<org.onosproject.net.flow.FlowRuleOperation>> install(MockInstallableIntent intent) { |
198 | FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue()); | 198 | FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue()); |
199 | Set<FlowRuleOperation> rules = ImmutableSet.of( | 199 | Set<FlowRuleOperation> rules = ImmutableSet.of( |
200 | new FlowRuleOperation(fr, FlowRuleOperation.Type.ADD)); | 200 | new FlowRuleOperation(fr, FlowRuleOperation.Type.ADD)); |
... | @@ -202,7 +202,7 @@ public class IntentManagerTest { | ... | @@ -202,7 +202,7 @@ public class IntentManagerTest { |
202 | } | 202 | } |
203 | 203 | ||
204 | @Override | 204 | @Override |
205 | - public List<Set<FlowRuleOperation>> uninstall(MockInstallableIntent intent) { | 205 | + public List<Collection<FlowRuleOperation>> uninstall(MockInstallableIntent intent) { |
206 | FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue()); | 206 | FlowRule fr = new IntentTestsMocks.MockFlowRule(intent.number().intValue()); |
207 | Set<FlowRuleOperation> rules = ImmutableSet.of( | 207 | Set<FlowRuleOperation> rules = ImmutableSet.of( |
208 | new FlowRuleOperation(fr, FlowRuleOperation.Type.REMOVE)); | 208 | new FlowRuleOperation(fr, FlowRuleOperation.Type.REMOVE)); |
... | @@ -210,7 +210,8 @@ public class IntentManagerTest { | ... | @@ -210,7 +210,8 @@ public class IntentManagerTest { |
210 | } | 210 | } |
211 | 211 | ||
212 | @Override | 212 | @Override |
213 | - public List<Set<FlowRuleOperation>> replace(MockInstallableIntent oldIntent, MockInstallableIntent newIntent) { | 213 | + public List<Collection<FlowRuleOperation>> replace(MockInstallableIntent oldIntent, |
214 | + MockInstallableIntent newIntent) { | ||
214 | FlowRule fr = new IntentTestsMocks.MockFlowRule(oldIntent.number().intValue()); | 215 | FlowRule fr = new IntentTestsMocks.MockFlowRule(oldIntent.number().intValue()); |
215 | FlowRule fr2 = new IntentTestsMocks.MockFlowRule(newIntent.number().intValue()); | 216 | FlowRule fr2 = new IntentTestsMocks.MockFlowRule(newIntent.number().intValue()); |
216 | Set<FlowRuleOperation> rules = ImmutableSet.of( | 217 | Set<FlowRuleOperation> rules = ImmutableSet.of( |
... | @@ -222,17 +223,18 @@ public class IntentManagerTest { | ... | @@ -222,17 +223,18 @@ public class IntentManagerTest { |
222 | 223 | ||
223 | private static class TestIntentErrorInstaller implements IntentInstaller<MockInstallableIntent> { | 224 | private static class TestIntentErrorInstaller implements IntentInstaller<MockInstallableIntent> { |
224 | @Override | 225 | @Override |
225 | - public List<Set<FlowRuleOperation>> install(MockInstallableIntent intent) { | 226 | + public List<Collection<FlowRuleOperation>> install(MockInstallableIntent intent) { |
226 | throw new IntentInstallationException("install() always fails"); | 227 | throw new IntentInstallationException("install() always fails"); |
227 | } | 228 | } |
228 | 229 | ||
229 | @Override | 230 | @Override |
230 | - public List<Set<FlowRuleOperation>> uninstall(MockInstallableIntent intent) { | 231 | + public List<Collection<FlowRuleOperation>> uninstall(MockInstallableIntent intent) { |
231 | throw new IntentRemovalException("uninstall() always fails"); | 232 | throw new IntentRemovalException("uninstall() always fails"); |
232 | } | 233 | } |
233 | 234 | ||
234 | @Override | 235 | @Override |
235 | - public List<Set<FlowRuleOperation>> replace(MockInstallableIntent oldIntent, MockInstallableIntent newIntent) { | 236 | + public List<Collection<FlowRuleOperation>> replace(MockInstallableIntent oldIntent, |
237 | + MockInstallableIntent newIntent) { | ||
236 | throw new IntentInstallationException("replace() always fails"); | 238 | throw new IntentInstallationException("replace() always fails"); |
237 | } | 239 | } |
238 | } | 240 | } | ... | ... |
... | @@ -15,10 +15,6 @@ | ... | @@ -15,10 +15,6 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.intent.impl; | 16 | package org.onosproject.net.intent.impl; |
17 | 17 | ||
18 | -import java.util.LinkedList; | ||
19 | -import java.util.List; | ||
20 | -import java.util.Set; | ||
21 | - | ||
22 | import org.junit.Test; | 18 | import org.junit.Test; |
23 | import org.onosproject.net.flow.FlowRuleOperation; | 19 | import org.onosproject.net.flow.FlowRuleOperation; |
24 | import org.onosproject.net.flow.TrafficSelector; | 20 | import org.onosproject.net.flow.TrafficSelector; |
... | @@ -35,11 +31,12 @@ import org.onosproject.net.resource.Bandwidth; | ... | @@ -35,11 +31,12 @@ import org.onosproject.net.resource.Bandwidth; |
35 | import org.onosproject.net.resource.Lambda; | 31 | import org.onosproject.net.resource.Lambda; |
36 | import org.onosproject.net.resource.LinkResourceService; | 32 | import org.onosproject.net.resource.LinkResourceService; |
37 | 33 | ||
34 | +import java.util.Collection; | ||
35 | +import java.util.LinkedList; | ||
36 | +import java.util.List; | ||
37 | + | ||
38 | import static org.hamcrest.MatcherAssert.assertThat; | 38 | import static org.hamcrest.MatcherAssert.assertThat; |
39 | -import static org.hamcrest.Matchers.containsString; | 39 | +import static org.hamcrest.Matchers.*; |
40 | -import static org.hamcrest.Matchers.hasSize; | ||
41 | -import static org.hamcrest.Matchers.instanceOf; | ||
42 | -import static org.hamcrest.Matchers.notNullValue; | ||
43 | import static org.junit.Assert.fail; | 40 | import static org.junit.Assert.fail; |
44 | import static org.onosproject.net.NetTestTools.APP_ID; | 41 | import static org.onosproject.net.NetTestTools.APP_ID; |
45 | import static org.onosproject.net.NetTestTools.connectPoint; | 42 | import static org.onosproject.net.NetTestTools.connectPoint; |
... | @@ -99,7 +96,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { | ... | @@ -99,7 +96,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { |
99 | * @param resourceService service to use for resource allocation requests | 96 | * @param resourceService service to use for resource allocation requests |
100 | * @return fow rule entries | 97 | * @return fow rule entries |
101 | */ | 98 | */ |
102 | - private List<Set<FlowRuleOperation>> installIntents(List<Intent> compiledIntents, | 99 | + private List<Collection<FlowRuleOperation>> installIntents(List<Intent> compiledIntents, |
103 | LinkResourceService resourceService) { | 100 | LinkResourceService resourceService) { |
104 | final PathIntent path = (PathIntent) compiledIntents.get(0); | 101 | final PathIntent path = (PathIntent) compiledIntents.get(0); |
105 | 102 | ||
... | @@ -193,7 +190,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { | ... | @@ -193,7 +190,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { |
193 | assertThat(compiledIntents, notNullValue()); | 190 | assertThat(compiledIntents, notNullValue()); |
194 | assertThat(compiledIntents, hasSize(1)); | 191 | assertThat(compiledIntents, hasSize(1)); |
195 | 192 | ||
196 | - final List<Set<FlowRuleOperation>> flowOperations = | 193 | + final List<Collection<FlowRuleOperation>> flowOperations = |
197 | installIntents(compiledIntents, resourceService); | 194 | installIntents(compiledIntents, resourceService); |
198 | 195 | ||
199 | assertThat(flowOperations, notNullValue()); | 196 | assertThat(flowOperations, notNullValue()); |
... | @@ -242,7 +239,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { | ... | @@ -242,7 +239,7 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { |
242 | assertThat(compiledIntents, notNullValue()); | 239 | assertThat(compiledIntents, notNullValue()); |
243 | assertThat(compiledIntents, hasSize(1)); | 240 | assertThat(compiledIntents, hasSize(1)); |
244 | 241 | ||
245 | - final List<Set<FlowRuleOperation>> flowOperations = | 242 | + final List<Collection<FlowRuleOperation>> flowOperations = |
246 | installIntents(compiledIntents, resourceService); | 243 | installIntents(compiledIntents, resourceService); |
247 | 244 | ||
248 | assertThat(flowOperations, notNullValue()); | 245 | assertThat(flowOperations, notNullValue()); | ... | ... |
-
Please register or login to post a comment