06bbc8543f903e4fbf96fa5134916f3d10ab690c
[groupbasedpolicy.git] / renderers / ofoverlay / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ofoverlay / flow / ExternalMapperTest.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others. 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
9 package org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow;
10
11 import static org.mockito.Matchers.any;
12 import static org.mockito.Mockito.mock;
13 import static org.mockito.Mockito.never;
14 import static org.mockito.Mockito.times;
15 import static org.mockito.Mockito.verify;
16 import static org.mockito.Mockito.when;
17
18 import java.util.Arrays;
19 import java.util.HashSet;
20 import java.util.Set;
21
22 import org.junit.Assert;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.OfContext;
26 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.PolicyManager.FlowMap;
27 import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
28 import org.opendaylight.groupbasedpolicy.resolver.PolicyInfo;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
32
33 public class ExternalMapperTest {
34
35     private ExternalMapper mapper;
36
37     private OfContext ctx;
38     private short tableId;
39     private NodeId nodeId;
40     private PolicyInfo policyInfo;
41     private FlowMap flowMap;
42     private SwitchManager switchManager;
43
44     @Before
45     public void initialisation() {
46         ctx = mock(OfContext.class);
47         tableId = 5;
48         nodeId = mock(NodeId.class);
49         policyInfo = mock(PolicyInfo.class);
50         flowMap = mock(FlowMap.class);
51         switchManager = mock(SwitchManager.class);
52         when(ctx.getSwitchManager()).thenReturn(switchManager);
53
54         mapper = new ExternalMapper(ctx, tableId);
55     }
56
57     @Test
58     public void consturctorTest() {
59         Assert.assertEquals(tableId, mapper.getTableId());
60     }
61
62     @Test
63     public void syncTest() throws Exception {
64         NodeConnectorId nodeConnectorId = mock(NodeConnectorId.class);
65         Set<NodeConnectorId> externalPorts = new HashSet<NodeConnectorId>(Arrays.asList(nodeConnectorId));
66         when(switchManager.getExternalPorts(nodeId)).thenReturn(externalPorts);
67
68         mapper.sync(nodeId, policyInfo, flowMap);
69         verify(flowMap, times(2)).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class));
70     }
71
72     @Test
73     public void syncTestNoExternalPorts() throws Exception {
74         when(switchManager.getExternalPorts(nodeId)).thenReturn(null);
75
76         mapper.sync(nodeId, policyInfo, flowMap);
77         verify(flowMap, never()).writeFlow(any(NodeId.class), any(Short.class), any(Flow.class));
78     }
79 }