blob: 7a898953bdf1a16aaa367a105afda55ec0303d0b [file] [log] [blame]
Ray Milkey33d90232014-11-04 10:49:00 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2014-present Open Networking Laboratory
Ray Milkey33d90232014-11-04 10:49:00 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.net.flow.criteria;
Ray Milkey33d90232014-11-04 10:49:00 -080017
Yafit Hadar52d81552015-10-07 12:26:52 +030018import static org.hamcrest.MatcherAssert.assertThat;
19import static org.hamcrest.Matchers.equalTo;
20import static org.hamcrest.Matchers.instanceOf;
21import static org.hamcrest.Matchers.is;
22import static org.hamcrest.Matchers.notNullValue;
23import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
24import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility;
25import static org.onosproject.net.OduSignalId.oduSignalId;
26import static org.onosproject.net.PortNumber.portNumber;
27
Ray Milkey33d90232014-11-04 10:49:00 -080028import org.junit.Test;
alshabibcaf1ca22015-06-25 15:18:16 -070029import org.onlab.packet.EthType;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070030import org.onlab.packet.Ip6Address;
31import org.onlab.packet.IpPrefix;
32import org.onlab.packet.MacAddress;
33import org.onlab.packet.MplsLabel;
34import org.onlab.packet.TpPort;
35import org.onlab.packet.VlanId;
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -070036import org.onosproject.net.ChannelSpacing;
37import org.onosproject.net.GridType;
38import org.onosproject.net.Lambda;
Yafit Hadar52d81552015-10-07 12:26:52 +030039import org.onosproject.net.OchSignalType;
40import org.onosproject.net.OduSignalId;
41import org.onosproject.net.OduSignalType;
Brian O'Connorabafb502014-12-02 22:26:20 -080042import org.onosproject.net.PortNumber;
Ray Milkey33d90232014-11-04 10:49:00 -080043
Ray Milkeyfff20b52014-11-06 14:45:10 -080044import com.google.common.testing.EqualsTester;
Jian Li79bdf3c2015-11-30 14:54:54 -080045
Ray Milkey33d90232014-11-04 10:49:00 -080046/**
47 * Unit tests for the Criteria class and its subclasses.
48 */
49public class CriteriaTest {
50
51 final PortNumber port1 = portNumber(1);
52 final PortNumber port2 = portNumber(2);
53
54 Criterion matchInPort1 = Criteria.matchInPort(port1);
55 Criterion sameAsMatchInPort1 = Criteria.matchInPort(port1);
56 Criterion matchInPort2 = Criteria.matchInPort(port2);
57
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -080058 Criterion matchInPhyPort1 = Criteria.matchInPhyPort(port1);
59 Criterion sameAsMatchInPhyPort1 = Criteria.matchInPhyPort(port1);
60 Criterion matchInPhyPort2 = Criteria.matchInPhyPort(port2);
61
62 long metadata1 = 1;
63 long metadata2 = 2;
64 Criterion matchMetadata1 = Criteria.matchMetadata(metadata1);
65 Criterion sameAsMatchMetadata1 = Criteria.matchMetadata(metadata1);
66 Criterion matchMetadata2 = Criteria.matchMetadata(metadata2);
67
Ray Milkey33d90232014-11-04 10:49:00 -080068 private static final String MAC1 = "00:00:00:00:00:01";
69 private static final String MAC2 = "00:00:00:00:00:02";
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -080070 private MacAddress mac1 = MacAddress.valueOf(MAC1);
71 private MacAddress mac2 = MacAddress.valueOf(MAC2);
Ray Milkey33d90232014-11-04 10:49:00 -080072 Criterion matchEth1 = Criteria.matchEthSrc(mac1);
73 Criterion sameAsMatchEth1 = Criteria.matchEthSrc(mac1);
74 Criterion matchEth2 = Criteria.matchEthDst(mac2);
75
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -080076 int ethType1 = 1;
77 int ethType2 = 2;
Ray Milkey33d90232014-11-04 10:49:00 -080078 Criterion matchEthType1 = Criteria.matchEthType(ethType1);
79 Criterion sameAsMatchEthType1 = Criteria.matchEthType(ethType1);
80 Criterion matchEthType2 = Criteria.matchEthType(ethType2);
81
82 short vlan1 = 1;
83 short vlan2 = 2;
84 VlanId vlanId1 = VlanId.vlanId(vlan1);
85 VlanId vlanId2 = VlanId.vlanId(vlan2);
86 Criterion matchVlanId1 = Criteria.matchVlanId(vlanId1);
87 Criterion sameAsMatchVlanId1 = Criteria.matchVlanId(vlanId1);
88 Criterion matchVlanId2 = Criteria.matchVlanId(vlanId2);
89
90 byte vlanPcp1 = 1;
91 byte vlanPcp2 = 2;
92 Criterion matchVlanPcp1 = Criteria.matchVlanPcp(vlanPcp1);
93 Criterion sameAsMatchVlanPcp1 = Criteria.matchVlanPcp(vlanPcp1);
94 Criterion matchVlanPcp2 = Criteria.matchVlanPcp(vlanPcp2);
95
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -080096 byte ipDscp1 = 1;
97 byte ipDscp2 = 2;
98 Criterion matchIpDscp1 = Criteria.matchIPDscp(ipDscp1);
99 Criterion sameAsMatchIpDscp1 = Criteria.matchIPDscp(ipDscp1);
100 Criterion matchIpDscp2 = Criteria.matchIPDscp(ipDscp2);
101
102 byte ipEcn1 = 1;
103 byte ipEcn2 = 2;
104 Criterion matchIpEcn1 = Criteria.matchIPEcn(ipEcn1);
105 Criterion sameAsMatchIpEcn1 = Criteria.matchIPEcn(ipEcn1);
106 Criterion matchIpEcn2 = Criteria.matchIPEcn(ipEcn2);
107
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800108 short protocol1 = 1;
109 short protocol2 = 2;
Ray Milkey33d90232014-11-04 10:49:00 -0800110 Criterion matchIpProtocol1 = Criteria.matchIPProtocol(protocol1);
111 Criterion sameAsMatchIpProtocol1 = Criteria.matchIPProtocol(protocol1);
112 Criterion matchIpProtocol2 = Criteria.matchIPProtocol(protocol2);
113
114 private static final String IP1 = "1.2.3.4/24";
115 private static final String IP2 = "5.6.7.8/24";
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800116 private static final String IPV61 = "fe80::1/64";
117 private static final String IPV62 = "fc80::2/64";
Ray Milkey33d90232014-11-04 10:49:00 -0800118 private IpPrefix ip1 = IpPrefix.valueOf(IP1);
119 private IpPrefix ip2 = IpPrefix.valueOf(IP2);
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800120 private IpPrefix ipv61 = IpPrefix.valueOf(IPV61);
121 private IpPrefix ipv62 = IpPrefix.valueOf(IPV62);
Ray Milkey33d90232014-11-04 10:49:00 -0800122 Criterion matchIp1 = Criteria.matchIPSrc(ip1);
123 Criterion sameAsMatchIp1 = Criteria.matchIPSrc(ip1);
124 Criterion matchIp2 = Criteria.matchIPSrc(ip2);
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800125 Criterion matchIpv61 = Criteria.matchIPSrc(ipv61);
126 Criterion sameAsMatchIpv61 = Criteria.matchIPSrc(ipv61);
127 Criterion matchIpv62 = Criteria.matchIPSrc(ipv62);
Ray Milkey33d90232014-11-04 10:49:00 -0800128
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700129 private TpPort tpPort1 = TpPort.tpPort(1);
130 private TpPort tpPort2 = TpPort.tpPort(2);
131 Criterion matchTcpPort1 = Criteria.matchTcpSrc(tpPort1);
132 Criterion sameAsMatchTcpPort1 = Criteria.matchTcpSrc(tpPort1);
133 Criterion matchTcpPort2 = Criteria.matchTcpDst(tpPort2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800134
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700135 Criterion matchUdpPort1 = Criteria.matchUdpSrc(tpPort1);
136 Criterion sameAsMatchUdpPort1 = Criteria.matchUdpSrc(tpPort1);
137 Criterion matchUdpPort2 = Criteria.matchUdpDst(tpPort2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800138
Jian Li79bdf3c2015-11-30 14:54:54 -0800139 int tcpFlags1 =
Jonathan Hart51539b82015-10-29 09:53:04 -0700140 Criterion.TcpFlags.NS.getValue() |
141 Criterion.TcpFlags.CWR.getValue() |
142 Criterion.TcpFlags.ECE.getValue() |
143 Criterion.TcpFlags.URG.getValue() |
144 Criterion.TcpFlags.ACK.getValue() |
145 Criterion.TcpFlags.PSH.getValue() |
146 Criterion.TcpFlags.RST.getValue() |
147 Criterion.TcpFlags.SYN.getValue();
Jian Li79bdf3c2015-11-30 14:54:54 -0800148
149 int tcpFlags2 = tcpFlags1 |
Jonathan Hart51539b82015-10-29 09:53:04 -0700150 Criterion.TcpFlags.FIN.getValue();
Jian Li79bdf3c2015-11-30 14:54:54 -0800151
152 Criterion matchTcpFlags1 = Criteria.matchTcpFlags(tcpFlags1);
153 Criterion sameAsmatchTcpFlags1 = Criteria.matchTcpFlags(tcpFlags1);
154 Criterion matchTcpFlags2 = Criteria.matchTcpFlags(tcpFlags2);
155
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700156 Criterion matchSctpPort1 = Criteria.matchSctpSrc(tpPort1);
157 Criterion sameAsMatchSctpPort1 = Criteria.matchSctpSrc(tpPort1);
158 Criterion matchSctpPort2 = Criteria.matchSctpDst(tpPort2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800159
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800160 short icmpType1 = 1;
161 short icmpType2 = 2;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800162 Criterion matchIcmpType1 = Criteria.matchIcmpType(icmpType1);
163 Criterion sameAsMatchIcmpType1 = Criteria.matchIcmpType(icmpType1);
164 Criterion matchIcmpType2 = Criteria.matchIcmpType(icmpType2);
165
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800166 short icmpCode1 = 1;
167 short icmpCode2 = 2;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800168 Criterion matchIcmpCode1 = Criteria.matchIcmpCode(icmpCode1);
169 Criterion sameAsMatchIcmpCode1 = Criteria.matchIcmpCode(icmpCode1);
170 Criterion matchIcmpCode2 = Criteria.matchIcmpCode(icmpCode2);
171
172 int flowLabel1 = 1;
173 int flowLabel2 = 2;
174 Criterion matchFlowLabel1 = Criteria.matchIPv6FlowLabel(flowLabel1);
175 Criterion sameAsMatchFlowLabel1 = Criteria.matchIPv6FlowLabel(flowLabel1);
176 Criterion matchFlowLabel2 = Criteria.matchIPv6FlowLabel(flowLabel2);
177
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800178 short icmpv6Type1 = 1;
179 short icmpv6Type2 = 2;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800180 Criterion matchIcmpv6Type1 = Criteria.matchIcmpv6Type(icmpv6Type1);
181 Criterion sameAsMatchIcmpv6Type1 = Criteria.matchIcmpv6Type(icmpv6Type1);
182 Criterion matchIcmpv6Type2 = Criteria.matchIcmpv6Type(icmpv6Type2);
183
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800184 short icmpv6Code1 = 1;
185 short icmpv6Code2 = 2;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800186 Criterion matchIcmpv6Code1 = Criteria.matchIcmpv6Code(icmpv6Code1);
187 Criterion sameAsMatchIcmpv6Code1 = Criteria.matchIcmpv6Code(icmpv6Code1);
188 Criterion matchIcmpv6Code2 = Criteria.matchIcmpv6Code(icmpv6Code2);
189
190 private static final String IPV6_ADDR1 = "fe80::1";
191 private static final String IPV6_ADDR2 = "fe80::2";
192 private Ip6Address ip6TargetAddress1 = Ip6Address.valueOf(IPV6_ADDR1);
193 private Ip6Address ip6TargetAddress2 = Ip6Address.valueOf(IPV6_ADDR2);
194 Criterion matchIpv6TargetAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800195 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800196 Criterion sameAsMatchIpv6TargetAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800197 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800198 Criterion matchIpv6TargetAddr2 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800199 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800200
201 private static final String LL_MAC1 = "00:00:00:00:00:01";
202 private static final String LL_MAC2 = "00:00:00:00:00:02";
203 private MacAddress llMac1 = MacAddress.valueOf(LL_MAC1);
204 private MacAddress llMac2 = MacAddress.valueOf(LL_MAC2);
205 Criterion matchSrcLlAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800206 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800207 Criterion sameAsMatchSrcLlAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800208 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800209 Criterion matchSrcLlAddr2 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800210 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800211 Criterion matchTargetLlAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800212 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800213 Criterion sameAsMatchTargetLlAddr1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800214 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800215 Criterion matchTargetLlAddr2 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800216 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800217
Michele Santuari4b6019e2014-12-19 11:31:45 +0100218 MplsLabel mpls1 = MplsLabel.mplsLabel(1);
219 MplsLabel mpls2 = MplsLabel.mplsLabel(2);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800220 Criterion matchMpls1 = Criteria.matchMplsLabel(mpls1);
221 Criterion sameAsMatchMpls1 = Criteria.matchMplsLabel(mpls1);
222 Criterion matchMpls2 = Criteria.matchMplsLabel(mpls2);
223
Jian Li2f32e0c2015-12-01 14:16:53 -0800224 byte mplsTc1 = 1;
225 byte mplsTc2 = 2;
226 Criterion matchMplsTc1 = Criteria.matchMplsTc(mplsTc1);
227 Criterion sameAsMatchMplsTc1 = Criteria.matchMplsTc(mplsTc1);
228 Criterion matchMplsTc2 = Criteria.matchMplsTc(mplsTc2);
229
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700230 long tunnelId1 = 1;
231 long tunnelId2 = 2;
232 Criterion matchTunnelId1 = Criteria.matchTunnelId(tunnelId1);
233 Criterion sameAsMatchTunnelId1 = Criteria.matchTunnelId(tunnelId1);
234 Criterion matchTunnelId2 = Criteria.matchTunnelId(tunnelId2);
235
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800236 int ipv6ExthdrFlags1 =
237 Criterion.IPv6ExthdrFlags.NONEXT.getValue() |
238 Criterion.IPv6ExthdrFlags.ESP.getValue() |
239 Criterion.IPv6ExthdrFlags.AUTH.getValue() |
240 Criterion.IPv6ExthdrFlags.DEST.getValue() |
241 Criterion.IPv6ExthdrFlags.FRAG.getValue() |
242 Criterion.IPv6ExthdrFlags.ROUTER.getValue() |
243 Criterion.IPv6ExthdrFlags.HOP.getValue() |
244 Criterion.IPv6ExthdrFlags.UNREP.getValue();
245 int ipv6ExthdrFlags2 = ipv6ExthdrFlags1 |
Jian Li79bdf3c2015-11-30 14:54:54 -0800246 Criterion.IPv6ExthdrFlags.UNSEQ.getValue();
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800247 Criterion matchIpv6ExthdrFlags1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800248 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1);
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800249 Criterion sameAsMatchIpv6ExthdrFlags1 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800250 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1);
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800251 Criterion matchIpv6ExthdrFlags2 =
Jian Li79bdf3c2015-11-30 14:54:54 -0800252 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags2);
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800253
Marc De Leenheerd24420f2015-05-27 09:40:59 -0700254 Criterion matchOchSignalType1 = Criteria.matchOchSignalType(OchSignalType.FIXED_GRID);
255 Criterion sameAsMatchOchSignalType1 = Criteria.matchOchSignalType(OchSignalType.FIXED_GRID);
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700256 Criterion matchOchSignalType2 = Criteria.matchOchSignalType(OchSignalType.FLEX_GRID);
257
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700258 Criterion matchOchSignal1 =
259 Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8));
260 Criterion sameAsMatchOchSignal1 =
261 Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8));
262 Criterion matchOchSignal2 =
263 Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 4, 8));
264
Jian Li79bdf3c2015-11-30 14:54:54 -0800265 final OduSignalId odu1 = oduSignalId(1, 80, new byte[]{1, 1, 2, 2, 1, 2, 2, 1, 2, 2});
266 final OduSignalId odu2 = oduSignalId(3, 8, new byte[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0});
Yafit Hadar52d81552015-10-07 12:26:52 +0300267 Criterion matchOduSignalId1 = Criteria.matchOduSignalId(odu1);
268 Criterion sameAsMatchOduSignalId1 = Criteria.matchOduSignalId(odu1);
269 Criterion matchOduSignalId2 = Criteria.matchOduSignalId(odu2);
270
271 final OduSignalType oduSigType1 = OduSignalType.ODU2;
272 final OduSignalType oduSigType2 = OduSignalType.ODU4;
273 Criterion matchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1);
274 Criterion sameAsMatchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1);
275 Criterion matchOduSignalType2 = Criteria.matchOduSignalType(oduSigType2);
276
Jian Lif1ecf992015-12-02 17:48:54 -0800277 int pbbIsid1 = 1;
278 int pbbIsid2 = 2;
279 Criterion matchPbbIsid1 = Criteria.matchPbbIsid(pbbIsid1);
280 Criterion sameAsMatchPbbIsid1 = Criteria.matchPbbIsid(pbbIsid1);
281 Criterion matchPbbIsid2 = Criteria.matchPbbIsid(pbbIsid2);
282
Ray Milkey33d90232014-11-04 10:49:00 -0800283 /**
284 * Checks that a Criterion object has the proper type, and then converts
285 * it to the proper type.
286 *
287 * @param criterion Criterion object to convert
Jian Li79bdf3c2015-11-30 14:54:54 -0800288 * @param type Enumerated type value for the Criterion class
289 * @param clazz Desired Criterion class
290 * @param <T> The type the caller wants returned
Ray Milkey33d90232014-11-04 10:49:00 -0800291 * @return converted object
292 */
293 @SuppressWarnings("unchecked")
294 private <T> T checkAndConvert(Criterion criterion, Criterion.Type type, Class clazz) {
295 assertThat(criterion, is(notNullValue()));
296 assertThat(criterion.type(), is(equalTo(type)));
Ray Milkey78081052014-11-05 10:38:12 -0800297 assertThat(criterion, instanceOf(clazz));
Ray Milkey33d90232014-11-04 10:49:00 -0800298 return (T) criterion;
299 }
300
301 /**
Ray Milkey33d90232014-11-04 10:49:00 -0800302 * Check that the Criteria class is a valid utility class.
303 */
304 @Test
305 public void testCriteriaUtility() {
306 assertThatClassIsUtility(Criteria.class);
307 }
308
309 /**
310 * Check that the Criteria implementations are immutable.
311 */
312 @Test
313 public void testCriteriaImmutability() {
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700314 assertThatClassIsImmutable(PortCriterion.class);
315 assertThatClassIsImmutable(MetadataCriterion.class);
316 assertThatClassIsImmutable(EthCriterion.class);
317 assertThatClassIsImmutable(EthTypeCriterion.class);
318 assertThatClassIsImmutable(VlanIdCriterion.class);
319 assertThatClassIsImmutable(VlanPcpCriterion.class);
320 assertThatClassIsImmutable(IPDscpCriterion.class);
321 assertThatClassIsImmutable(IPEcnCriterion.class);
322 assertThatClassIsImmutable(IPProtocolCriterion.class);
323 assertThatClassIsImmutable(IPCriterion.class);
324 assertThatClassIsImmutable(TcpPortCriterion.class);
325 assertThatClassIsImmutable(UdpPortCriterion.class);
Jian Li79bdf3c2015-11-30 14:54:54 -0800326 assertThatClassIsImmutable(TcpFlagsCriterion.class);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700327 assertThatClassIsImmutable(SctpPortCriterion.class);
328 assertThatClassIsImmutable(IcmpTypeCriterion.class);
329 assertThatClassIsImmutable(IcmpCodeCriterion.class);
330 assertThatClassIsImmutable(IPv6FlowLabelCriterion.class);
331 assertThatClassIsImmutable(Icmpv6TypeCriterion.class);
332 assertThatClassIsImmutable(Icmpv6CodeCriterion.class);
333 assertThatClassIsImmutable(IPv6NDTargetAddressCriterion.class);
334 assertThatClassIsImmutable(IPv6NDLinkLayerAddressCriterion.class);
335 assertThatClassIsImmutable(MplsCriterion.class);
Jian Li2f32e0c2015-12-01 14:16:53 -0800336 assertThatClassIsImmutable(MplsTcCriterion.class);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700337 assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class);
338 assertThatClassIsImmutable(LambdaCriterion.class);
Yafit Hadar52d81552015-10-07 12:26:52 +0300339 assertThatClassIsImmutable(OduSignalIdCriterion.class);
340 assertThatClassIsImmutable(OduSignalTypeCriterion.class);
Jian Lif1ecf992015-12-02 17:48:54 -0800341 assertThatClassIsImmutable(PbbIsidCriterion.class);
Frank Wange33e4ed2017-06-28 10:01:07 +0800342 assertThatClassIsImmutable(PiCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800343 }
344
345 // PortCriterion class
346
347 /**
348 * Test the matchInPort method.
349 */
350 @Test
351 public void testMatchInPortMethod() {
352 PortNumber p1 = portNumber(1);
353 Criterion matchInPort = Criteria.matchInPort(p1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700354 PortCriterion portCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800355 checkAndConvert(matchInPort,
356 Criterion.Type.IN_PORT,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700357 PortCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800358 assertThat(portCriterion.port(), is(equalTo(p1)));
359 }
360
361 /**
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800362 * Test the matchInPhyPort method.
363 */
364 @Test
365 public void testMatchInPhyPortMethod() {
366 PortNumber p1 = portNumber(1);
367 Criterion matchInPhyPort = Criteria.matchInPhyPort(p1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700368 PortCriterion portCriterion =
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800369 checkAndConvert(matchInPhyPort,
370 Criterion.Type.IN_PHY_PORT,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700371 PortCriterion.class);
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800372 assertThat(portCriterion.port(), is(equalTo(p1)));
373 }
374
375 /**
Ray Milkey33d90232014-11-04 10:49:00 -0800376 * Test the equals() method of the PortCriterion class.
377 */
378 @Test
379 public void testPortCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800380 new EqualsTester()
381 .addEqualityGroup(matchInPort1, sameAsMatchInPort1)
382 .addEqualityGroup(matchInPort2)
383 .testEquals();
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800384
385 new EqualsTester()
386 .addEqualityGroup(matchInPhyPort1, sameAsMatchInPhyPort1)
387 .addEqualityGroup(matchInPhyPort2)
388 .testEquals();
389 }
390
391 // MetadataCriterion class
392
393 /**
394 * Test the matchMetadata method.
395 */
396 @Test
397 public void testMatchMetadataMethod() {
398 Long metadata = 12L;
399 Criterion matchMetadata = Criteria.matchMetadata(metadata);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700400 MetadataCriterion metadataCriterion =
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800401 checkAndConvert(matchMetadata,
402 Criterion.Type.METADATA,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700403 MetadataCriterion.class);
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800404 assertThat(metadataCriterion.metadata(), is(equalTo(metadata)));
405 }
406
407 /**
408 * Test the equals() method of the MetadataCriterion class.
409 */
410 @Test
411 public void testMetadataCriterionEquals() {
412 new EqualsTester()
413 .addEqualityGroup(matchMetadata1, sameAsMatchMetadata1)
414 .addEqualityGroup(matchMetadata2)
415 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800416 }
417
418 // EthCriterion class
419
420 /**
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800421 * Test the matchEthDst method.
422 */
423 @Test
424 public void testMatchEthDstMethod() {
425 Criterion matchEthDst = Criteria.matchEthDst(mac1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700426 EthCriterion ethCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800427 checkAndConvert(matchEthDst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800428 Criterion.Type.ETH_DST,
429 EthCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800430 assertThat(ethCriterion.mac(), is(equalTo(mac1)));
431 }
432
433 /**
Ray Milkey33d90232014-11-04 10:49:00 -0800434 * Test the matchEthSrc method.
435 */
436 @Test
437 public void testMatchEthSrcMethod() {
438 Criterion matchEthSrc = Criteria.matchEthSrc(mac1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700439 EthCriterion ethCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800440 checkAndConvert(matchEthSrc,
441 Criterion.Type.ETH_SRC,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700442 EthCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800443 assertThat(ethCriterion.mac(), is(mac1));
444 }
445
446 /**
Ray Milkey33d90232014-11-04 10:49:00 -0800447 * Test the equals() method of the EthCriterion class.
448 */
449 @Test
450 public void testEthCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800451 new EqualsTester()
452 .addEqualityGroup(matchEth1, sameAsMatchEth1)
453 .addEqualityGroup(matchEth2)
454 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800455 }
456
Ray Milkey33d90232014-11-04 10:49:00 -0800457 // EthTypeCriterion class
458
459 /**
460 * Test the matchEthType method.
461 */
462 @Test
463 public void testMatchEthTypeMethod() {
alshabibcaf1ca22015-06-25 15:18:16 -0700464 EthType ethType = new EthType(12);
465 Criterion matchEthType = Criteria.matchEthType(new EthType(12));
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700466 EthTypeCriterion ethTypeCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800467 checkAndConvert(matchEthType,
468 Criterion.Type.ETH_TYPE,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700469 EthTypeCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800470 assertThat(ethTypeCriterion.ethType(), is(equalTo(ethType)));
471 }
472
473 /**
474 * Test the equals() method of the EthTypeCriterion class.
475 */
476 @Test
477 public void testEthTypeCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800478 new EqualsTester()
479 .addEqualityGroup(matchEthType1, sameAsMatchEthType1)
480 .addEqualityGroup(matchEthType2)
481 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800482 }
483
Ray Milkey33d90232014-11-04 10:49:00 -0800484 // VlanIdCriterion class
485
486 /**
487 * Test the matchVlanId method.
488 */
489 @Test
490 public void testMatchVlanIdMethod() {
491 Criterion matchVlanId = Criteria.matchVlanId(vlanId1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700492 VlanIdCriterion vlanIdCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800493 checkAndConvert(matchVlanId,
Jian Li79bdf3c2015-11-30 14:54:54 -0800494 Criterion.Type.VLAN_VID,
495 VlanIdCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800496 assertThat(vlanIdCriterion.vlanId(), is(equalTo(vlanId1)));
497 }
498
499 /**
500 * Test the equals() method of the VlanIdCriterion class.
501 */
502 @Test
503 public void testVlanIdCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800504 new EqualsTester()
505 .addEqualityGroup(matchVlanId1, sameAsMatchVlanId1)
506 .addEqualityGroup(matchVlanId2)
507 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800508 }
509
510 // VlanPcpCriterion class
511
512 /**
513 * Test the matchVlanPcp method.
514 */
515 @Test
516 public void testMatchVlanPcpMethod() {
517 Criterion matchVlanPcp = Criteria.matchVlanPcp(vlanPcp1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700518 VlanPcpCriterion vlanPcpCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800519 checkAndConvert(matchVlanPcp,
Jian Li79bdf3c2015-11-30 14:54:54 -0800520 Criterion.Type.VLAN_PCP,
521 VlanPcpCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800522 assertThat(vlanPcpCriterion.priority(), is(equalTo(vlanPcp1)));
523 }
524
525 /**
526 * Test the equals() method of the VlanPcpCriterion class.
527 */
528 @Test
529 public void testVlanPcpCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800530 new EqualsTester()
531 .addEqualityGroup(matchVlanPcp1, sameAsMatchVlanPcp1)
532 .addEqualityGroup(matchVlanPcp2)
533 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800534 }
535
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800536 // IPDscpCriterion class
537
538 /**
539 * Test the matchIPDscp method.
540 */
541 @Test
542 public void testMatchIPDscpMethod() {
543 Criterion matchIPDscp = Criteria.matchIPDscp(ipDscp1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700544 IPDscpCriterion ipDscpCriterion =
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800545 checkAndConvert(matchIPDscp,
Jian Li79bdf3c2015-11-30 14:54:54 -0800546 Criterion.Type.IP_DSCP,
547 IPDscpCriterion.class);
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800548 assertThat(ipDscpCriterion.ipDscp(), is(equalTo(ipDscp1)));
549 }
550
551 /**
552 * Test the equals() method of the IPDscpCriterion class.
553 */
554 @Test
555 public void testIPDscpCriterionEquals() {
556 new EqualsTester()
557 .addEqualityGroup(matchIpDscp1, sameAsMatchIpDscp1)
558 .addEqualityGroup(matchIpDscp2)
559 .testEquals();
560 }
561
562 // IPEcnCriterion class
563
564 /**
565 * Test the matchIPEcn method.
566 */
567 @Test
568 public void testMatchIPEcnMethod() {
569 Criterion matchIPEcn = Criteria.matchIPEcn(ipEcn1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700570 IPEcnCriterion ipEcnCriterion =
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800571 checkAndConvert(matchIPEcn,
Jian Li79bdf3c2015-11-30 14:54:54 -0800572 Criterion.Type.IP_ECN,
573 IPEcnCriterion.class);
Pavlin Radoslavovd0fd8412015-02-04 13:57:00 -0800574 assertThat(ipEcnCriterion.ipEcn(), is(equalTo(ipEcn1)));
575 }
576
577 /**
578 * Test the equals() method of the IPEcnCriterion class.
579 */
580 @Test
581 public void testIPEcnCriterionEquals() {
582 new EqualsTester()
583 .addEqualityGroup(matchIpEcn1, sameAsMatchIpEcn1)
584 .addEqualityGroup(matchIpEcn2)
585 .testEquals();
586 }
587
Ray Milkey33d90232014-11-04 10:49:00 -0800588 // IpProtocolCriterion class
589
590 /**
591 * Test the matchIpProtocol method.
592 */
593 @Test
594 public void testMatchIpProtocolMethod() {
595 Criterion matchIPProtocol = Criteria.matchIPProtocol(protocol1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700596 IPProtocolCriterion ipProtocolCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800597 checkAndConvert(matchIPProtocol,
Jian Li79bdf3c2015-11-30 14:54:54 -0800598 Criterion.Type.IP_PROTO,
599 IPProtocolCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800600 assertThat(ipProtocolCriterion.protocol(), is(equalTo(protocol1)));
601 }
602
603 /**
604 * Test the equals() method of the IpProtocolCriterion class.
605 */
606 @Test
607 public void testIpProtocolCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800608 new EqualsTester()
609 .addEqualityGroup(matchIpProtocol1, sameAsMatchIpProtocol1)
610 .addEqualityGroup(matchIpProtocol2)
611 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800612 }
613
614 // IPCriterion class
615
616 /**
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800617 * Test the matchIPSrc method: IPv4.
Ray Milkey33d90232014-11-04 10:49:00 -0800618 */
619 @Test
620 public void testMatchIPSrcMethod() {
621 Criterion matchIpSrc = Criteria.matchIPSrc(ip1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700622 IPCriterion ipCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800623 checkAndConvert(matchIpSrc,
624 Criterion.Type.IPV4_SRC,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700625 IPCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800626 assertThat(ipCriterion.ip(), is(ip1));
627 }
628
629 /**
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800630 * Test the matchIPDst method: IPv4.
Ray Milkey33d90232014-11-04 10:49:00 -0800631 */
632 @Test
633 public void testMatchIPDstMethod() {
634 Criterion matchIPDst = Criteria.matchIPDst(ip1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700635 IPCriterion ipCriterion =
Ray Milkey33d90232014-11-04 10:49:00 -0800636 checkAndConvert(matchIPDst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800637 Criterion.Type.IPV4_DST,
638 IPCriterion.class);
Ray Milkey33d90232014-11-04 10:49:00 -0800639 assertThat(ipCriterion.ip(), is(equalTo(ip1)));
640 }
641
642 /**
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800643 * Test the matchIPSrc method: IPv6.
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800644 */
645 @Test
646 public void testMatchIPv6SrcMethod() {
647 Criterion matchIpv6Src = Criteria.matchIPv6Src(ipv61);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700648 IPCriterion ipCriterion =
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800649 checkAndConvert(matchIpv6Src,
Jian Li79bdf3c2015-11-30 14:54:54 -0800650 Criterion.Type.IPV6_SRC,
651 IPCriterion.class);
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800652 assertThat(ipCriterion.ip(), is(ipv61));
653 }
654
655 /**
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800656 * Test the matchIPDst method: IPv6.
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800657 */
658 @Test
659 public void testMatchIPv6DstMethod() {
660 Criterion matchIPv6Dst = Criteria.matchIPv6Dst(ipv61);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700661 IPCriterion ipCriterion =
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800662 checkAndConvert(matchIPv6Dst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800663 Criterion.Type.IPV6_DST,
664 IPCriterion.class);
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800665 assertThat(ipCriterion.ip(), is(equalTo(ipv61)));
666 }
667
668 /**
Ray Milkey33d90232014-11-04 10:49:00 -0800669 * Test the equals() method of the IpCriterion class.
670 */
671 @Test
672 public void testIPCriterionEquals() {
Ray Milkeyfff20b52014-11-06 14:45:10 -0800673 new EqualsTester()
674 .addEqualityGroup(matchIp1, sameAsMatchIp1)
675 .addEqualityGroup(matchIp2)
676 .testEquals();
Charles M.C. Chan52fae7d2015-01-17 00:35:53 +0800677
678 new EqualsTester()
679 .addEqualityGroup(matchIpv61, sameAsMatchIpv61)
680 .addEqualityGroup(matchIpv62)
681 .testEquals();
Ray Milkey33d90232014-11-04 10:49:00 -0800682 }
683
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800684 // TcpPortCriterion class
685
686 /**
687 * Test the matchTcpSrc method.
688 */
689 @Test
690 public void testMatchTcpSrcMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700691 Criterion matchTcpSrc = Criteria.matchTcpSrc(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700692 TcpPortCriterion tcpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800693 checkAndConvert(matchTcpSrc,
694 Criterion.Type.TCP_SRC,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700695 TcpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700696 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800697 }
698
699 /**
700 * Test the matchTcpDst method.
701 */
702 @Test
703 public void testMatchTcpDstMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700704 Criterion matchTcpDst = Criteria.matchTcpDst(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700705 TcpPortCriterion tcpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800706 checkAndConvert(matchTcpDst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800707 Criterion.Type.TCP_DST,
708 TcpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700709 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800710 }
711
712 /**
713 * Test the equals() method of the TcpPortCriterion class.
714 */
715 @Test
716 public void testTcpPortCriterionEquals() {
717 new EqualsTester()
718 .addEqualityGroup(matchTcpPort1, sameAsMatchTcpPort1)
719 .addEqualityGroup(matchTcpPort2)
720 .testEquals();
721 }
722
723 // UdpPortCriterion class
724
725 /**
726 * Test the matchUdpSrc method.
727 */
728 @Test
729 public void testMatchUdpSrcMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700730 Criterion matchUdpSrc = Criteria.matchUdpSrc(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700731 UdpPortCriterion udpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800732 checkAndConvert(matchUdpSrc,
733 Criterion.Type.UDP_SRC,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700734 UdpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700735 assertThat(udpPortCriterion.udpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800736 }
737
738 /**
739 * Test the matchUdpDst method.
740 */
741 @Test
742 public void testMatchUdpDstMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700743 Criterion matchUdpDst = Criteria.matchUdpDst(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700744 UdpPortCriterion udpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800745 checkAndConvert(matchUdpDst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800746 Criterion.Type.UDP_DST,
747 UdpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700748 assertThat(udpPortCriterion.udpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800749 }
750
751 /**
752 * Test the equals() method of the UdpPortCriterion class.
753 */
754 @Test
755 public void testUdpPortCriterionEquals() {
756 new EqualsTester()
757 .addEqualityGroup(matchUdpPort1, sameAsMatchUdpPort1)
758 .addEqualityGroup(matchUdpPort2)
759 .testEquals();
760 }
761
Jian Li79bdf3c2015-11-30 14:54:54 -0800762 // TcpFlagsCriterion class
763
764 /**
Jian Li2f32e0c2015-12-01 14:16:53 -0800765 * Test the matchTcpFlags method.
766 */
767 @Test
768 public void testMatchTcpFlagsMethod() {
769 Criterion matchTcpFlag = Criteria.matchTcpFlags(tcpFlags1);
770 TcpFlagsCriterion tcpFlagsCriterion =
771 checkAndConvert(matchTcpFlag,
772 Criterion.Type.TCP_FLAGS,
773 TcpFlagsCriterion.class);
774 assertThat(tcpFlagsCriterion.flags(), is(equalTo(tcpFlags1)));
775 }
776
777 /**
Jian Li79bdf3c2015-11-30 14:54:54 -0800778 * Test the equals() method of the TcpFlagsCriterion class.
779 */
780 @Test
781 public void testTcpFlagsCriterionEquals() {
782 new EqualsTester()
783 .addEqualityGroup(matchTcpFlags1, sameAsmatchTcpFlags1)
784 .addEqualityGroup(matchTcpFlags2)
785 .testEquals();
786 }
787
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800788 // SctpPortCriterion class
789
790 /**
791 * Test the matchSctpSrc method.
792 */
793 @Test
794 public void testMatchSctpSrcMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700795 Criterion matchSctpSrc = Criteria.matchSctpSrc(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700796 SctpPortCriterion sctpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800797 checkAndConvert(matchSctpSrc,
798 Criterion.Type.SCTP_SRC,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700799 SctpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700800 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800801 }
802
803 /**
804 * Test the matchSctpDst method.
805 */
806 @Test
807 public void testMatchSctpDstMethod() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700808 Criterion matchSctpDst = Criteria.matchSctpDst(tpPort1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700809 SctpPortCriterion sctpPortCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800810 checkAndConvert(matchSctpDst,
Jian Li79bdf3c2015-11-30 14:54:54 -0800811 Criterion.Type.SCTP_DST,
812 SctpPortCriterion.class);
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700813 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(tpPort1)));
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800814 }
815
816 /**
817 * Test the equals() method of the SctpPortCriterion class.
818 */
819 @Test
820 public void testSctpPortCriterionEquals() {
821 new EqualsTester()
822 .addEqualityGroup(matchSctpPort1, sameAsMatchSctpPort1)
823 .addEqualityGroup(matchSctpPort2)
824 .testEquals();
825 }
826
827 // IcmpTypeCriterion class
828
829 /**
830 * Test the matchIcmpType method.
831 */
832 @Test
833 public void testMatchIcmpTypeMethod() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800834 short icmpType = 12;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800835 Criterion matchIcmpType = Criteria.matchIcmpType(icmpType);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700836 IcmpTypeCriterion icmpTypeCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800837 checkAndConvert(matchIcmpType,
838 Criterion.Type.ICMPV4_TYPE,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700839 IcmpTypeCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800840 assertThat(icmpTypeCriterion.icmpType(), is(equalTo(icmpType)));
841 }
842
843 /**
844 * Test the equals() method of the IcmpTypeCriterion class.
845 */
846 @Test
847 public void testIcmpTypeCriterionEquals() {
848 new EqualsTester()
849 .addEqualityGroup(matchIcmpType1, sameAsMatchIcmpType1)
850 .addEqualityGroup(matchIcmpType2)
851 .testEquals();
852 }
853
854 // IcmpCodeCriterion class
855
856 /**
857 * Test the matchIcmpCode method.
858 */
859 @Test
860 public void testMatchIcmpCodeMethod() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800861 short icmpCode = 12;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800862 Criterion matchIcmpCode = Criteria.matchIcmpCode(icmpCode);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700863 IcmpCodeCriterion icmpCodeCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800864 checkAndConvert(matchIcmpCode,
865 Criterion.Type.ICMPV4_CODE,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700866 IcmpCodeCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800867 assertThat(icmpCodeCriterion.icmpCode(), is(equalTo(icmpCode)));
868 }
869
870 /**
871 * Test the equals() method of the IcmpCodeCriterion class.
872 */
873 @Test
874 public void testIcmpCodeCriterionEquals() {
875 new EqualsTester()
876 .addEqualityGroup(matchIcmpCode1, sameAsMatchIcmpCode1)
877 .addEqualityGroup(matchIcmpCode2)
878 .testEquals();
879 }
880
881 // IPv6FlowLabelCriterion class
882
883 /**
884 * Test the matchIPv6FlowLabel method.
885 */
886 @Test
887 public void testMatchIPv6FlowLabelMethod() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800888 int flowLabel = 12;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800889 Criterion matchFlowLabel = Criteria.matchIPv6FlowLabel(flowLabel);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700890 IPv6FlowLabelCriterion flowLabelCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800891 checkAndConvert(matchFlowLabel,
892 Criterion.Type.IPV6_FLABEL,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700893 IPv6FlowLabelCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800894 assertThat(flowLabelCriterion.flowLabel(), is(equalTo(flowLabel)));
895 }
896
897 /**
898 * Test the equals() method of the IPv6FlowLabelCriterion class.
899 */
900 @Test
901 public void testIPv6FlowLabelCriterionEquals() {
902 new EqualsTester()
903 .addEqualityGroup(matchFlowLabel1, sameAsMatchFlowLabel1)
904 .addEqualityGroup(matchFlowLabel2)
905 .testEquals();
906 }
907
908 // Icmpv6TypeCriterion class
909
910 /**
911 * Test the matchIcmpv6Type method.
912 */
913 @Test
914 public void testMatchIcmpv6TypeMethod() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800915 short icmpv6Type = 12;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800916 Criterion matchIcmpv6Type = Criteria.matchIcmpv6Type(icmpv6Type);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700917 Icmpv6TypeCriterion icmpv6TypeCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800918 checkAndConvert(matchIcmpv6Type,
919 Criterion.Type.ICMPV6_TYPE,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700920 Icmpv6TypeCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800921 assertThat(icmpv6TypeCriterion.icmpv6Type(), is(equalTo(icmpv6Type)));
922 }
923
924 /**
925 * Test the equals() method of the Icmpv6TypeCriterion class.
926 */
927 @Test
928 public void testIcmpv6TypeCriterionEquals() {
929 new EqualsTester()
930 .addEqualityGroup(matchIcmpv6Type1, sameAsMatchIcmpv6Type1)
931 .addEqualityGroup(matchIcmpv6Type2)
932 .testEquals();
933 }
934
935 // Icmpv6CodeCriterion class
936
937 /**
938 * Test the matchIcmpv6Code method.
939 */
940 @Test
941 public void testMatchIcmpv6CodeMethod() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800942 short icmpv6Code = 12;
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800943 Criterion matchIcmpv6Code = Criteria.matchIcmpv6Code(icmpv6Code);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700944 Icmpv6CodeCriterion icmpv6CodeCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800945 checkAndConvert(matchIcmpv6Code,
946 Criterion.Type.ICMPV6_CODE,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700947 Icmpv6CodeCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800948 assertThat(icmpv6CodeCriterion.icmpv6Code(), is(equalTo(icmpv6Code)));
949 }
950
951 /**
952 * Test the equals() method of the Icmpv6CodeCriterion class.
953 */
954 @Test
955 public void testIcmpv6CodeCriterionEquals() {
956 new EqualsTester()
957 .addEqualityGroup(matchIcmpv6Code1, sameAsMatchIcmpv6Code1)
958 .addEqualityGroup(matchIcmpv6Code2)
959 .testEquals();
960 }
961
962 // IPv6NDTargetAddressCriterion class
963
964 /**
965 * Test the matchIPv6NDTargetAddress method.
966 */
967 @Test
968 public void testMatchIPv6NDTargetAddressMethod() {
969 Criterion matchTargetAddress =
Jian Li79bdf3c2015-11-30 14:54:54 -0800970 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700971 IPv6NDTargetAddressCriterion targetAddressCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800972 checkAndConvert(matchTargetAddress,
973 Criterion.Type.IPV6_ND_TARGET,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700974 IPv6NDTargetAddressCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -0800975 assertThat(targetAddressCriterion.targetAddress(),
976 is(ip6TargetAddress1));
977 }
978
979 /**
980 * Test the equals() method of the IPv6NDTargetAddressCriterion class.
981 */
982 @Test
983 public void testIPv6NDTargetAddressCriterionEquals() {
984 new EqualsTester()
985 .addEqualityGroup(matchIpv6TargetAddr1,
986 sameAsMatchIpv6TargetAddr1)
987 .addEqualityGroup(matchIpv6TargetAddr2)
988 .testEquals();
989 }
990
991 // IPv6NDLinkLayerAddressCriterion class
992
993 /**
994 * Test the matchIPv6NDSourceLinkLayerAddress method.
995 */
996 @Test
997 public void testMatchIPv6NDSourceLinkLayerAddressMethod() {
998 Criterion matchSrcLlAddr =
Jian Li79bdf3c2015-11-30 14:54:54 -0800999 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -07001000 IPv6NDLinkLayerAddressCriterion srcLlCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001001 checkAndConvert(matchSrcLlAddr,
Jian Li79bdf3c2015-11-30 14:54:54 -08001002 Criterion.Type.IPV6_ND_SLL,
1003 IPv6NDLinkLayerAddressCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001004 assertThat(srcLlCriterion.mac(), is(equalTo(llMac1)));
1005 }
1006
1007 /**
1008 * Test the matchIPv6NDTargetLinkLayerAddress method.
1009 */
1010 @Test
1011 public void testMatchIPv6NDTargetLinkLayerAddressMethod() {
1012 Criterion matchTargetLlAddr =
Jian Li79bdf3c2015-11-30 14:54:54 -08001013 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -07001014 IPv6NDLinkLayerAddressCriterion targetLlCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001015 checkAndConvert(matchTargetLlAddr,
Jian Li79bdf3c2015-11-30 14:54:54 -08001016 Criterion.Type.IPV6_ND_TLL,
1017 IPv6NDLinkLayerAddressCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001018 assertThat(targetLlCriterion.mac(), is(equalTo(llMac1)));
1019 }
1020
1021 /**
1022 * Test the equals() method of the IPv6NDLinkLayerAddressCriterion class.
1023 */
1024 @Test
1025 public void testIPv6NDLinkLayerAddressCriterionEquals() {
1026 new EqualsTester()
1027 .addEqualityGroup(matchSrcLlAddr1, sameAsMatchSrcLlAddr1)
1028 .addEqualityGroup(matchSrcLlAddr2)
1029 .testEquals();
1030
1031 new EqualsTester()
1032 .addEqualityGroup(matchTargetLlAddr1, sameAsMatchTargetLlAddr1)
1033 .addEqualityGroup(matchTargetLlAddr2)
1034 .testEquals();
1035 }
1036
1037 // MplsCriterion class
1038
1039 /**
1040 * Test the matchMplsLabel method.
1041 */
1042 @Test
1043 public void testMatchMplsLabelMethod() {
1044 Criterion matchMplsLabel = Criteria.matchMplsLabel(mpls1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -07001045 MplsCriterion mplsCriterion =
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001046 checkAndConvert(matchMplsLabel,
Jian Li79bdf3c2015-11-30 14:54:54 -08001047 Criterion.Type.MPLS_LABEL,
1048 MplsCriterion.class);
Pavlin Radoslavov320e6c92015-02-02 16:51:58 -08001049 assertThat(mplsCriterion.label(), is(equalTo(mpls1)));
1050 }
1051
1052 /**
1053 * Test the equals() method of the MplsCriterion class.
1054 */
1055 @Test
1056 public void testMplsCriterionEquals() {
1057 new EqualsTester()
1058 .addEqualityGroup(matchMpls1, sameAsMatchMpls1)
1059 .addEqualityGroup(matchMpls2)
1060 .testEquals();
1061 }
1062
Jian Li2f32e0c2015-12-01 14:16:53 -08001063 // MplsTcCriterion class
1064
1065 /**
1066 * Test the matchMplsTc method.
1067 */
1068 @Test
1069 public void testMatchMplsTcMethod() {
1070 Criterion matchMplsTc = Criteria.matchMplsTc(mplsTc1);
1071 MplsTcCriterion mplsTcCriterion =
1072 checkAndConvert(matchMplsTc,
1073 Criterion.Type.MPLS_TC,
1074 MplsTcCriterion.class);
1075 assertThat(mplsTcCriterion.tc(), is(equalTo(mplsTc1)));
1076 }
1077
1078 /**
1079 * Test the equals() method of the MplsTcCriterion class.
1080 */
1081 @Test
1082 public void testMplsTcCriterionEquals() {
1083 new EqualsTester()
1084 .addEqualityGroup(matchMplsTc1, sameAsMatchMplsTc1)
1085 .addEqualityGroup(matchMplsTc2)
1086 .testEquals();
1087 }
1088
Hyunsun Moona08c5d02015-07-14 17:53:00 -07001089 // TunnelIdCriterion class
1090
1091 /**
1092 * Test the matchTunnelId method.
1093 */
1094 @Test
1095 public void testMatchTunnelIdMethod() {
1096 Criterion matchTunnelId = Criteria.matchTunnelId(tunnelId1);
1097 TunnelIdCriterion tunnelIdCriterion =
1098 checkAndConvert(matchTunnelId,
1099 Criterion.Type.TUNNEL_ID,
1100 TunnelIdCriterion.class);
1101 assertThat(tunnelIdCriterion.tunnelId(), is(equalTo(tunnelId1)));
1102
1103 }
1104
1105 /**
1106 * Test the equals() method of the TunnelIdCriterion class.
1107 */
1108 @Test
1109 public void testTunnelIdCriterionEquals() {
Jian Li79bdf3c2015-11-30 14:54:54 -08001110 new EqualsTester()
1111 .addEqualityGroup(matchTunnelId1, sameAsMatchTunnelId1)
1112 .addEqualityGroup(matchTunnelId2)
1113 .testEquals();
Hyunsun Moona08c5d02015-07-14 17:53:00 -07001114 }
1115
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -08001116 // IPv6ExthdrFlagsCriterion class
1117
1118 /**
1119 * Test the matchIPv6ExthdrFlags method.
1120 */
1121 @Test
1122 public void testMatchIPv6ExthdrFlagsMethod() {
1123 Criterion matchExthdrFlags =
Jian Li79bdf3c2015-11-30 14:54:54 -08001124 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1);
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -07001125 IPv6ExthdrFlagsCriterion exthdrFlagsCriterion =
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -08001126 checkAndConvert(matchExthdrFlags,
Jian Li79bdf3c2015-11-30 14:54:54 -08001127 Criterion.Type.IPV6_EXTHDR,
1128 IPv6ExthdrFlagsCriterion.class);
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -08001129 assertThat(exthdrFlagsCriterion.exthdrFlags(),
1130 is(equalTo(ipv6ExthdrFlags1)));
1131 }
1132
1133 /**
1134 * Test the equals() method of the IPv6ExthdrFlagsCriterion class.
1135 */
1136 @Test
1137 public void testIPv6ExthdrFlagsCriterionEquals() {
1138 new EqualsTester()
1139 .addEqualityGroup(matchIpv6ExthdrFlags1,
1140 sameAsMatchIpv6ExthdrFlags1)
1141 .addEqualityGroup(matchIpv6ExthdrFlags2)
1142 .testEquals();
1143 }
1144
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -07001145 @Test
1146 public void testOchSignalCriterionEquals() {
1147 new EqualsTester()
1148 .addEqualityGroup(matchOchSignal1, sameAsMatchOchSignal1)
1149 .addEqualityGroup(matchOchSignal2)
1150 .testEquals();
1151 }
1152
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -07001153 /**
1154 * Test the equals() method of the OchSignalTypeCriterion class.
1155 */
1156 @Test
1157 public void testOchSignalTypeCriterionEquals() {
1158 new EqualsTester()
1159 .addEqualityGroup(matchOchSignalType1, sameAsMatchOchSignalType1)
1160 .addEqualityGroup(matchOchSignalType2)
1161 .testEquals();
1162 }
Yafit Hadar52d81552015-10-07 12:26:52 +03001163
1164 /**
1165 * Test the OduSignalId method.
1166 */
1167 @Test
1168 public void testMatchOduSignalIdMethod() {
1169 OduSignalId odu = oduSignalId(1, 80, new byte[]{2, 1, 1, 3, 1, 1, 3, 1, 1, 3});
1170
1171 Criterion matchoduSignalId = Criteria.matchOduSignalId(odu);
1172 OduSignalIdCriterion oduSignalIdCriterion =
1173 checkAndConvert(matchoduSignalId,
1174 Criterion.Type.ODU_SIGID,
1175 OduSignalIdCriterion.class);
1176 assertThat(oduSignalIdCriterion.oduSignalId(), is(equalTo(odu)));
1177 }
1178
1179 /**
1180 * Test the equals() method of the OduSignalIdCriterion class.
1181 */
1182 @Test
1183 public void testOduSignalIdCriterionEquals() {
1184 new EqualsTester()
1185 .addEqualityGroup(matchOduSignalId1, sameAsMatchOduSignalId1)
1186 .addEqualityGroup(matchOduSignalId2)
1187 .testEquals();
1188 }
1189
1190 // OduSignalTypeCriterion class
1191
1192 /**
1193 * Test the OduSignalType method.
1194 */
1195 @Test
1196 public void testMatchOduSignalTypeMethod() {
1197 OduSignalType oduSigType = OduSignalType.ODU2;
1198 Criterion matchoduSignalType = Criteria.matchOduSignalType(oduSigType);
1199 OduSignalTypeCriterion oduSignalTypeCriterion =
1200 checkAndConvert(matchoduSignalType,
1201 Criterion.Type.ODU_SIGTYPE,
1202 OduSignalTypeCriterion.class);
1203 assertThat(oduSignalTypeCriterion.signalType(), is(equalTo(oduSigType)));
1204 }
1205
1206 /**
1207 * Test the equals() method of the OduSignalTypeCriterion class.
1208 */
1209 @Test
1210 public void testOduSignalTypeCriterionEquals() {
1211 new EqualsTester()
1212 .addEqualityGroup(matchOduSignalType1, sameAsMatchOduSignalType1)
1213 .addEqualityGroup(matchOduSignalType2)
1214 .testEquals();
1215 }
Jian Lif1ecf992015-12-02 17:48:54 -08001216
1217 // PbbIsidCriterion class
1218
1219 /**
1220 * Test the matchPbbIsid method.
1221 */
1222 @Test
1223 public void testMatchPbbIsidMethod() {
1224 Criterion matchPbbIsid = Criteria.matchPbbIsid(pbbIsid1);
1225 PbbIsidCriterion pbbIsidCriterion =
1226 checkAndConvert(matchPbbIsid,
1227 Criterion.Type.PBB_ISID,
1228 PbbIsidCriterion.class);
1229 assertThat(pbbIsidCriterion.pbbIsid(), is(equalTo(pbbIsid1)));
1230 }
1231
1232 /**
1233 * Test the equals() method of the PbbIsidCriterion class.
1234 */
1235 @Test
1236 public void testPbbIsidCriterionEquals() {
1237 new EqualsTester()
1238 .addEqualityGroup(matchPbbIsid1, sameAsMatchPbbIsid1)
1239 .addEqualityGroup(matchPbbIsid2)
1240 .testEquals();
1241 }
Ray Milkey33d90232014-11-04 10:49:00 -08001242}