Committed by
Ray Milkey
Move unit tests to PointToPointIntentCompilerTest
The unit tests only depend on PointToPointIntentCompiler and it would be obstacles when IntentCompiler subclasses are moved to a dedicated package Change-Id: Ifbfe5ef2a4bae014d2b6cae599fe8860a54e01ca Reference: ONOS-1066
Showing
2 changed files
with
120 additions
and
69 deletions
| ... | @@ -107,75 +107,6 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { | ... | @@ -107,75 +107,6 @@ public class PathConstraintCalculationTest extends AbstractIntentTest { |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | /** | 109 | /** |
| 110 | - * Tests that requests with sufficient available bandwidth succeed. | ||
| 111 | - */ | ||
| 112 | - @Test | ||
| 113 | - public void testBandwidthConstrainedIntentSuccess() { | ||
| 114 | - | ||
| 115 | - final LinkResourceService resourceService = | ||
| 116 | - IntentTestsMocks.MockResourceService.makeBandwidthResourceService(1000.0); | ||
| 117 | - final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | ||
| 118 | - | ||
| 119 | - final List<Intent> compiledIntents = compileIntent(constraint, resourceService); | ||
| 120 | - assertThat(compiledIntents, notNullValue()); | ||
| 121 | - assertThat(compiledIntents, hasSize(1)); | ||
| 122 | - } | ||
| 123 | - | ||
| 124 | - /** | ||
| 125 | - * Tests that requests with insufficient available bandwidth fail. | ||
| 126 | - */ | ||
| 127 | - @Test | ||
| 128 | - public void testBandwidthConstrainedIntentFailure() { | ||
| 129 | - | ||
| 130 | - final LinkResourceService resourceService = | ||
| 131 | - IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | ||
| 132 | - final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | ||
| 133 | - | ||
| 134 | - try { | ||
| 135 | - compileIntent(constraint, resourceService); | ||
| 136 | - fail("Point to Point compilation with insufficient bandwidth does " | ||
| 137 | - + "not throw exception."); | ||
| 138 | - } catch (PathNotFoundException noPath) { | ||
| 139 | - assertThat(noPath.getMessage(), containsString("No path")); | ||
| 140 | - } | ||
| 141 | - } | ||
| 142 | - | ||
| 143 | - /** | ||
| 144 | - * Tests that requests for available lambdas are successful. | ||
| 145 | - */ | ||
| 146 | - @Test | ||
| 147 | - public void testLambdaConstrainedIntentSuccess() { | ||
| 148 | - | ||
| 149 | - final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | ||
| 150 | - final LinkResourceService resourceService = | ||
| 151 | - IntentTestsMocks.MockResourceService.makeLambdaResourceService(1); | ||
| 152 | - | ||
| 153 | - final List<Intent> compiledIntents = | ||
| 154 | - compileIntent(constraint, resourceService); | ||
| 155 | - assertThat(compiledIntents, notNullValue()); | ||
| 156 | - assertThat(compiledIntents, hasSize(1)); | ||
| 157 | - } | ||
| 158 | - | ||
| 159 | - /** | ||
| 160 | - * Tests that requests for lambdas when there are no available lambdas | ||
| 161 | - * fail. | ||
| 162 | - */ | ||
| 163 | - @Test | ||
| 164 | - public void testLambdaConstrainedIntentFailure() { | ||
| 165 | - | ||
| 166 | - final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | ||
| 167 | - final LinkResourceService resourceService = | ||
| 168 | - IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | ||
| 169 | - try { | ||
| 170 | - compileIntent(constraint, resourceService); | ||
| 171 | - fail("Point to Point compilation with no available lambda does " | ||
| 172 | - + "not throw exception."); | ||
| 173 | - } catch (PathNotFoundException noPath) { | ||
| 174 | - assertThat(noPath.getMessage(), containsString("No path")); | ||
| 175 | - } | ||
| 176 | - } | ||
| 177 | - | ||
| 178 | - /** | ||
| 179 | * Tests that installation of bandwidth constrained path intents are | 110 | * Tests that installation of bandwidth constrained path intents are |
| 180 | * successful. | 111 | * successful. |
| 181 | */ | 112 | */ | ... | ... |
| ... | @@ -25,17 +25,26 @@ import org.onosproject.net.Path; | ... | @@ -25,17 +25,26 @@ import org.onosproject.net.Path; |
| 25 | import org.onosproject.net.flow.TrafficSelector; | 25 | import org.onosproject.net.flow.TrafficSelector; |
| 26 | import org.onosproject.net.flow.TrafficTreatment; | 26 | import org.onosproject.net.flow.TrafficTreatment; |
| 27 | import org.onosproject.net.intent.AbstractIntentTest; | 27 | import org.onosproject.net.intent.AbstractIntentTest; |
| 28 | +import org.onosproject.net.intent.Constraint; | ||
| 28 | import org.onosproject.net.intent.Intent; | 29 | import org.onosproject.net.intent.Intent; |
| 29 | import org.onosproject.net.intent.IntentTestsMocks; | 30 | import org.onosproject.net.intent.IntentTestsMocks; |
| 30 | import org.onosproject.net.intent.PathIntent; | 31 | import org.onosproject.net.intent.PathIntent; |
| 31 | import org.onosproject.net.intent.PointToPointIntent; | 32 | import org.onosproject.net.intent.PointToPointIntent; |
| 33 | +import org.onosproject.net.intent.constraint.BandwidthConstraint; | ||
| 34 | +import org.onosproject.net.intent.constraint.LambdaConstraint; | ||
| 35 | +import org.onosproject.net.resource.Bandwidth; | ||
| 36 | +import org.onosproject.net.resource.Lambda; | ||
| 37 | +import org.onosproject.net.resource.LinkResourceService; | ||
| 32 | 38 | ||
| 39 | +import java.util.LinkedList; | ||
| 33 | import java.util.List; | 40 | import java.util.List; |
| 34 | 41 | ||
| 35 | import static org.hamcrest.CoreMatchers.instanceOf; | 42 | import static org.hamcrest.CoreMatchers.instanceOf; |
| 36 | import static org.hamcrest.MatcherAssert.assertThat; | 43 | import static org.hamcrest.MatcherAssert.assertThat; |
| 44 | +import static org.hamcrest.Matchers.containsString; | ||
| 37 | import static org.hamcrest.Matchers.hasSize; | 45 | import static org.hamcrest.Matchers.hasSize; |
| 38 | import static org.hamcrest.Matchers.is; | 46 | import static org.hamcrest.Matchers.is; |
| 47 | +import static org.junit.Assert.fail; | ||
| 39 | import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; | 48 | import static org.onosproject.net.DefaultEdgeLink.createEdgeLink; |
| 40 | import static org.onosproject.net.DeviceId.deviceId; | 49 | import static org.onosproject.net.DeviceId.deviceId; |
| 41 | import static org.onosproject.net.NetTestTools.APP_ID; | 50 | import static org.onosproject.net.NetTestTools.APP_ID; |
| ... | @@ -80,6 +89,47 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -80,6 +89,47 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 80 | return compiler; | 89 | return compiler; |
| 81 | } | 90 | } |
| 82 | 91 | ||
| 92 | + /** | ||
| 93 | + * Creates a point to point intent compiler for a three switch linear | ||
| 94 | + * topology. | ||
| 95 | + * | ||
| 96 | + * @param resourceService service to use for resource allocation requests | ||
| 97 | + * @return point to point compiler | ||
| 98 | + */ | ||
| 99 | + private PointToPointIntentCompiler makeCompiler(LinkResourceService resourceService) { | ||
| 100 | + final String[] hops = {"s1", "s2", "s3"}; | ||
| 101 | + final PointToPointIntentCompiler compiler = new PointToPointIntentCompiler(); | ||
| 102 | + compiler.resourceService = resourceService; | ||
| 103 | + compiler.pathService = new IntentTestsMocks.MockPathService(hops); | ||
| 104 | + return compiler; | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + /** | ||
| 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 | + } | ||
| 83 | 133 | ||
| 84 | /** | 134 | /** |
| 85 | * Tests a pair of devices in an 8 hop path, forward direction. | 135 | * Tests a pair of devices in an 8 hop path, forward direction. |
| ... | @@ -166,4 +216,74 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { | ... | @@ -166,4 +216,74 @@ public class PointToPointIntentCompilerTest extends AbstractIntentTest { |
| 166 | Link secondLink = path.links().get(1); | 216 | Link secondLink = path.links().get(1); |
| 167 | assertThat(secondLink, is(createEdgeLink(dst, false))); | 217 | assertThat(secondLink, is(createEdgeLink(dst, false))); |
| 168 | } | 218 | } |
| 219 | + | ||
| 220 | + /** | ||
| 221 | + * Tests that requests with sufficient available bandwidth succeed. | ||
| 222 | + */ | ||
| 223 | + @Test | ||
| 224 | + public void testBandwidthConstrainedIntentSuccess() { | ||
| 225 | + | ||
| 226 | + final LinkResourceService resourceService = | ||
| 227 | + IntentTestsMocks.MockResourceService.makeBandwidthResourceService(1000.0); | ||
| 228 | + final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | ||
| 229 | + | ||
| 230 | + final List<Intent> compiledIntents = compileIntent(constraint, resourceService); | ||
| 231 | + assertThat(compiledIntents, Matchers.notNullValue()); | ||
| 232 | + assertThat(compiledIntents, hasSize(1)); | ||
| 233 | + } | ||
| 234 | + | ||
| 235 | + /** | ||
| 236 | + * Tests that requests with insufficient available bandwidth fail. | ||
| 237 | + */ | ||
| 238 | + @Test | ||
| 239 | + public void testBandwidthConstrainedIntentFailure() { | ||
| 240 | + | ||
| 241 | + final LinkResourceService resourceService = | ||
| 242 | + IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | ||
| 243 | + final Constraint constraint = new BandwidthConstraint(Bandwidth.bps(100.0)); | ||
| 244 | + | ||
| 245 | + try { | ||
| 246 | + compileIntent(constraint, resourceService); | ||
| 247 | + fail("Point to Point compilation with insufficient bandwidth does " | ||
| 248 | + + "not throw exception."); | ||
| 249 | + } catch (PathNotFoundException noPath) { | ||
| 250 | + assertThat(noPath.getMessage(), containsString("No path")); | ||
| 251 | + } | ||
| 252 | + } | ||
| 253 | + | ||
| 254 | + /** | ||
| 255 | + * Tests that requests for available lambdas are successful. | ||
| 256 | + */ | ||
| 257 | + @Test | ||
| 258 | + public void testLambdaConstrainedIntentSuccess() { | ||
| 259 | + | ||
| 260 | + final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | ||
| 261 | + final LinkResourceService resourceService = | ||
| 262 | + IntentTestsMocks.MockResourceService.makeLambdaResourceService(1); | ||
| 263 | + | ||
| 264 | + final List<Intent> compiledIntents = | ||
| 265 | + compileIntent(constraint, resourceService); | ||
| 266 | + assertThat(compiledIntents, Matchers.notNullValue()); | ||
| 267 | + assertThat(compiledIntents, hasSize(1)); | ||
| 268 | + } | ||
| 269 | + | ||
| 270 | + /** | ||
| 271 | + * Tests that requests for lambdas when there are no available lambdas | ||
| 272 | + * fail. | ||
| 273 | + */ | ||
| 274 | + @Test | ||
| 275 | + public void testLambdaConstrainedIntentFailure() { | ||
| 276 | + | ||
| 277 | + final Constraint constraint = new LambdaConstraint(Lambda.valueOf(1)); | ||
| 278 | + final LinkResourceService resourceService = | ||
| 279 | + IntentTestsMocks.MockResourceService.makeBandwidthResourceService(10.0); | ||
| 280 | + try { | ||
| 281 | + compileIntent(constraint, resourceService); | ||
| 282 | + fail("Point to Point compilation with no available lambda does " | ||
| 283 | + + "not throw exception."); | ||
| 284 | + } catch (PathNotFoundException noPath) { | ||
| 285 | + assertThat(noPath.getMessage(), containsString("No path")); | ||
| 286 | + } | ||
| 287 | + } | ||
| 288 | + | ||
| 169 | } | 289 | } | ... | ... |
-
Please register or login to post a comment