[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;