Committed by
Ray Milkey
Remove dependency on PointToPointIntentCompiler
Create an installable intent, not relying on an IntentCompiler. This change enables IntentCompilers to be moved to a dedicated package. Reference: ONOS-1066 Change-Id: Ie5bca33720232afaa4d6642d4f9fda933f6d00e3
Showing
2 changed files
with
51 additions
and
40 deletions
This diff is collapsed. Click to expand it.
| ... | @@ -36,7 +36,7 @@ import org.onosproject.net.resource.Bandwidth; | ... | @@ -36,7 +36,7 @@ import org.onosproject.net.resource.Bandwidth; |
| 36 | import org.onosproject.net.resource.Lambda; | 36 | import org.onosproject.net.resource.Lambda; |
| 37 | import org.onosproject.net.resource.LinkResourceService; | 37 | import org.onosproject.net.resource.LinkResourceService; |
| 38 | 38 | ||
| 39 | -import java.util.LinkedList; | 39 | +import java.util.Arrays; |
| 40 | import java.util.List; | 40 | import java.util.List; |
| 41 | 41 | ||
| 42 | import static org.hamcrest.CoreMatchers.instanceOf; | 42 | import static org.hamcrest.CoreMatchers.instanceOf; |
| ... | @@ -77,14 +77,29 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -77,14 +77,29 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 77 | } | 77 | } |
| 78 | 78 | ||
| 79 | /** | 79 | /** |
| 80 | + * Creates a PointToPoint intent based on ingress and egress deviceIds and constraints. | ||
| 81 | + * | ||
| 82 | + * @param ingressIdString string for id of ingress device | ||
| 83 | + * @param egressIdString string for id of egress device | ||
| 84 | + * @param constraints constraints | ||
| 85 | + * @return PointToPointIntent for the two device with constraints | ||
| 86 | + */ | ||
| 87 | + private PointToPointIntent makeIntent(String ingressIdString, | ||
| 88 | + String egressIdString, List<Constraint> constraints) { | ||
| 89 | + return new PointToPointIntent(APPID, selector, treatment, | ||
| 90 | + connectPoint(ingressIdString, 1), | ||
| 91 | + connectPoint(egressIdString, 1), | ||
| 92 | + constraints); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + /** | ||
| 80 | * Creates a compiler for HostToHost intents. | 96 | * Creates a compiler for HostToHost intents. |
| 81 | * | 97 | * |
| 82 | * @param hops string array describing the path hops to use when compiling | 98 | * @param hops string array describing the path hops to use when compiling |
| 83 | * @return HostToHost intent compiler | 99 | * @return HostToHost intent compiler |
| 84 | */ | 100 | */ |
| 85 | private PointToPointIntentCompiler makeCompiler(String[] hops) { | 101 | private PointToPointIntentCompiler makeCompiler(String[] hops) { |
| 86 | - PointToPointIntentCompiler compiler = | 102 | + PointToPointIntentCompiler compiler = new PointToPointIntentCompiler(); |
| 87 | - new PointToPointIntentCompiler(); | ||
| 88 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); | 103 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); |
| 89 | return compiler; | 104 | return compiler; |
| 90 | } | 105 | } |
| ... | @@ -96,8 +111,7 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -96,8 +111,7 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 96 | * @param resourceService service to use for resource allocation requests | 111 | * @param resourceService service to use for resource allocation requests |
| 97 | * @return point to point compiler | 112 | * @return point to point compiler |
| 98 | */ | 113 | */ |
| 99 | - private PointToPointIntentCompiler makeCompiler(LinkResourceService resourceService) { | 114 | + private PointToPointIntentCompiler makeCompiler(String[] hops, LinkResourceService resourceService) { |
| 100 | - final String[] hops = {"s1", "s2", "s3"}; | ||
| 101 | final PointToPointIntentCompiler compiler = new PointToPointIntentCompiler(); | 115 | final PointToPointIntentCompiler compiler = new PointToPointIntentCompiler(); |
| 102 | compiler.resourceService = resourceService; | 116 | compiler.resourceService = resourceService; |
| 103 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); | 117 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); |
| ... | @@ -105,33 +119,6 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -105,33 +119,6 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 105 | } | 119 | } |
| 106 | 120 | ||
| 107 | /** | 121 | /** |
| 108 | - * Creates an intent with a given constraint and compiles it. The compiler | ||
| 109 | - * will throw PathNotFoundException if the allocations cannot be satisfied. | ||
| 110 | - * | ||
| 111 | - * @param constraint constraint to apply to the created intent | ||
| 112 | - * @param resourceService service to use for resource allocation requests | ||
| 113 | - * @return List of compiled intents | ||
| 114 | - */ | ||
| 115 | - private List<Intent> compileIntent(Constraint constraint, | ||
| 116 | - LinkResourceService resourceService) { | ||
| 117 | - final List<Constraint> constraints = new LinkedList<>(); | ||
| 118 | - constraints.add(constraint); | ||
| 119 | - final TrafficSelector selector = new IntentTestsMocks.MockSelector(); | ||
| 120 | - final TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | ||
| 121 | - | ||
| 122 | - final PointToPointIntent intent = | ||
| 123 | - new PointToPointIntent(APP_ID, | ||
| 124 | - selector, | ||
| 125 | - treatment, | ||
| 126 | - connectPoint("s1", 1), | ||
| 127 | - connectPoint("s3", 1), | ||
| 128 | - constraints); | ||
| 129 | - final PointToPointIntentCompiler compiler = makeCompiler(resourceService); | ||
| 130 | - | ||
| 131 | - return compiler.compile(intent, null, null); | ||
| 132 | - } | ||
| 133 | - | ||
| 134 | - /** | ||
| 135 | * Tests a pair of devices in an 8 hop path, forward direction. | 122 | * Tests a pair of devices in an 8 hop path, forward direction. |
| 136 | */ | 123 | */ |
| 137 | @Test | 124 | @Test |
| ... | @@ -225,9 +212,15 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -225,9 +212,15 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 225 | 212 | ||
| 226 | final LinkResourceService resourceService = | 213 | final LinkResourceService resourceService = |
| 227 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(1000.0); | 214 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(1000.0); |
| 228 | - final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | 215 | + final List<Constraint> constraints = Arrays.asList(new BandwidthConstraint(Bandwidth.bps(100.0))); |
| 216 | + | ||
| 217 | + final PointToPointIntent intent = makeIntent("s1", "s3", constraints); | ||
| 218 | + | ||
| 219 | + String[] hops = {"s1", "s2", "s3"}; | ||
| 220 | + final PointToPointIntentCompiler compiler = makeCompiler(hops, resourceService); | ||
| 221 | + | ||
| 222 | + final List<Intent> compiledIntents = compiler.compile(intent, null, null); | ||
| 229 | 223 | ||
| 230 | - final List<Intent> compiledIntents = compileIntent(constraint, resourceService); | ||
| 231 | assertThat(compiledIntents, Matchers.notNullValue()); | 224 | assertThat(compiledIntents, Matchers.notNullValue()); |
| 232 | assertThat(compiledIntents, hasSize(1)); | 225 | assertThat(compiledIntents, hasSize(1)); |
| 233 | } | 226 | } |
| ... | @@ -240,10 +233,16 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -240,10 +233,16 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 240 | 233 | ||
| 241 | final LinkResourceService resourceService = | 234 | final LinkResourceService resourceService = |
| 242 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | 235 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); |
| 243 | - final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | 236 | + final List<Constraint> constraints = Arrays.asList(new BandwidthConstraint(Bandwidth.bps(100.0))); |
| 244 | 237 | ||
| 245 | try { | 238 | try { |
| 246 | - compileIntent(constraint, resourceService); | 239 | + final PointToPointIntent intent = makeIntent("s1", "s3", constraints); |
| 240 | + | ||
| 241 | + String[] hops = {"s1", "s2", "s3"}; | ||
| 242 | + final PointToPointIntentCompiler compiler = makeCompiler(hops, resourceService); | ||
| 243 | + | ||
| 244 | + compiler.compile(intent, null, null); | ||
| 245 | + | ||
| 247 | fail("Point to Point compilation with insufficient bandwidth does " | 246 | fail("Point to Point compilation with insufficient bandwidth does " |
| 248 | + "not throw exception."); | 247 | + "not throw exception."); |
| 249 | } catch (PathNotFoundException noPath) { | 248 | } catch (PathNotFoundException noPath) { |
| ... | @@ -257,12 +256,18 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -257,12 +256,18 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 257 | @Test | 256 | @Test |
| 258 | public void testLambdaConstrainedIntentSuccess() { | 257 | public void testLambdaConstrainedIntentSuccess() { |
| 259 | 258 | ||
| 260 | - final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | 259 | + final List<Constraint> constraints = Arrays.asList(new LambdaConstraint(Lambda.valueOf(1))); |
| 261 | final LinkResourceService resourceService = | 260 | final LinkResourceService resourceService = |
| 262 | IntentTestsMocks.MockResourceService.makeLambdaResourceService(1); | 261 | IntentTestsMocks.MockResourceService.makeLambdaResourceService(1); |
| 263 | 262 | ||
| 263 | + final PointToPointIntent intent = makeIntent("s1", "s3", constraints); | ||
| 264 | + | ||
| 265 | + String[] hops = {"s1", "s2", "s3"}; | ||
| 266 | + final PointToPointIntentCompiler compiler = makeCompiler(hops, resourceService); | ||
| 267 | + | ||
| 264 | final List<Intent> compiledIntents = | 268 | final List<Intent> compiledIntents = |
| 265 | - compileIntent(constraint, resourceService); | 269 | + compiler.compile(intent, null, null); |
| 270 | + | ||
| 266 | assertThat(compiledIntents, Matchers.notNullValue()); | 271 | assertThat(compiledIntents, Matchers.notNullValue()); |
| 267 | assertThat(compiledIntents, hasSize(1)); | 272 | assertThat(compiledIntents, hasSize(1)); |
| 268 | } | 273 | } |
| ... | @@ -274,11 +279,17 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -274,11 +279,17 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 274 | @Test | 279 | @Test |
| 275 | public void testLambdaConstrainedIntentFailure() { | 280 | public void testLambdaConstrainedIntentFailure() { |
| 276 | 281 | ||
| 277 | - final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | 282 | + final List<Constraint> constraints = Arrays.asList(new LambdaConstraint(Lambda.valueOf(1))); |
| 278 | final LinkResourceService resourceService = | 283 | final LinkResourceService resourceService = |
| 279 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | 284 | IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); |
| 280 | try { | 285 | try { |
| 281 | - compileIntent(constraint, resourceService); | 286 | + final PointToPointIntent intent = makeIntent("s1", "s3", constraints); |
| 287 | + | ||
| 288 | + String[] hops = {"s1", "s2", "s3"}; | ||
| 289 | + final PointToPointIntentCompiler compiler = makeCompiler(hops, resourceService); | ||
| 290 | + | ||
| 291 | + compiler.compile(intent, null, null); | ||
| 292 | + | ||
| 282 | fail("Point to Point compilation with no available lambda does " | 293 | fail("Point to Point compilation with no available lambda does " |
| 283 | + "not throw exception."); | 294 | + "not throw exception."); |
| 284 | } catch (PathNotFoundException noPath) { | 295 | } catch (PathNotFoundException noPath) { | ... | ... |
-
Please register or login to post a comment