blob: d312e80937ef7f2cfdad918428e4f72ed47b60b9 [file] [log] [blame]
Mahesh Poojary Huaweifeef5382015-11-13 16:41:01 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
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";
49 final int minSrcPortRange = 5;
50 final int maxSrcPortRange = 10;
51 final int minDstPortRange = 5;
52 final int maxDstPortRange = 10;
53 final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
54 final TenantId tenantId = TenantId.tenantId("1");
55 final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
56 final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
57 final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
58 final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
59
60 DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
61 final FlowClassifier flowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
62 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
63 .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
64 .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
65 .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
66
67 flowClassifierBuilder = new DefaultFlowClassifier.Builder();
68 final FlowClassifier sameAsFlowClassifier1 = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
69 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
70 .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
71 .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
72 .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
73
74 // Create different classifier object.
75 final String name2 = "FlowClassifier2";
76 final String description2 = "FlowClassifier2";
77 final String ethType2 = "IPv6";
78 final String protocol2 = "udp";
79 final int minSrcPortRange2 = 5;
80 final int maxSrcPortRange2 = 10;
81 final int minDstPortRange2 = 5;
82 final int maxDstPortRange2 = 10;
83 final FlowClassifierId flowClassifierId2 = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
84 final TenantId tenantId2 = TenantId.tenantId("2");
85 final IpPrefix srcIpPrefix2 = IpPrefix.valueOf("0.0.0.0/0");
86 final IpPrefix dstIpPrefix2 = IpPrefix.valueOf("10.10.10.10/0");
87 final VirtualPortId virtualSrcPort2 = VirtualPortId.portId("3");
88 final VirtualPortId virtualDstPort2 = VirtualPortId.portId("4");
89
90 DefaultFlowClassifier.Builder flowClassifierBuilder3 = new DefaultFlowClassifier.Builder();
91 final FlowClassifier flowClassifier2 = flowClassifierBuilder3.setFlowClassifierId(flowClassifierId2)
92 .setTenantId(tenantId2).setName(name2).setDescription(description2).setEtherType(ethType2)
93 .setProtocol(protocol2).setMinSrcPortRange(minSrcPortRange2).setMaxSrcPortRange(maxSrcPortRange2)
94 .setMinDstPortRange(minDstPortRange2).setMaxDstPortRange(maxDstPortRange2).setSrcIpPrefix(srcIpPrefix2)
95 .setDstIpPrefix(dstIpPrefix2).setSrcPort(virtualSrcPort2).setDstPort(virtualDstPort2).build();
96
97 new EqualsTester().addEqualityGroup(flowClassifier1, sameAsFlowClassifier1).addEqualityGroup(flowClassifier2)
98 .testEquals();
99 }
100
101 /**
102 * Checks the construction of a DefaultFlowClassifier object.
103 */
104 @Test
105 public void testConstruction() {
106 final String name = "FlowClassifier";
107 final String description = "FlowClassifier";
108 final String ethType = "IPv4";
109 final String protocol = "tcp";
110 final int minSrcPortRange = 5;
111 final int maxSrcPortRange = 10;
112 final int minDstPortRange = 5;
113 final int maxDstPortRange = 10;
114 final FlowClassifierId flowClassifierId = FlowClassifierId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae");
115 final TenantId tenantId = TenantId.tenantId("1");
116 final IpPrefix srcIpPrefix = IpPrefix.valueOf("0.0.0.0/0");
117 final IpPrefix dstIpPrefix = IpPrefix.valueOf("10.10.10.10/0");
118 final VirtualPortId virtualSrcPort = VirtualPortId.portId("1");
119 final VirtualPortId virtualDstPort = VirtualPortId.portId("2");
120
121 DefaultFlowClassifier.Builder flowClassifierBuilder = new DefaultFlowClassifier.Builder();
122 final FlowClassifier flowClassifier = flowClassifierBuilder.setFlowClassifierId(flowClassifierId)
123 .setTenantId(tenantId).setName(name).setDescription(description).setEtherType(ethType)
124 .setProtocol(protocol).setMinSrcPortRange(minSrcPortRange).setMaxSrcPortRange(maxSrcPortRange)
125 .setMinDstPortRange(minDstPortRange).setMaxDstPortRange(maxDstPortRange).setSrcIpPrefix(srcIpPrefix)
126 .setDstIpPrefix(dstIpPrefix).setSrcPort(virtualSrcPort).setDstPort(virtualDstPort).build();
127
128 assertThat(flowClassifierId, is(flowClassifier.flowClassifierId()));
129 assertThat(tenantId, is(flowClassifier.tenantId()));
130 assertThat(name, is(flowClassifier.name()));
131 assertThat(description, is(flowClassifier.description()));
132 assertThat(ethType, is(flowClassifier.etherType()));
133 assertThat(protocol, is(flowClassifier.protocol()));
134 assertThat(minSrcPortRange, is(flowClassifier.minSrcPortRange()));
135 assertThat(maxSrcPortRange, is(flowClassifier.maxSrcPortRange()));
136 assertThat(minDstPortRange, is(flowClassifier.minDstPortRange()));
137 assertThat(maxDstPortRange, is(flowClassifier.maxDstPortRange()));
138 assertThat(srcIpPrefix, is(flowClassifier.srcIpPrefix()));
139 assertThat(dstIpPrefix, is(flowClassifier.dstIpPrefix()));
140 assertThat(virtualSrcPort, is(flowClassifier.srcPort()));
141 assertThat(virtualDstPort, is(flowClassifier.dstPort()));
142 }
143}