2 * Copyright (c) 2017 Ericsson Inc. and others. All rights reserved.
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
9 package org.opendaylight.netvirt.sfc.classifier.service.domain;
11 import static org.mockito.Mockito.verify;
12 import static org.mockito.Mockito.verifyNoMoreInteractions;
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;
28 @RunWith(MockitoJUnitRunner.class)
29 public class ClassifierEntryTest {
32 private ClassifierEntryRenderer renderer;
35 public void equalsContract() throws Exception {
37 .addEqualityGroup(buildIngressEntry(), buildIngressEntry())
38 .addEqualityGroup(buildNodeEntry(), buildNodeEntry())
39 .addEqualityGroup(buildMatchEntry(), buildMatchEntry())
40 .addEqualityGroup(buildPathEntry(), buildPathEntry())
41 .addEqualityGroup(buildEgressEntry(), buildEgressEntry())
45 private ClassifierEntry buildIngressEntry() {
46 return ClassifierEntry.buildIngressEntry(new InterfaceKey("input"));
49 private ClassifierEntry buildEgressEntry() {
50 return ClassifierEntry.buildEgressEntry(new InterfaceKey("output"), "127.0.0.1");
53 private ClassifierEntry buildNodeEntry() {
54 return ClassifierEntry.buildNodeEntry(new NodeId("node"));
57 private ClassifierEntry buildPathEntry() {
58 return ClassifierEntry.buildPathEntry(new NodeId("node"), 100L, (short) 254, (short) 253, "127.0.0.10");
61 private ClassifierEntry buildMatchEntry() {
62 AceType aceType = new AceEthBuilder()
63 .setDestinationMacAddress(new MacAddress("12:34:56:78:90:AB"))
65 Matches matches = new MatchesBuilder().setAceType(aceType).build();
66 return ClassifierEntry.buildMatchEntry(
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);
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);
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);
102 public void renderPathEntry() throws Exception {
103 NodeId nodeId = new NodeId("node");
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);
115 public void renderMatchEntry() throws Exception {
116 NodeId nodeId = new NodeId("node");
117 String connector = "openflow:0123456789:1";
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);
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);
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);
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);
155 public void suppressPathEntry() throws Exception {
156 NodeId nodeId = new NodeId("node");
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);
168 public void suppressMatchEntry() throws Exception {
169 NodeId nodeId = new NodeId("node");
170 String connector = "openflow:0123456789:1";
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);