/* * Copyright 2017-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.incubator.net.virtual.impl; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.onlab.junit.TestUtils; import org.onlab.osgi.ComponentContextAdapter; import org.onosproject.cfg.ComponentConfigAdapter; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.ClusterServiceAdapter; import org.onosproject.cluster.NodeId; import org.onosproject.incubator.store.virtual.impl.DistributedVirtualPacketStore; import org.onosproject.mastership.MastershipServiceAdapter; import org.onosproject.net.DeviceId; import org.onosproject.net.flow.DefaultTrafficTreatment; import org.onosproject.net.packet.DefaultOutboundPacket; import org.onosproject.net.packet.OutboundPacket; import org.onosproject.store.cluster.messaging.ClusterCommunicationServiceAdapter; import org.onosproject.store.cluster.messaging.MessageSubject; import java.nio.ByteBuffer; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import static org.junit.Assert.assertNull; /** * Junit tests for VirtualNetworkPacketManager using DistributedVirtualPacketStore.. * This test class extends VirtualNetworkPacketManagerTest - all the tests defined in * VirtualNetworkPacketManagerTest will run using DistributedVirtualPacketStore. */ public class VirtualNetworkPacketManagerWithDistStoreTest extends VirtualNetworkPacketManagerTest { private DistributedVirtualPacketStore distStore; private ClusterService clusterService = new ClusterServiceAdapter(); @Before public void setUp() throws TestUtils.TestUtilsException { setUpDistPacketStore(); super.setUp(); TestUtils.setField(packetManager1, "storageService", storageService); } private void setUpDistPacketStore() throws TestUtils.TestUtilsException { distStore = new DistributedVirtualPacketStore(); TestUtils.setField(distStore, "cfgService", new ComponentConfigAdapter()); TestUtils.setField(distStore, "storageService", storageService); TestUtils.setField(distStore, "clusterService", clusterService); TestUtils.setField(distStore, "communicationService", new TestClusterCommunicationService()); TestUtils.setField(distStore, "mastershipService", new TestMastershipService()); distStore.activate(new ComponentContextAdapter()); packetStore = distStore; // super.setUp() will cause Distributed store to be used. } @After public void tearDown() { distStore.deactivate(); } @Override @Test @Ignore("Ignore until there is MastershipService support for virtual devices") public void emitTest() { super.emitTest(); } /** * Tests the correct usage of emit() for a outbound packet - master of packet's * sendThrough is not local node. */ @Test @Ignore("Ignore until there is MastershipService support for virtual devices") public void emit2Test() { OutboundPacket packet = new DefaultOutboundPacket(VDID2, DefaultTrafficTreatment.emptyTreatment(), ByteBuffer.allocate(5)); packetManager1.emit(packet); assertNull("Packet should not have been emmitted", emittedPacket); } private final class TestMastershipService extends MastershipServiceAdapter { @Override public NodeId getMasterFor(DeviceId deviceId) { if (VDID1.equals(deviceId)) { return clusterService.getLocalNode().id(); } return new NodeId("abc"); } } private final class TestClusterCommunicationService extends ClusterCommunicationServiceAdapter { @Override public <M> CompletableFuture<Void> unicast(M message, MessageSubject subject, Function<M, byte[]> encoder, NodeId toNodeId) { return new CompletableFuture<>(); } } }