NETVIRT-1637 CSIT failure
[netvirt.git] / sfc / classifier / impl / src / test / java / org / opendaylight / netvirt / sfc / classifier / service / domain / ClassifierEntryTest.java
1 /*
2  * Copyright (c) 2017 Ericsson 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.netvirt.sfc.classifier.service.domain;
10
11 import static org.mockito.Mockito.verify;
12 import static org.mockito.Mockito.verifyNoMoreInteractions;
13
14 import com.google.common.testing.EqualsTester;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.mockito.Mock;
18 import org.mockito.junit.MockitoJUnitRunner;
19 import org.opendaylight.netvirt.sfc.classifier.service.domain.api.ClassifierEntryRenderer;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.Matches;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.MatchesBuilder;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.matches.AceType;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.acl.access.list.entries.ace.matches.ace.type.AceEthBuilder;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
27
28 @RunWith(MockitoJUnitRunner.class)
29 public class ClassifierEntryTest {
30
31     @Mock
32     private ClassifierEntryRenderer renderer;
33
34     @Test
35     public void equalsContract() throws Exception {
36         new EqualsTester()
37                 .addEqualityGroup(buildIngressEntry(), buildIngressEntry())
38                 .addEqualityGroup(buildNodeEntry(), buildNodeEntry())
39                 .addEqualityGroup(buildMatchEntry(), buildMatchEntry())
40                 .addEqualityGroup(buildPathEntry(), buildPathEntry())
41                 .addEqualityGroup(buildEgressEntry(), buildEgressEntry())
42                 .testEquals();
43     }
44
45     private ClassifierEntry buildIngressEntry() {
46         return ClassifierEntry.buildIngressEntry(new InterfaceKey("input"));
47     }
48
49     private ClassifierEntry buildEgressEntry() {
50         return ClassifierEntry.buildEgressEntry(new InterfaceKey("output"), "127.0.0.1");
51     }
52
53     private ClassifierEntry buildNodeEntry() {
54         return ClassifierEntry.buildNodeEntry(new NodeId("node"));
55     }
56
57     private ClassifierEntry buildPathEntry() {
58         return ClassifierEntry.buildPathEntry(new NodeId("node"), 100L, (short) 254, (short) 253, "127.0.0.10");
59     }
60
61     private ClassifierEntry buildMatchEntry() {
62         AceType aceType = new AceEthBuilder()
63                 .setDestinationMacAddress(new MacAddress("12:34:56:78:90:AB"))
64                 .build();
65         Matches matches = new MatchesBuilder().setAceType(aceType).build();
66         return ClassifierEntry.buildMatchEntry(
67                 new NodeId("node"),
68                 "connector",
69                 matches,
70                 100L,
71                 (short) 254);
72     }
73
74     @Test
75     public void renderIngressEntry() throws Exception {
76         InterfaceKey interfaceKey = new InterfaceKey("interface");
77         ClassifierEntry entry = ClassifierEntry.buildIngressEntry(interfaceKey);
78         entry.render(renderer);
79         verify(renderer).renderIngress(interfaceKey);
80         verifyNoMoreInteractions(renderer);
81     }
82
83     @Test
84     public void renderEgressEntry() throws Exception {
85         InterfaceKey interfaceKey = new InterfaceKey("interface");
86         ClassifierEntry entry = ClassifierEntry.buildEgressEntry(interfaceKey, "127.0.0.1");
87         entry.render(renderer);
88         verify(renderer).renderEgress(interfaceKey, "127.0.0.1");
89         verifyNoMoreInteractions(renderer);
90     }
91
92     @Test
93     public void renderNodeEntry() throws Exception {
94         NodeId nodeId = new NodeId("node");
95         ClassifierEntry entry = ClassifierEntry.buildNodeEntry(nodeId);
96         entry.render(renderer);
97         verify(renderer).renderNode(nodeId);
98         verifyNoMoreInteractions(renderer);
99     }
100
101     @Test
102     public void renderPathEntry() throws Exception {
103         NodeId nodeId = new NodeId("node");
104         Long nsp = 2L;
105         short nsi = (short) 254;
106         short nsl = (short) 252;
107         String firstHopIp = "127.0.0.1";
108         ClassifierEntry entry = ClassifierEntry.buildPathEntry(nodeId, nsp, nsi, nsl, firstHopIp);
109         entry.render(renderer);
110         verify(renderer).renderPath(nodeId, nsp, nsi, nsl, firstHopIp);
111         verifyNoMoreInteractions(renderer);
112     }
113
114     @Test
115     public void renderMatchEntry() throws Exception {
116         NodeId nodeId = new NodeId("node");
117         String connector = "openflow:0123456789:1";
118         Long nsp = 2L;
119         Short nsi = (short) 254;
120         Matches matches = new MatchesBuilder().build();
121         ClassifierEntry entry = ClassifierEntry.buildMatchEntry(nodeId, connector, matches, nsp, nsi);
122         entry.render(renderer);
123         verify(renderer).renderMatch(nodeId, connector, matches, nsp, nsi);
124         verifyNoMoreInteractions(renderer);
125     }
126
127     @Test
128     public void suppressIngressEntry() throws Exception {
129         InterfaceKey interfaceKey = new InterfaceKey("interface");
130         ClassifierEntry entry = ClassifierEntry.buildIngressEntry(interfaceKey);
131         entry.suppress(renderer);
132         verify(renderer).suppressIngress(interfaceKey);
133         verifyNoMoreInteractions(renderer);
134     }
135
136     @Test
137     public void suppressEgressEntry() throws Exception {
138         InterfaceKey interfaceKey = new InterfaceKey("interface");
139         ClassifierEntry entry = ClassifierEntry.buildEgressEntry(interfaceKey, "127.0.0.1");
140         entry.suppress(renderer);
141         verify(renderer).suppressEgress(interfaceKey, "127.0.0.1");
142         verifyNoMoreInteractions(renderer);
143     }
144
145     @Test
146     public void suppressNodeEntry() throws Exception {
147         NodeId nodeId = new NodeId("node");
148         ClassifierEntry entry = ClassifierEntry.buildNodeEntry(nodeId);
149         entry.suppress(renderer);
150         verify(renderer).suppressNode(nodeId);
151         verifyNoMoreInteractions(renderer);
152     }
153
154     @Test
155     public void suppressPathEntry() throws Exception {
156         NodeId nodeId = new NodeId("node");
157         Long nsp = 2L;
158         short nsi = (short) 254;
159         short nsl = (short) 252;
160         String firstHopIp = "127.0.0.1";
161         ClassifierEntry entry = ClassifierEntry.buildPathEntry(nodeId, nsp, nsi, nsl, firstHopIp);
162         entry.suppress(renderer);
163         verify(renderer).suppressPath(nodeId, nsp, nsi, nsl, firstHopIp);
164         verifyNoMoreInteractions(renderer);
165     }
166
167     @Test
168     public void suppressMatchEntry() throws Exception {
169         NodeId nodeId = new NodeId("node");
170         String connector = "openflow:0123456789:1";
171         Long nsp = 2L;
172         Short nsi = (short) 254;
173         Matches matches = new MatchesBuilder().build();
174         ClassifierEntry entry = ClassifierEntry.buildMatchEntry(nodeId, connector, matches, nsp, nsi);
175         entry.suppress(renderer);
176         verify(renderer).suppressMatch(nodeId, connector, matches, nsp, nsi);
177         verifyNoMoreInteractions(renderer);
178     }
179
180 }