diff --git a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java index 8ab8e8f0b6..9e5baf9dfa 100644 --- a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java +++ b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateFlows.java @@ -34,7 +34,7 @@ public class CreateFlows extends AbstractShellCommand { @Override protected void execute() { ComponentConfigService service = get(ComponentConfigService.class); - service.setProperty("org.onosproject.routescale.ScaleManager", + service.setProperty("org.onosproject.routescale.ScaleTestManager", "flowCount", String.valueOf(flowCount)); } diff --git a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java index d738b74ee3..608fc53a56 100644 --- a/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java +++ b/apps/test/route-scale/src/main/java/org/onosproject/routescale/CreateRoutes.java @@ -34,7 +34,7 @@ public class CreateRoutes extends AbstractShellCommand { @Override protected void execute() { ComponentConfigService service = get(ComponentConfigService.class); - service.setProperty("org.onosproject.routescale.ScaleManager", + service.setProperty("org.onosproject.routescale.ScaleTestManager", "routeCount", String.valueOf(routeCount)); } diff --git a/apps/test/route-scale/src/main/java/org/onosproject/routescale/ScaleTestManager.java b/apps/test/route-scale/src/main/java/org/onosproject/routescale/ScaleTestManager.java index 25550f83f7..cfc7ad621d 100644 --- a/apps/test/route-scale/src/main/java/org/onosproject/routescale/ScaleTestManager.java +++ b/apps/test/route-scale/src/main/java/org/onosproject/routescale/ScaleTestManager.java @@ -103,6 +103,8 @@ public class ScaleTestManager { private ApplicationId appId; + private long macBase = System.currentTimeMillis(); + @Activate protected void activate() { appId = applicationService.getId("org.onosproject.routescale"); @@ -172,11 +174,12 @@ public class ScaleTestManager { FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); for (int i = 0; i < c; i++) { FlowRule.Builder frb = DefaultFlowRule.builder(); - frb.fromApp(appId).makePermanent().withPriority(1000 + i); + frb.fromApp(appId).makePermanent().withPriority((currentFlowCount + i) % FlowRule.MAX_PRIORITY); TrafficSelector.Builder tsb = DefaultTrafficSelector.builder(); TrafficTreatment.Builder ttb = DefaultTrafficTreatment.builder(); tsb.matchEthType(Ethernet.TYPE_IPV4); + tsb.matchEthDst(randomMac()); ttb.setEthDst(randomMac()).setEthSrc(randomMac()); ttb.setOutput(randomPort(ports)); frb.withSelector(tsb.build()).withTreatment(ttb.build()); @@ -188,12 +191,14 @@ public class ScaleTestManager { private void removeExcessFlows(int flowsPerDevice, DeviceId id, int currentFlowCount) { FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); - int c = flowsPerDevice - currentFlowCount; + int c = currentFlowCount - flowsPerDevice; log.info("Removing {} flows from device {}", c, id); for (FlowEntry e : flowRuleService.getFlowEntries(id)) { if (Objects.equals(e.appId(), appId.id()) && c > 0) { ops.remove(e); c--; + } else if (c == 0) { + break; } } flowRuleService.apply(ops.build()); @@ -252,9 +257,7 @@ public class ScaleTestManager { // Generates a random MAC address. private MacAddress randomMac() { - byte[] bytes = new byte[6]; - random.nextBytes(bytes); - return MacAddress.valueOf(bytes); + return MacAddress.valueOf(macBase++); } // Returns IP address of a host randomly chosen from the specified list.