Add mapping record with port data add with fixed ip
[lispflowmapping.git] / mappingservice / neutron / src / test / java / org / opendaylight / lispflowmapping / neutron / mappingmanager / PortUuidToPortDataMapperTest.java
diff --git a/mappingservice/neutron/src/test/java/org/opendaylight/lispflowmapping/neutron/mappingmanager/PortUuidToPortDataMapperTest.java b/mappingservice/neutron/src/test/java/org/opendaylight/lispflowmapping/neutron/mappingmanager/PortUuidToPortDataMapperTest.java
new file mode 100644 (file)
index 0000000..a17f3f0
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2017 Cisco Systems, Inc.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.lispflowmapping.neutron.mappingmanager;
+
+import java.util.HashMap;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.powermock.reflect.Whitebox;
+
+/**
+ * Created by Shakib Ahmed on 2/7/17.
+ */
+
+@RunWith(PowerMockRunner.class)
+@PowerMockRunnerDelegate(MockitoJUnitRunner.class)
+@PrepareForTest(PortUuidToPortDataMapper.class)
+public class PortUuidToPortDataMapperTest {
+
+    private static final Eid SAMPLE_EID = Mockito.mock(Eid.class);
+    private static final PortData PORT_DATA_1 = new PortData("1", SAMPLE_EID);
+    private static final PortData PORT_DATA_2 = new PortData("2", SAMPLE_EID);
+    private static final PortData PORT_DATA_3 = new PortData("3", SAMPLE_EID);
+    private static final PortData PORT_DATA_4 = new PortData("4", SAMPLE_EID);
+
+    @Test
+    public void unprocessedPortDataAddTest() {
+        PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
+
+        portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_1.getPortUuid(), PORT_DATA_1);
+        portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_2.getPortUuid(), PORT_DATA_2);
+
+        processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 0, 2);
+    }
+
+    @Test
+    public void addPortDataToProcessedTest() {
+        PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
+
+        portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_1);
+        portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_2);
+
+        processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 2, 0);
+    }
+
+    @Test
+    public void transferAllProcessedPortDataToUnprocessedTest() {
+        PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
+
+        portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_3.getPortUuid(), PORT_DATA_3);
+        portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_4.getPortUuid(), PORT_DATA_4);
+
+        portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_1);
+        portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_2);
+
+        portUuidToPortDataMapper.transferAllProcessedPortDataToUnprocessed();
+
+        processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 0, 4);
+
+        HashMap<String, PortData> unprocessedPortData = extractUnprocessedDataMap(portUuidToPortDataMapper);
+
+        Assert.assertEquals(PORT_DATA_1, unprocessedPortData.get(PORT_DATA_1.getPortUuid()));
+        Assert.assertEquals(PORT_DATA_2, unprocessedPortData.get(PORT_DATA_2.getPortUuid()));
+        Assert.assertEquals(PORT_DATA_3, unprocessedPortData.get(PORT_DATA_3.getPortUuid()));
+        Assert.assertEquals(PORT_DATA_4, unprocessedPortData.get(PORT_DATA_4.getPortUuid()));
+    }
+
+    private void processedAndUnprocessedDataAmountVerify(PortUuidToPortDataMapper portUuidToPortDataMapper,
+                                                         int processedDataCount,
+                                                         int unprocessedDataCount) {
+        HashMap<String, PortData> unprocessedDataMap = extractUnprocessedDataMap(portUuidToPortDataMapper);
+        HashMap<String, PortData> processedDataMap = extractProcessedDataMap(portUuidToPortDataMapper);
+
+        Assert.assertEquals(unprocessedDataCount, unprocessedDataMap.size());
+        Assert.assertEquals(processedDataCount, processedDataMap.size());
+    }
+
+    private HashMap<String, PortData> extractProcessedDataMap(PortUuidToPortDataMapper portUuidToPortDataMapper) {
+        HashMap<String, PortData> processedDataMap;
+        try {
+            processedDataMap = (HashMap<String, PortData>) Whitebox
+                    .getInternalState(portUuidToPortDataMapper, "processedPortUuidToEidMapper");
+        } catch (ClassCastException e) {
+            throw e;
+        }
+        return processedDataMap;
+    }
+
+    private HashMap<String, PortData> extractUnprocessedDataMap(PortUuidToPortDataMapper portUuidToPortDataMapper) {
+        HashMap<String, PortData> unprocessedDataMap;
+        try {
+            unprocessedDataMap = (HashMap<String, PortData>) Whitebox
+                    .getInternalState(portUuidToPortDataMapper, "unprocessedPortUuidToEidMapper");
+        } catch (ClassCastException e) {
+            throw e;
+        }
+        return unprocessedDataMap;
+    }
+}