blob: 743c5a4b11f1d520883987b6998ac28dfd5545ff [file] [log] [blame]
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +05303 *
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 */
Ray Milkey6c1bac32015-11-13 14:40:40 -080016package org.onosproject.vtnrsc;
17
18import org.junit.Test;
19import org.onlab.packet.IpPrefix;
20
21import com.google.common.testing.EqualsTester;
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053022
23import static org.hamcrest.MatcherAssert.assertThat;
24import static org.hamcrest.Matchers.is;
25import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
26
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053027/**
28 * Unit tests for DefaultFlowClassifier class.
29 */
30public class DefaultFlowClassifierTest {
31 /**
32 * Checks that the DefaultFlowClassifier class is immutable.
33 */
34 @Test
35 public void testImmutability() {
36 assertThatClassIsImmutable(DefaultFlowClassifier.class);
37 }
38
39 /**
40 * Checks the operation of equals() methods.
41 */
42 @Test
43 public void testEquals() {
44 // Create same two flow classifier objects.
45 final String name = "FlowClassifier1";
46 final String description = "FlowClassifier1";
47 final String ethType = "IPv4";
48 final String protocol = "tcp";
Phaneendra Manda299877f2016-04-13 23:28:03 +053049 final int priority = 65535;
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053050 final int minSrcPortRange = 5;
51 final int maxSrcPortRange = 10;
52 final int minDstPortRange = 5;
53 final int maxDstPortRange = 10;
54 final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
55 final TenantId tenantId = TenantId.tenantId("1");
56 final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
57 final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
58 final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
59 final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
60
61 DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
62 final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
63 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
Phaneendra Manda299877f2016-04-13 23:28:03 +053064 .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange)
65 .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange)
66 .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix)
67 .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053068
69 flowClassifierBuilder = new DefaultFlowClassifier.Builder();
70 final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
71 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
Phaneendra Manda299877f2016-04-13 23:28:03 +053072 .setProtocol(protocol).setPriority(priority).setMinSrcPortRange(minSrcPortRange)
73 .setMaxSrcPortRange(maxSrcPortRange).setMinDstPortRange(minDstPortRange)
74 .setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix).setDstIpPrefix(dstIpPrefix)
75 .setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053076
77 // Create different classifier object.
78 final String name2 = "FlowClassifier2";
79 final String description2 = "FlowClassifier2";
80 final String ethType2 = "IPv6";
81 final String protocol2 = "udp";
Phaneendra Manda299877f2016-04-13 23:28:03 +053082 final int priority2 = 50000;
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +053083 final int minSrcPortRange2 = 5;
84 final int maxSrcPortRange2 = 10;
85 final int minDstPortRange2 = 5;
86 final int maxDstPortRange2 = 10;
87 final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
88 final TenantId tenantId2 = TenantId.tenantId("2");
89 final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0");
90 final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0");
91 final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3");
92 final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4");
93
94 DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder();
95 final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2)
96 .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2)
97 .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2)
98 .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2)
Phaneendra Manda299877f2016-04-13 23:28:03 +053099 .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2)
100 .setPriority(priority2).build();
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +0530101
102 new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2)
103 .testEquals();
104 }
105
106 /**
107 * Checks the construction of a DefaultFlowClassifier object.
108 */
109 @Test
110 public void testConstruction() {
111 final String name = "FlowClassifier";
112 final String description = "FlowClassifier";
113 final String ethType = "IPv4";
114 final String protocol = "tcp";
Phaneendra Manda299877f2016-04-13 23:28:03 +0530115 final int priority = 30000;
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +0530116 final int minSrcPortRange = 5;
117 final int maxSrcPortRange = 10;
118 final int minDstPortRange = 5;
119 final int maxDstPortRange = 10;
120 final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
121 final TenantId tenantId = TenantId.tenantId("1");
122 final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
123 final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
124 final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
125 final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
126
127 DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
128 final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
129 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
130 .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
131 .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
Phaneendra Manda299877f2016-04-13 23:28:03 +0530132 .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort)
133 .setPriority(priority).build();
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +0530134
135 assertThat(flowClassifierId, is(flowClassifier.flowClassifierId()));
136 assertThat(tenantId, is(flowClassifier.tenantId()));
137 assertThat(name, is(flowClassifier.name()));
138 assertThat(description, is(flowClassifier.description()));
139 assertThat(ethType, is(flowClassifier.etherType()));
140 assertThat(protocol, is(flowClassifier.protocol()));
Phaneendra Manda299877f2016-04-13 23:28:03 +0530141 assertThat(priority, is(flowClassifier.priority()));
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +0530142 assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange()));
143 assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange()));
144 assertThat(minDstPortRange, is(flowClassifier.minDstPortRange()));
145 assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange()));
146 assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix()));
147 assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix()));
148 assertThat(virtualSrcPort, is(flowClassifier.srcPort()));
149 assertThat(virtualDstPort, is(flowClassifier.dstPort()));
150 }
151}