Neon MRI changes
[lispflowmapping.git] / mappingservice / neutron / src / test / java / org / opendaylight / lispflowmapping / neutron / mappingmanager / PortUuidToPortDataMapperTest.java
1 /*
2  * Copyright (c) 2017 Cisco Systems, Inc.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.lispflowmapping.neutron.mappingmanager;
9
10 import java.util.HashMap;
11
12 import org.junit.Assert;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.Mockito;
16 import org.mockito.junit.MockitoJUnitRunner;
17 import org.opendaylight.lispflowmapping.neutron.mappingmanager.mappers.PortUuidToPortDataMapper;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
19 import org.powermock.core.classloader.annotations.PrepareForTest;
20 import org.powermock.modules.junit4.PowerMockRunner;
21 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
22 import org.powermock.reflect.Whitebox;
23
24 /**
25  * Created by Shakib Ahmed on 2/7/17.
26  */
27
28 @RunWith(PowerMockRunner.class)
29 @PowerMockRunnerDelegate(MockitoJUnitRunner.class)
30 @PrepareForTest(PortUuidToPortDataMapper.class)
31 public class PortUuidToPortDataMapperTest {
32
33     private static final Eid SAMPLE_EID = Mockito.mock(Eid.class);
34     private static final PortData PORT_DATA_1 = new PortData("1", SAMPLE_EID);
35     private static final PortData PORT_DATA_2 = new PortData("2", SAMPLE_EID);
36     private static final PortData PORT_DATA_3 = new PortData("3", SAMPLE_EID);
37     private static final PortData PORT_DATA_4 = new PortData("4", SAMPLE_EID);
38
39     @Test
40     public void unprocessedPortDataAddTest() {
41         PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
42
43         portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_1.getPortUuid(), PORT_DATA_1);
44         portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_2.getPortUuid(), PORT_DATA_2);
45
46         processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 0, 2);
47     }
48
49     @Test
50     public void addPortDataToProcessedTest() {
51         PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
52
53         portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_1);
54         portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_2);
55
56         processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 2, 0);
57     }
58
59     @Test
60     public void transferAllProcessedPortDataToUnprocessedTest() {
61         PortUuidToPortDataMapper portUuidToPortDataMapper = new PortUuidToPortDataMapper();
62
63         portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_3.getPortUuid(), PORT_DATA_3);
64         portUuidToPortDataMapper.addUnprocessedUuidToPortDataMapping(PORT_DATA_4.getPortUuid(), PORT_DATA_4);
65
66         portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_1);
67         portUuidToPortDataMapper.addPortDataToProcessed(PORT_DATA_2);
68
69         portUuidToPortDataMapper.transferAllProcessedPortDataToUnprocessed();
70
71         processedAndUnprocessedDataAmountVerify(portUuidToPortDataMapper, 0, 4);
72
73         HashMap<String, PortData> unprocessedPortData = extractUnprocessedDataMap(portUuidToPortDataMapper);
74
75         Assert.assertEquals(PORT_DATA_1, unprocessedPortData.get(PORT_DATA_1.getPortUuid()));
76         Assert.assertEquals(PORT_DATA_2, unprocessedPortData.get(PORT_DATA_2.getPortUuid()));
77         Assert.assertEquals(PORT_DATA_3, unprocessedPortData.get(PORT_DATA_3.getPortUuid()));
78         Assert.assertEquals(PORT_DATA_4, unprocessedPortData.get(PORT_DATA_4.getPortUuid()));
79     }
80
81     private void processedAndUnprocessedDataAmountVerify(PortUuidToPortDataMapper portUuidToPortDataMapper,
82                                                          int processedDataCount,
83                                                          int unprocessedDataCount) {
84         HashMap<String, PortData> unprocessedDataMap = extractUnprocessedDataMap(portUuidToPortDataMapper);
85         HashMap<String, PortData> processedDataMap = extractProcessedDataMap(portUuidToPortDataMapper);
86
87         Assert.assertEquals(unprocessedDataCount, unprocessedDataMap.size());
88         Assert.assertEquals(processedDataCount, processedDataMap.size());
89     }
90
91     private HashMap<String, PortData> extractProcessedDataMap(PortUuidToPortDataMapper portUuidToPortDataMapper) {
92         HashMap<String, PortData> processedDataMap;
93         try {
94             processedDataMap = (HashMap<String, PortData>) Whitebox
95                     .getInternalState(portUuidToPortDataMapper, "processedPortUuidToEidMapper");
96         } catch (ClassCastException e) {
97             throw e;
98         }
99         return processedDataMap;
100     }
101
102     private HashMap<String, PortData> extractUnprocessedDataMap(PortUuidToPortDataMapper portUuidToPortDataMapper) {
103         HashMap<String, PortData> unprocessedDataMap;
104         try {
105             unprocessedDataMap = (HashMap<String, PortData>) Whitebox
106                     .getInternalState(portUuidToPortDataMapper, "unprocessedPortUuidToEidMapper");
107         } catch (ClassCastException e) {
108             throw e;
109         }
110         return unprocessedDataMap;
111     }
112 }