[ONOS-4513] Move optical Intent compilers out to optical-model (3/3)
- core/net is now optical clean
- reverting part of Change-Id: Ib8ddac6e93327ade9d42984d8eba66be7047d051
which lead to loss of package import information, causing OSGi issue
Change-Id: Ie6b16abd3ecc872f0920d29c7577a10c44091af6
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
index b1e6376..585d3a0 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
@@ -35,6 +35,7 @@
import org.onosproject.net.NetworkResource;
import org.onosproject.net.intent.FlowRuleIntent;
import org.onosproject.net.intent.Intent;
+import org.onosproject.net.intent.IntentCompilationException;
import org.onosproject.net.intent.IntentCompiler;
import org.onosproject.net.intent.IntentData;
import org.onosproject.net.intent.IntentEvent;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompilerTest.java
index 4bba232..939cab0 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompilerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompilerTest.java
@@ -30,6 +30,7 @@
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.IntentTestsMocks;
import org.onosproject.net.intent.PathIntent;
+import org.onosproject.net.resource.MockResourceService;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java
deleted file mode 100644
index 9da412e..0000000
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MockResourceService.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.net.intent.impl.compiler;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import org.onlab.packet.MplsLabel;
-import org.onlab.packet.VlanId;
-import org.onlab.util.Tools;
-import org.onosproject.net.TributarySlot;
-import org.onosproject.net.resource.ContinuousResourceId;
-import org.onosproject.net.resource.DiscreteResource;
-import org.onosproject.net.resource.DiscreteResourceId;
-import org.onosproject.net.resource.ResourceAllocation;
-import org.onosproject.net.resource.ResourceConsumer;
-import org.onosproject.net.resource.ResourceId;
-import org.onosproject.net.resource.ResourceListener;
-import org.onosproject.net.resource.Resource;
-import org.onosproject.net.resource.ResourceService;
-import org.onosproject.net.resource.Resources;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-class MockResourceService implements ResourceService {
-
- private final Map<Resource, ResourceConsumer> assignment = new HashMap<>();
-
- @Override
- public List<ResourceAllocation> allocate(ResourceConsumer consumer, List<Resource> resources) {
- assignment.putAll(
- resources.stream().collect(Collectors.toMap(Function.identity(), x -> consumer))
- );
-
- return resources.stream()
- .map(x -> new ResourceAllocation(x, consumer))
- .collect(Collectors.toList());
- }
-
- @Override
- public boolean release(List<ResourceAllocation> allocations) {
- allocations.forEach(x -> assignment.remove(x.resource()));
-
- return true;
- }
-
- @Override
- public boolean release(ResourceConsumer consumer) {
- List<Resource> resources = assignment.entrySet().stream()
- .filter(x -> x.getValue().equals(consumer))
- .map(Map.Entry::getKey)
- .collect(Collectors.toList());
- List<ResourceAllocation> allocations = resources.stream()
- .map(x -> new ResourceAllocation(x, consumer))
- .collect(Collectors.toList());
-
- return release(allocations);
- }
-
- @Override
- public List<ResourceAllocation> getResourceAllocations(ResourceId id) {
- if (id instanceof ContinuousResourceId) {
- return ImmutableList.of();
- }
- DiscreteResource discrete = Resources.discrete((DiscreteResourceId) id).resource();
- return Optional.ofNullable(assignment.get(discrete))
- .map(x -> ImmutableList.of(new ResourceAllocation(discrete, x)))
- .orElse(ImmutableList.of());
- }
-
- @Override
- public <T> Collection<ResourceAllocation> getResourceAllocations(DiscreteResourceId parent, Class<T> cls) {
- return assignment.entrySet().stream()
- .filter(x -> x.getKey().parent().isPresent())
- .filter(x -> x.getKey().parent().get().id().equals(parent))
- .map(x -> new ResourceAllocation(x.getKey(), x.getValue()))
- .collect(Collectors.toList());
- }
-
- @Override
- public Collection<ResourceAllocation> getResourceAllocations(ResourceConsumer consumer) {
- return assignment.entrySet().stream()
- .filter(x -> x.getValue().equals(consumer))
- .map(x -> new ResourceAllocation(x.getKey(), x.getValue()))
- .collect(Collectors.toList());
- }
-
-
- /**
- * It adds a number of VLAN ids in order to test the random behavior.
- *
- * @param parent the parent resource
- * @return a set of VLAN ids
- */
- private Collection<Resource> addVlanIds(DiscreteResourceId parent) {
- Collection<Resource> resources = new HashSet<>();
- for (int i = VlanId.NO_VID + 1; i < VlanId.MAX_VLAN; i++) {
- resources.add(Resources.discrete(parent).resource().child(VlanId.vlanId((short) i)));
- }
- return resources;
- }
-
- @Override
- public Set<Resource> getAvailableResources(DiscreteResourceId parent) {
- Collection<Resource> resources = new HashSet<>();
- resources.addAll(addVlanIds(parent));
- resources.add(Resources.discrete(parent).resource().child(MplsLabel.mplsLabel(10)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(1)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(2)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(3)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(4)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(5)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(6)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(7)));
- resources.add(Resources.discrete(parent).resource().child(TributarySlot.of(8)));
- return ImmutableSet.copyOf(resources);
- }
-
- @Override
- public <T> Set<Resource> getAvailableResources(DiscreteResourceId parent, Class<T> cls) {
- return getAvailableResources(parent).stream()
- .filter(x -> x.isTypeOf(cls))
- .collect(Collectors.toSet());
- }
-
- @Override
- public <T> Set<T> getAvailableResourceValues(DiscreteResourceId parent, Class<T> cls) {
- return getAvailableResources(parent).stream()
- .filter(x -> x.isTypeOf(cls))
- .flatMap(x -> Tools.stream(x.valueAs(cls)))
- .collect(Collectors.toSet());
- }
-
- @Override
- public Set<Resource> getRegisteredResources(DiscreteResourceId parent) {
- return getAvailableResources(parent);
- }
-
- @Override
- public boolean isAvailable(Resource resource) {
- return true;
- }
-
- @Override
- public void addListener(ResourceListener listener) {}
-
- @Override
- public void removeListener(ResourceListener listener) {}
-}
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompilerTest.java
index 1317edc..fa0a0df 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompilerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompilerTest.java
@@ -43,6 +43,7 @@
import org.onosproject.net.intent.IntentExtensionService;
import org.onosproject.net.intent.MockIdGenerator;
import org.onosproject.net.intent.MplsPathIntent;
+import org.onosproject.net.resource.MockResourceService;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompilerTest.java
deleted file mode 100644
index 1ec1192..0000000
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalCircuitIntentCompilerTest.java
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.net.intent.impl.compiler;
-
-import org.easymock.EasyMock;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onlab.packet.ChassisId;
-import org.onosproject.TestApplicationId;
-import org.onosproject.cfg.ComponentConfigService;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.net.AbstractProjectableModel;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.ChannelSpacing;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.CltSignalType;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.OchSignal;
-import org.onosproject.net.OduSignalId;
-import org.onosproject.net.OduSignalType;
-import org.onosproject.net.OduSignalUtils;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.TributarySlot;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.intent.FlowRuleIntent;
-import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentExtensionService;
-import org.onosproject.net.intent.IntentId;
-import org.onosproject.net.intent.IntentServiceAdapter;
-import org.onosproject.net.intent.Key;
-import org.onosproject.net.intent.MockIdGenerator;
-import org.onosproject.net.intent.OpticalCircuitIntent;
-import org.onosproject.net.optical.OchPort;
-import org.onosproject.net.optical.OduCltPort;
-import org.onosproject.net.optical.impl.DefaultOchPort;
-import org.onosproject.net.optical.impl.DefaultOduCltPort;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.intent.IntentSetMultimap;
-import org.onosproject.net.behaviour.TributarySlotQuery;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.driver.Behaviour;
-import org.onosproject.net.driver.DefaultDriver;
-import org.onosproject.net.driver.Driver;
-import org.onosproject.net.driver.DriverHandler;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.driver.DriverServiceAdapter;
-import org.onosproject.net.driver.TestBehaviourImpl;
-import org.onosproject.net.driver.TestBehaviourTwoImpl;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.net.AnnotationKeys.STATIC_PORT;
-import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.net.Device.Type.ROADM;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.NetTestTools.APP_ID;
-
-public class OpticalCircuitIntentCompilerTest {
-
- private static final String DEV1 = "of:1";
- private static final String DEV2 = "of:2";
-
- static final Key KEY1 = Key.of(5L, APP_ID);
-
- private static final String STATIC_TRUE = "true";
- private static final String PNAME = "p2";
-
- private CoreService coreService;
- private IntentExtensionService intentExtensionService;
- private final IdGenerator idGenerator = new MockIdGenerator();
- private OpticalCircuitIntentCompiler sut;
-
- private final ApplicationId appId = new TestApplicationId("test");
- private static Device device1 = new DefaultDevice(ProviderId.NONE, deviceId(DEV1), ROADM,
- "m", "h", "s", "n", new ChassisId(0L));
- private static Device device2 = new DefaultDevice(ProviderId.NONE, deviceId(DEV2), ROADM,
- "m", "h", "s", "n", new ChassisId(1L));
-
- private static Annotations annotations1 = DefaultAnnotations.builder().set(STATIC_PORT, STATIC_TRUE).build();
- private static Annotations annotations2 = DefaultAnnotations.builder().set(PORT_NAME, PNAME).build();
-
- // OduClt ports with signalType=1GBE
- private static final OduCltPort D1P1 =
- new DefaultOduCltPort(new DefaultPort(device1, PortNumber.portNumber(1), true, annotations1),
- CltSignalType.CLT_1GBE);
- private static final OduCltPort D2P1 =
- new DefaultOduCltPort(new DefaultPort(device2, PortNumber.portNumber(1), true, annotations1),
- CltSignalType.CLT_1GBE);
-
- // Och ports with signalType=ODU2
- private static final OchPort D1P2 =
- new DefaultOchPort(new DefaultPort(device1, PortNumber.portNumber(2), true, annotations2),
- OduSignalType.ODU2,
- true, OchSignal.newDwdmSlot(ChannelSpacing.CHL_50GHZ, 1));
- private static final OchPort D2P2 =
- new DefaultOchPort(new DefaultPort(device2, PortNumber.portNumber(2), true, annotations2),
- OduSignalType.ODU2,
- true, OchSignal.newDwdmSlot(ChannelSpacing.CHL_50GHZ, 1));
-
- // OduClt ports with signalType=10GBE
- private static final OduCltPort D1P3 =
- new DefaultOduCltPort(new DefaultPort(device1, PortNumber.portNumber(3), true, annotations1),
- CltSignalType.CLT_10GBE);
- private static final OduCltPort D2P3 =
- new DefaultOduCltPort(new DefaultPort(device2, PortNumber.portNumber(3), true, annotations1),
- CltSignalType.CLT_10GBE);
-
-
- private OpticalCircuitIntent intent;
-
- /**
- * Mocks the device service so that devices and ports appear available in the test.
- */
- private static class MockDeviceService extends DeviceServiceAdapter {
- @Override
- public boolean isAvailable(DeviceId deviceId) {
- return true;
- }
-
- @Override
- public List<Port> getPorts(DeviceId deviceId) {
- if (deviceId.equals(deviceId(DEV1))) {
- return ImmutableList.of((Port) D1P1, (Port) D1P2, (Port) D1P3);
- }
-
- if (deviceId.equals(deviceId(DEV2))) {
- return ImmutableList.of((Port) D2P1, (Port) D2P2, (Port) D2P3);
- }
- return Collections.emptyList();
- }
-
- @Override
- public Port getPort(DeviceId deviceId, PortNumber portNumber) {
- if (deviceId.equals(deviceId(DEV1))) {
- switch (portNumber.toString()) {
- case "1":
- return D1P1;
- case "2":
- return D1P2;
- case "3":
- return D1P3;
- default:
- return null;
- }
- }
- if (deviceId.equals(deviceId(DEV2))) {
- switch (portNumber.toString()) {
- case "1":
- return D2P1;
- case "2":
- return D2P2;
- case "3":
- return D2P3;
- default:
- return null;
- }
- }
- return null;
- }
- }
-
- /**
- * Mocks the driver service so it will appear supporting TributarySlotQuery Behaviour in the test.
- */
- private static class MockDriverServiceWithTs implements DriverService {
- @Override
- public Driver getDriver(String driverName) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<Driver> getDrivers() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Driver getDriver(String mfr, String hw, String sw) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Driver getDriver(DeviceId deviceId) {
- DefaultDriver ddp = new DefaultDriver("foo.base", new ArrayList<>(), "Circus", "lux", "1.2a",
- ImmutableMap.of(Behaviour.class,
- TestBehaviourImpl.class,
- TributarySlotQuery.class,
- TestBehaviourTwoImpl.class),
- ImmutableMap.of("foo", "bar"));
- return ddp;
- }
-
- @Override
- public DriverHandler createHandler(DeviceId deviceId,
- String... credentials) {
- // TODO Auto-generated method stub
- return null;
- }
- }
-
- /**
- * Mocks the driver service so it will appear not-supporting TributarySlotQuery Behaviour in the test.
- */
- private static class MockDriverServiceNoTs implements DriverService {
- @Override
- public Driver getDriver(String driverName) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<Driver> getDrivers() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Driver getDriver(String mfr, String hw, String sw) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Driver getDriver(DeviceId deviceId) {
- DefaultDriver ddp = new DefaultDriver("foo.base", new ArrayList<>(), "Circus", "lux", "1.2a",
- ImmutableMap.of(Behaviour.class,
- TestBehaviourImpl.class),
- ImmutableMap.of("foo", "bar"));
- return ddp;
- }
-
- @Override
- public DriverHandler createHandler(DeviceId deviceId,
- String... credentials) {
- // TODO Auto-generated method stub
- return null;
- }
- }
-
- private static class MockIntentSetMultimap implements IntentSetMultimap {
- @Override
- public boolean allocateMapping(IntentId keyIntentId,
- IntentId valIntentId) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public Set<IntentId> getMapping(IntentId intentId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void releaseMapping(IntentId intentId) {
- // TODO Auto-generated method stub
- }
-
- }
-
- /**
- * Represents a fake IntentService class that easily allows to store and
- * retrieve intents without implementing the IntentService logic.
- */
- private class TestIntentService extends IntentServiceAdapter {
-
- private Set<Intent> intents;
-
- public TestIntentService() {
- intents = Sets.newHashSet();
- }
-
- @Override
- public void submit(Intent intent) {
- intents.add(intent);
- }
-
- @Override
- public long getIntentCount() {
- return intents.size();
- }
-
- @Override
- public Iterable<Intent> getIntents() {
- return intents;
- }
-
- @Override
- public Intent getIntent(Key intentKey) {
- for (Intent intent : intents) {
- if (intent.key().equals(intentKey)) {
- return intent;
- }
- }
- return null;
- }
- }
-
- @BeforeClass
- public static void setUpClass() {
- AbstractProjectableModel.setDriverService("key", new DriverServiceAdapter());
- }
-
- @Before
- public void setUp() {
- sut = new OpticalCircuitIntentCompiler();
- coreService = createMock(CoreService.class);
- expect(coreService.registerApplication("org.onosproject.net.intent"))
- .andReturn(appId);
- sut.coreService = coreService;
- sut.deviceService = new MockDeviceService();
- sut.resourceService = new MockResourceService();
- sut.intentService = new TestIntentService();
- sut.intentSetMultimap = new MockIntentSetMultimap();
-
- Intent.bindIdGenerator(idGenerator);
-
- intentExtensionService = createMock(IntentExtensionService.class);
- intentExtensionService.registerCompiler(OpticalCircuitIntent.class, sut);
- intentExtensionService.unregisterCompiler(OpticalCircuitIntent.class);
- sut.intentManager = intentExtensionService;
- replay(coreService, intentExtensionService);
-
- // mocking ComponentConfigService
- ComponentConfigService mockConfigService =
- EasyMock.createMock(ComponentConfigService.class);
- expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of());
- mockConfigService.registerProperties(sut.getClass());
- expectLastCall();
- mockConfigService.unregisterProperties(sut.getClass(), false);
- expectLastCall();
- expect(mockConfigService.getProperties(anyObject())).andReturn(ImmutableSet.of());
- sut.cfgService = mockConfigService;
- replay(mockConfigService);
-
- }
-
- @After
- public void tearDown() {
- Intent.unbindIdGenerator(idGenerator);
- }
-
- /**
- * Tests compile of OpticalCircuitIntent with allocation of TributarySlots.
- * Compile two ODUCLT ports (with CLT_1GBE), over OCH ports (with ODU2):
- * - only one TributarySlot is used
- */
- @Test
- public void test1GbeMultiplexOverOdu2() {
-
- // Use driver with TributarySlotQuery Behaviour
- sut.driverService = new MockDriverServiceWithTs();
-
- ConnectPoint oduCltSrcCP = new ConnectPoint(device1.id(), D1P1.number());
- ConnectPoint oduCltDstCP = new ConnectPoint(device2.id(), D2P1.number());
- ConnectPoint ochSrcCP = new ConnectPoint(device1.id(), D1P2.number());
- ConnectPoint ochDstCP = new ConnectPoint(device2.id(), D2P2.number());
-
- intent = OpticalCircuitIntent.builder()
- .appId(APP_ID)
- .key(KEY1)
- .src(oduCltSrcCP)
- .dst(oduCltDstCP)
- .signalType(D1P1.signalType())
- .bidirectional(false)
- .build();
-
- sut.activate(null);
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
-
- FlowRule rule1 = rules.stream()
- .filter(x -> x.deviceId().equals(device1.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder1 = DefaultTrafficSelector.builder();
- selectorBuilder1.matchInPort(oduCltSrcCP.port());
- selectorBuilder1.add(Criteria.matchOduSignalType(OduSignalType.ODU0));
- assertThat(rule1.selector(), is(selectorBuilder1.build()));
-
- // validate SRC treatment (with OduSignalId, where 1 TributarySlot is used)
- TrafficTreatment.Builder treatmentBuilder1 = DefaultTrafficTreatment.builder();
- Set<TributarySlot> slots = new HashSet<>();
- slots.add(TributarySlot.of(1));
- OduSignalId oduSignalId = OduSignalUtils.buildOduSignalId(D1P2.signalType(), slots);
- treatmentBuilder1.add(Instructions.modL1OduSignalId(oduSignalId));
- treatmentBuilder1.setOutput(ochSrcCP.port());
- assertThat(rule1.treatment(), is(treatmentBuilder1.build()));
-
- FlowRule rule2 = rules.stream()
- .filter(x -> x.deviceId().equals(device2.id()))
- .findFirst()
- .get();
- // validate DST selector (with OduSignalId, where the same TributarySlot is used)
- TrafficSelector.Builder selectorBuilder2 = DefaultTrafficSelector.builder();
- selectorBuilder2.matchInPort(ochDstCP.port());
- selectorBuilder2.add(Criteria.matchOduSignalType(OduSignalType.ODU0));
- selectorBuilder2.add(Criteria.matchOduSignalId(oduSignalId));
- assertThat(rule2.selector(), is(selectorBuilder2.build()));
-
- // validate DST treatment
- assertThat(rule2.treatment(), is(
- DefaultTrafficTreatment.builder().setOutput(oduCltDstCP.port()).build()
- ));
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
- /**
- * Tests compile of OpticalCircuitIntent with allocation of TributarySlots.
- * Compile two ODUCLT ports (with CLT_10GBE), over OCH ports (with ODU2):
- * - All TributarySlots are used
- */
- @Test
- public void test10GbeMultiplexOverOdu2() {
-
- // Use driver with TributarySlotQuery Behaviour
- sut.driverService = new MockDriverServiceWithTs();
-
- ConnectPoint oduCltSrcCP = new ConnectPoint(device1.id(), D1P3.number());
- ConnectPoint oduCltDstCP = new ConnectPoint(device2.id(), D2P3.number());
- ConnectPoint ochSrcCP = new ConnectPoint(device1.id(), D1P2.number());
- ConnectPoint ochDstCP = new ConnectPoint(device2.id(), D2P2.number());
-
- intent = OpticalCircuitIntent.builder()
- .appId(APP_ID)
- .key(KEY1)
- .src(oduCltSrcCP)
- .dst(oduCltDstCP)
- .signalType(D1P3.signalType())
- .bidirectional(false)
- .build();
-
- sut.activate(null);
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
-
- FlowRule rule1 = rules.stream()
- .filter(x -> x.deviceId().equals(device1.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder1 = DefaultTrafficSelector.builder();
- selectorBuilder1.matchInPort(oduCltSrcCP.port());
- selectorBuilder1.add(Criteria.matchOduSignalType(OduSignalType.ODU2));
- assertThat(rule1.selector(), is(selectorBuilder1.build()));
-
- // validate SRC treatment (without OduSignalId, i.e. All TributarySlots are used)
- TrafficTreatment.Builder treatmentBuilder1 = DefaultTrafficTreatment.builder();
- treatmentBuilder1.setOutput(ochSrcCP.port());
- assertThat(rule1.treatment(), is(treatmentBuilder1.build()));
-
- FlowRule rule2 = rules.stream()
- .filter(x -> x.deviceId().equals(device2.id()))
- .findFirst()
- .get();
- // validate DST selector (without OduSignalId, i.e. All TributarySlots are used)
- TrafficSelector.Builder selectorBuilder2 = DefaultTrafficSelector.builder();
- selectorBuilder2.matchInPort(ochDstCP.port());
- selectorBuilder2.add(Criteria.matchOduSignalType(OduSignalType.ODU2));
- assertThat(rule2.selector(), is(selectorBuilder2.build()));
-
- // validate DST treatment
- assertThat(rule2.treatment(), is(
- DefaultTrafficTreatment.builder().setOutput(oduCltDstCP.port()).build()
- ));
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
- /**
- * Tests compile of OpticalCircuitIntent without allocation of TributarySlots.
- * Compile two ODUCLT ports (with CLT_10GBE), over OCH ports (with ODU2):
- * - No TributarySlots are used
- */
- @Test
- public void test10GbeNoMuxOverOdu2() {
-
- // Use driver without support for TributarySlotQuery Behaviour
- sut.driverService = new MockDriverServiceNoTs();
-
- ConnectPoint oduCltSrcCP = new ConnectPoint(device1.id(), D1P3.number());
- ConnectPoint oduCltDstCP = new ConnectPoint(device2.id(), D2P3.number());
- ConnectPoint ochSrcCP = new ConnectPoint(device1.id(), D1P2.number());
- ConnectPoint ochDstCP = new ConnectPoint(device2.id(), D2P2.number());
-
- intent = OpticalCircuitIntent.builder()
- .appId(APP_ID)
- .key(KEY1)
- .src(oduCltSrcCP)
- .dst(oduCltDstCP)
- .signalType(D1P3.signalType())
- .bidirectional(false)
- .build();
-
- sut.activate(null);
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
-
- FlowRule rule1 = rules.stream()
- .filter(x -> x.deviceId().equals(device1.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder1 = DefaultTrafficSelector.builder();
- selectorBuilder1.matchInPort(oduCltSrcCP.port());
- assertThat(rule1.selector(), is(selectorBuilder1.build()));
-
- // validate SRC treatment (without OduSignalType and OduSignalId: i.e. No TributarySlots are used)
- TrafficTreatment.Builder treatmentBuilder1 = DefaultTrafficTreatment.builder();
- treatmentBuilder1.setOutput(ochSrcCP.port());
- assertThat(rule1.treatment(), is(treatmentBuilder1.build()));
-
- FlowRule rule2 = rules.stream()
- .filter(x -> x.deviceId().equals(device2.id()))
- .findFirst()
- .get();
- // validate DST selector (without OduSignalType and OduSignalId: i.e. No TributarySlots are used)
- TrafficSelector.Builder selectorBuilder2 = DefaultTrafficSelector.builder();
- selectorBuilder2.matchInPort(ochDstCP.port());
- assertThat(rule2.selector(), is(selectorBuilder2.build()));
- // validate DST treatment
- assertThat(rule2.treatment(), is(
- DefaultTrafficTreatment.builder().setOutput(oduCltDstCP.port()).build()
- ));
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
-}
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalOduIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalOduIntentCompilerTest.java
deleted file mode 100644
index a6ba3fe..0000000
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalOduIntentCompilerTest.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.net.intent.impl.compiler;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onlab.packet.ChassisId;
-import org.onosproject.TestApplicationId;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.net.AbstractProjectableModel;
-import org.onosproject.net.Annotations;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.CltSignalType;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.OduSignalId;
-import org.onosproject.net.OduSignalType;
-import org.onosproject.net.OduSignalUtils;
-import org.onosproject.net.OtuSignalType;
-import org.onosproject.net.Path;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.TributarySlot;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.net.intent.FlowRuleIntent;
-import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentExtensionService;
-import org.onosproject.net.intent.Key;
-import org.onosproject.net.intent.MockIdGenerator;
-import org.onosproject.net.intent.OpticalOduIntent;
-import org.onosproject.net.optical.OduCltPort;
-import org.onosproject.net.optical.OtuPort;
-import org.onosproject.net.optical.impl.DefaultOduCltPort;
-import org.onosproject.net.optical.impl.DefaultOtuPort;
-import org.onosproject.net.provider.ProviderId;
-import org.onosproject.net.topology.LinkWeight;
-import org.onosproject.net.topology.Topology;
-import org.onosproject.net.topology.TopologyServiceAdapter;
-import org.onosproject.net.device.DeviceServiceAdapter;
-import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.driver.DriverServiceAdapter;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.net.AnnotationKeys.STATIC_PORT;
-import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.net.Device.Type.OTN;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.Link.Type.OPTICAL;
-import static org.onosproject.net.NetTestTools.APP_ID;
-import static org.onosproject.net.NetTestTools.PID;
-
-public class OpticalOduIntentCompilerTest {
-
- private static final String DEV1 = "of:1";
- private static final String DEV2 = "of:2";
- private static final String DEV3 = "of:3";
-
- static final Key KEY1 = Key.of(5L, APP_ID);
-
- private static final String STATIC_TRUE = "true";
- private static final String PNAME = "p2";
-
- private CoreService coreService;
- private IntentExtensionService intentExtensionService;
- private final IdGenerator idGenerator = new MockIdGenerator();
- private OpticalOduIntentCompiler sut;
-
- private final ApplicationId appId = new TestApplicationId("test");
- private static Device device1 = new DefaultDevice(ProviderId.NONE, deviceId(DEV1), OTN,
- "m", "h", "s", "n", new ChassisId(0L));
- private static Device device2 = new DefaultDevice(ProviderId.NONE, deviceId(DEV2), OTN,
- "m", "h", "s", "n", new ChassisId(1L));
- private static Device device3 = new DefaultDevice(ProviderId.NONE, deviceId(DEV3), OTN,
- "m", "h", "s", "n", new ChassisId(2L));
-
- private static Annotations annotations1 = DefaultAnnotations.builder().set(STATIC_PORT, STATIC_TRUE).build();
- private static Annotations annotations2 = DefaultAnnotations.builder().set(PORT_NAME, PNAME).build();
-
- // OduClt ports with signalType=1GBE
- private static final OduCltPort D1P1 =
- new DefaultOduCltPort(new DefaultPort(device1, PortNumber.portNumber(1), true, annotations1),
- CltSignalType.CLT_1GBE);
- private static final OduCltPort D3P2 =
- new DefaultOduCltPort(new DefaultPort(device3, PortNumber.portNumber(2), true, annotations1),
- CltSignalType.CLT_1GBE);
-
- // Otu ports with signalType=ODU2
- private static final OtuPort D1P2 =
- new DefaultOtuPort(new DefaultPort(device1, PortNumber.portNumber(2), true, annotations2),
- OtuSignalType.OTU2);
- private static final OtuPort D2P1 =
- new DefaultOtuPort(new DefaultPort(device2, PortNumber.portNumber(1), true, annotations2),
- OtuSignalType.OTU2);
- private static final OtuPort D2P2 =
- new DefaultOtuPort(new DefaultPort(device2, PortNumber.portNumber(2), true, annotations2),
- OtuSignalType.OTU2);
- private static final OtuPort D3P1 =
- new DefaultOtuPort(new DefaultPort(device3, PortNumber.portNumber(1), true, annotations2),
- OtuSignalType.OTU2);
-
- // OduClt ports with signalType=10GBE
- private static final OduCltPort D1P3 =
- new DefaultOduCltPort(new DefaultPort(device1, PortNumber.portNumber(3), true, annotations1),
- CltSignalType.CLT_10GBE);
- private static final OduCltPort D3P3 =
- new DefaultOduCltPort(new DefaultPort(device3, PortNumber.portNumber(3), true, annotations1),
- CltSignalType.CLT_10GBE);
-
- // OduCltPort ConnectPoints
- private final ConnectPoint d1p1 = new ConnectPoint(device1.id(), D1P1.number());
- private final ConnectPoint d1p3 = new ConnectPoint(device1.id(), D1P3.number());
- private final ConnectPoint d3p2 = new ConnectPoint(device3.id(), D3P2.number());
- private final ConnectPoint d3p3 = new ConnectPoint(device3.id(), D3P3.number());
-
- // OtuPort ConnectPoints
- private final ConnectPoint d1p2 = new ConnectPoint(device1.id(), D1P2.number());
- private final ConnectPoint d2p1 = new ConnectPoint(device2.id(), D2P1.number());
- private final ConnectPoint d2p2 = new ConnectPoint(device2.id(), D2P2.number());
- private final ConnectPoint d3p1 = new ConnectPoint(device3.id(), D3P1.number());
-
- private final List<Link> links = Arrays.asList(
- DefaultLink.builder().providerId(PID).src(d1p2).dst(d2p1).type(OPTICAL).build(),
- DefaultLink.builder().providerId(PID).src(d2p2).dst(d3p1).type(OPTICAL).build()
- );
- private final Path path = new DefaultPath(PID, links, 3);
-
- private OpticalOduIntent intent;
-
- /**
- * Mocks the topology service to give paths in the test.
- */
- private class MockTopologyService extends TopologyServiceAdapter {
- Set<Path> paths = Sets.newHashSet(path);
-
- @Override
- public Topology currentTopology() {
- return null;
- }
-
- @Override
- public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst, LinkWeight weight) {
- return paths;
- }
- }
-
- /**
- * Mocks the device service so that devices and ports appear available in the test.
- */
- private static class MockDeviceService extends DeviceServiceAdapter {
- @Override
- public boolean isAvailable(DeviceId deviceId) {
- return true;
- }
-
- @Override
- public List<Port> getPorts(DeviceId deviceId) {
- if (deviceId.equals(deviceId(DEV1))) {
- return ImmutableList.of((Port) D1P1, (Port) D1P2, (Port) D1P3);
- }
-
- if (deviceId.equals(deviceId(DEV2))) {
- return ImmutableList.of((Port) D2P1, (Port) D2P2);
- }
-
- if (deviceId.equals(deviceId(DEV3))) {
- return ImmutableList.of((Port) D3P1, (Port) D3P2, (Port) D3P3);
- }
-
- return Collections.emptyList();
- }
-
- @Override
- public Port getPort(DeviceId deviceId, PortNumber portNumber) {
- if (deviceId.equals(deviceId(DEV1))) {
- switch (portNumber.toString()) {
- case "1":
- return D1P1;
- case "2":
- return D1P2;
- case "3":
- return D1P3;
- default:
- return null;
- }
- }
- if (deviceId.equals(deviceId(DEV2))) {
- switch (portNumber.toString()) {
- case "1":
- return D2P1;
- case "2":
- return D2P2;
- default:
- return null;
- }
- }
- if (deviceId.equals(deviceId(DEV3))) {
- switch (portNumber.toString()) {
- case "1":
- return D3P1;
- case "2":
- return D3P2;
- case "3":
- return D3P3;
- default:
- return null;
- }
- }
- return null;
- }
- }
-
- private static class MockDriverService extends DriverServiceAdapter
- implements DriverService {
- // TODO override to return appropriate driver,
- // with DefaultOpticalDevice support, etc.
- }
-
- @Before
- public void setUp() {
- AbstractProjectableModel.setDriverService(null, new MockDriverService());
- sut = new OpticalOduIntentCompiler();
- coreService = createMock(CoreService.class);
- expect(coreService.registerApplication("org.onosproject.net.intent"))
- .andReturn(appId);
- sut.coreService = coreService;
- sut.deviceService = new MockDeviceService();
- sut.resourceService = new MockResourceService();
- sut.topologyService = new MockTopologyService();
-
- Intent.bindIdGenerator(idGenerator);
-
- intentExtensionService = createMock(IntentExtensionService.class);
- intentExtensionService.registerCompiler(OpticalOduIntent.class, sut);
- intentExtensionService.unregisterCompiler(OpticalOduIntent.class);
- sut.intentManager = intentExtensionService;
-
- replay(coreService, intentExtensionService);
- }
-
- @After
- public void tearDown() {
- Intent.unbindIdGenerator(idGenerator);
- }
-
- /**
- * Tests compile of OpticalOduIntent with allocation of TributarySlots.
- * Compile two ODUCLT ports (with CLT_1GBE), over OTU ports (with OTU2):
- * - only one TributarySlot is used
- */
- @Test
- public void test1GbeMultiplexOverOdu2() {
-
- intent = OpticalOduIntent.builder()
- .appId(APP_ID)
- .key(KEY1)
- .src(d1p1)
- .dst(d3p2)
- .signalType(D1P1.signalType())
- .bidirectional(false)
- .build();
-
- sut.activate();
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
-
- // 1st Device
- FlowRule rule1 = rules.stream()
- .filter(x -> x.deviceId().equals(device1.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder1 = DefaultTrafficSelector.builder();
- selectorBuilder1.matchInPort(d1p1.port());
- selectorBuilder1.add(Criteria.matchOduSignalType(OduSignalType.ODU0));
- assertThat(rule1.selector(), is(selectorBuilder1.build()));
-
- // validate SRC treatment (with OduSignalId, where 1 TributarySlot is used)
- TrafficTreatment.Builder treatmentBuilder1 = DefaultTrafficTreatment.builder();
- Set<TributarySlot> slots = new HashSet<>();
- slots.add(TributarySlot.of(1));
- OduSignalId oduSignalId = OduSignalUtils.buildOduSignalId(OduSignalType.ODU2, slots);
- treatmentBuilder1.add(Instructions.modL1OduSignalId(oduSignalId));
- treatmentBuilder1.setOutput(d1p2.port());
- assertThat(rule1.treatment(), is(treatmentBuilder1.build()));
-
- // 2nd Device
- FlowRule rule2 = rules.stream()
- .filter(x -> x.deviceId().equals(device2.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder2 = DefaultTrafficSelector.builder();
- selectorBuilder2.matchInPort(d2p1.port());
- selectorBuilder2.add(Criteria.matchOduSignalType(OduSignalType.ODU0));
- selectorBuilder2.add(Criteria.matchOduSignalId(oduSignalId));
- assertThat(rule2.selector(), is(selectorBuilder2.build()));
-
- // validate SRC treatment (with OduSignalId, where 1 TributarySlot is used)
- TrafficTreatment.Builder treatmentBuilder2 = DefaultTrafficTreatment.builder();
- treatmentBuilder2.add(Instructions.modL1OduSignalId(oduSignalId));
- treatmentBuilder2.setOutput(d2p2.port());
- assertThat(rule2.treatment(), is(treatmentBuilder2.build()));
-
-
- // 3rd Device
- FlowRule rule3 = rules.stream()
- .filter(x -> x.deviceId().equals(device3.id()))
- .findFirst()
- .get();
- // validate DST selector (with OduSignalId, where the same TributarySlot is used)
- TrafficSelector.Builder selectorBuilder3 = DefaultTrafficSelector.builder();
- selectorBuilder3.matchInPort(d3p1.port());
- selectorBuilder3.add(Criteria.matchOduSignalType(OduSignalType.ODU0));
- selectorBuilder3.add(Criteria.matchOduSignalId(oduSignalId));
- assertThat(rule3.selector(), is(selectorBuilder3.build()));
-
- // validate DST treatment
- assertThat(rule3.treatment(), is(
- DefaultTrafficTreatment.builder().setOutput(d3p2.port()).build()
- ));
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
- /**
- * Tests compile of OpticalOduIntent with allocation of TributarySlots.
- * Compile two ODUCLT ports (with CLT_10GBE), over OTU ports (with OTU2):
- * - All TributarySlots are used
- */
- @Test
- public void test10GbeMultiplexOverOdu2() {
-
- intent = OpticalOduIntent.builder()
- .appId(APP_ID)
- .key(KEY1)
- .src(d1p3)
- .dst(d3p3)
- .signalType(D1P3.signalType())
- .bidirectional(false)
- .build();
-
- sut.activate();
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
-
- // 1st Device
- FlowRule rule1 = rules.stream()
- .filter(x -> x.deviceId().equals(device1.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder1 = DefaultTrafficSelector.builder();
- selectorBuilder1.matchInPort(d1p3.port());
- selectorBuilder1.add(Criteria.matchOduSignalType(OduSignalType.ODU2));
- assertThat(rule1.selector(), is(selectorBuilder1.build()));
-
- // validate SRC treatment (without OduSignalId - all TributarySlots are used)
- TrafficTreatment.Builder treatmentBuilder1 = DefaultTrafficTreatment.builder();
- treatmentBuilder1.setOutput(d1p2.port());
- assertThat(rule1.treatment(), is(treatmentBuilder1.build()));
-
- // 2nd Device
- FlowRule rule2 = rules.stream()
- .filter(x -> x.deviceId().equals(device2.id()))
- .findFirst()
- .get();
- // validate SRC selector
- TrafficSelector.Builder selectorBuilder2 = DefaultTrafficSelector.builder();
- selectorBuilder2.matchInPort(d2p1.port());
- selectorBuilder2.add(Criteria.matchOduSignalType(OduSignalType.ODU2));
- assertThat(rule2.selector(), is(selectorBuilder2.build()));
-
- // validate SRC treatment (without OduSignalId - all TributarySlots are used)
- TrafficTreatment.Builder treatmentBuilder2 = DefaultTrafficTreatment.builder();
- treatmentBuilder2.setOutput(d2p2.port());
- assertThat(rule2.treatment(), is(treatmentBuilder2.build()));
-
-
- // 3rd Device
- FlowRule rule3 = rules.stream()
- .filter(x -> x.deviceId().equals(device3.id()))
- .findFirst()
- .get();
- // validate DST selector (without OduSignalId - all TributarySlots are used)
- TrafficSelector.Builder selectorBuilder3 = DefaultTrafficSelector.builder();
- selectorBuilder3.matchInPort(d3p1.port());
- selectorBuilder3.add(Criteria.matchOduSignalType(OduSignalType.ODU2));
- assertThat(rule3.selector(), is(selectorBuilder3.build()));
-
- // validate DST treatment
- assertThat(rule3.treatment(), is(
- DefaultTrafficTreatment.builder().setOutput(d3p3.port()).build()
- ));
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
-}
\ No newline at end of file
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompilerTest.java
deleted file mode 100644
index d2a388f..0000000
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/OpticalPathIntentCompilerTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.net.intent.impl.compiler;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onosproject.TestApplicationId;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.core.IdGenerator;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultLink;
-import org.onosproject.net.DefaultPath;
-import org.onosproject.net.Link;
-import org.onosproject.net.OchSignalType;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.intent.FlowRuleIntent;
-import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentExtensionService;
-import org.onosproject.net.intent.MockIdGenerator;
-import org.onosproject.net.intent.OpticalPathIntent;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-import static org.junit.Assert.assertEquals;
-import static org.onosproject.net.Link.Type.DIRECT;
-import static org.onosproject.net.NetTestTools.PID;
-import static org.onosproject.net.NetTestTools.connectPoint;
-import static org.onosproject.net.NetTestTools.createLambda;
-
-public class OpticalPathIntentCompilerTest {
-
- private CoreService coreService;
- private IntentExtensionService intentExtensionService;
- private final IdGenerator idGenerator = new MockIdGenerator();
- private OpticalPathIntentCompiler sut;
-
- private final ApplicationId appId = new TestApplicationId("test");
- private final ConnectPoint d1p1 = connectPoint("s1", 0);
- private final ConnectPoint d2p0 = connectPoint("s2", 0);
- private final ConnectPoint d2p1 = connectPoint("s2", 1);
- private final ConnectPoint d3p1 = connectPoint("s3", 1);
-
- private final List<Link> links = Arrays.asList(
- DefaultLink.builder().providerId(PID).src(d1p1).dst(d2p0).type(DIRECT).build(),
- DefaultLink.builder().providerId(PID).src(d2p1).dst(d3p1).type(DIRECT).build()
- );
- private final int hops = links.size() + 1;
- private OpticalPathIntent intent;
-
- @Before
- public void setUp() {
- sut = new OpticalPathIntentCompiler();
- coreService = createMock(CoreService.class);
- expect(coreService.registerApplication("org.onosproject.net.intent"))
- .andReturn(appId);
- sut.coreService = coreService;
-
- Intent.bindIdGenerator(idGenerator);
-
- intent = OpticalPathIntent.builder()
- .appId(appId)
- .src(d1p1)
- .dst(d3p1)
- .path(new DefaultPath(PID, links, hops))
- .lambda(createLambda())
- .signalType(OchSignalType.FIXED_GRID)
- .build();
- intentExtensionService = createMock(IntentExtensionService.class);
- intentExtensionService.registerCompiler(OpticalPathIntent.class, sut);
- intentExtensionService.unregisterCompiler(OpticalPathIntent.class);
- sut.intentManager = intentExtensionService;
-
- replay(coreService, intentExtensionService);
- }
-
- @After
- public void tearDown() {
- Intent.unbindIdGenerator(idGenerator);
- }
-
- @Test
- public void testCompiler() {
- sut.activate();
-
- List<Intent> compiled = sut.compile(intent, Collections.emptyList());
- assertThat(compiled, hasSize(1));
-
- Collection<FlowRule> rules = ((FlowRuleIntent) compiled.get(0)).flowRules();
- rules.stream()
- .filter(x -> x.deviceId().equals(d1p1.deviceId()))
- .findFirst()
- .get();
-
- rules.stream()
- .filter(x -> x.deviceId().equals(d2p1.deviceId()))
- .findFirst()
- .get();
-
- rules.stream()
- .filter(x -> x.deviceId().equals(d3p1.deviceId()))
- .findFirst()
- .get();
-
- rules.forEach(rule -> assertEquals("FlowRule priority is incorrect",
- intent.priority(), rule.priority()));
-
- sut.deactivate();
- }
-
- //TODO test bidirectional optical paths and verify rules
-
-}
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PathIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PathIntentCompilerTest.java
index c880823..b3efb24 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PathIntentCompilerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/PathIntentCompilerTest.java
@@ -47,6 +47,7 @@
import org.onosproject.net.intent.PathIntent;
import org.onosproject.net.intent.constraint.EncapsulationConstraint;
import org.onosproject.net.provider.ProviderId;
+import org.onosproject.net.resource.MockResourceService;
import java.util.Arrays;
import java.util.Collection;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/phase/CompilingTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/phase/CompilingTest.java
index e188ccd..2a55931 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/phase/CompilingTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/phase/CompilingTest.java
@@ -31,11 +31,11 @@
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.intent.Intent;
+import org.onosproject.net.intent.IntentCompilationException;
import org.onosproject.net.intent.IntentData;
import org.onosproject.net.intent.MockIdGenerator;
import org.onosproject.net.intent.PathIntent;
import org.onosproject.net.intent.PointToPointIntent;
-import org.onosproject.net.intent.impl.IntentCompilationException;
import org.onosproject.net.intent.impl.IntentProcessor;
import org.onosproject.net.provider.ProviderId;
import org.onosproject.store.Timestamp;