blob: 412d1d6a7bedbed47cfd716d1085529fea17a07f [file] [log] [blame]
Jian Lid18f2b02018-07-04 02:26:45 +09001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
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 */
16package org.onosproject.openstackvtap.impl;
17
18import com.google.common.collect.Sets;
19import com.google.common.testing.EqualsTester;
20import org.junit.Before;
21import org.junit.Test;
22import org.onlab.packet.IpAddress;
23import org.onlab.packet.IpPrefix;
24import org.onlab.packet.TpPort;
25import org.onosproject.openstackvtap.api.OpenstackVtap;
26import org.onosproject.openstackvtap.api.OpenstackVtapCriterion;
27import org.onosproject.openstackvtap.api.OpenstackVtapId;
28
29import static org.hamcrest.MatcherAssert.assertThat;
30import static org.hamcrest.Matchers.is;
31
32/**
33 * Unit tests for DefaultOpenstackVtap.
34 */
35public class DefaultOpenstackVtapTest {
36
Jimo Jung14e87bf2018-09-03 16:28:13 +090037 private static final OpenstackVtapId VTAP_ID_1 = OpenstackVtapId.vtapId();
38 private static final OpenstackVtapId VTAP_ID_2 = OpenstackVtapId.vtapId();
Jian Lid18f2b02018-07-04 02:26:45 +090039
40 private static final OpenstackVtap.Type VTAP_TYPE_1 = OpenstackVtap.Type.VTAP_TX;
41 private static final OpenstackVtap.Type VTAP_TYPE_2 = OpenstackVtap.Type.VTAP_RX;
42
43 private static final IpPrefix SRC_IP_PREFIX_1 =
44 IpPrefix.valueOf(IpAddress.valueOf("10.10.10.1"), 32);
45 private static final IpPrefix SRC_IP_PREFIX_2 =
46 IpPrefix.valueOf(IpAddress.valueOf("20.20.20.1"), 32);
47 private static final IpPrefix DST_IP_PREFIX_1 =
48 IpPrefix.valueOf(IpAddress.valueOf("10.10.10.2"), 32);
49 private static final IpPrefix DST_IP_PREFIX_2 =
50 IpPrefix.valueOf(IpAddress.valueOf("20.20.20.2"), 32);
51
52 private static final TpPort SRC_PORT_1 = TpPort.tpPort(10);
53 private static final TpPort SRC_PORT_2 = TpPort.tpPort(20);
54 private static final TpPort DST_PORT_1 = TpPort.tpPort(30);
55 private static final TpPort DST_PORT_2 = TpPort.tpPort(40);
56
57 private static final byte IP_PROTOCOL_1 = (byte) 1;
58 private static final byte IP_PROTOCOL_2 = (byte) 2;
59
60 private static final OpenstackVtapCriterion CRITERION_1 =
61 createVtapCriterion(SRC_IP_PREFIX_1, DST_IP_PREFIX_1, SRC_PORT_1, DST_PORT_1, IP_PROTOCOL_1);
62 private static final OpenstackVtapCriterion CRITERION_2 =
63 createVtapCriterion(SRC_IP_PREFIX_2, DST_IP_PREFIX_2, SRC_PORT_2, DST_PORT_2, IP_PROTOCOL_2);
64
65 private OpenstackVtap vtap1;
66 private OpenstackVtap sameAsVtap1;
67 private OpenstackVtap vtap2;
68
69 @Before
70 public void setup() {
71
72 OpenstackVtap.Builder builder1 = DefaultOpenstackVtap.builder();
73
74 vtap1 = builder1
75 .id(VTAP_ID_1)
76 .type(VTAP_TYPE_1)
Jimo Jung14e87bf2018-09-03 16:28:13 +090077 .vtapCriterion(CRITERION_1)
Jian Lid18f2b02018-07-04 02:26:45 +090078 .txDeviceIds(Sets.newHashSet())
79 .rxDeviceIds(Sets.newHashSet())
Jian Lid18f2b02018-07-04 02:26:45 +090080 .build();
81
82 OpenstackVtap.Builder builder2 = DefaultOpenstackVtap.builder();
83
84 sameAsVtap1 = builder2
85 .id(VTAP_ID_1)
86 .type(VTAP_TYPE_1)
Jimo Jung14e87bf2018-09-03 16:28:13 +090087 .vtapCriterion(CRITERION_1)
Jian Lid18f2b02018-07-04 02:26:45 +090088 .txDeviceIds(Sets.newHashSet())
89 .rxDeviceIds(Sets.newHashSet())
Jian Lid18f2b02018-07-04 02:26:45 +090090 .build();
91
92 OpenstackVtap.Builder builder3 = DefaultOpenstackVtap.builder();
93
94 vtap2 = builder3
95 .id(VTAP_ID_2)
96 .type(VTAP_TYPE_2)
Jimo Jung14e87bf2018-09-03 16:28:13 +090097 .vtapCriterion(CRITERION_2)
Jian Lid18f2b02018-07-04 02:26:45 +090098 .txDeviceIds(Sets.newHashSet())
99 .rxDeviceIds(Sets.newHashSet())
Jian Lid18f2b02018-07-04 02:26:45 +0900100 .build();
101
102 }
103
104 @Test
105 public void testEquality() {
106 new EqualsTester()
107 .addEqualityGroup(vtap1, sameAsVtap1)
108 .addEqualityGroup(vtap2).testEquals();
109 }
110
111 @Test
112 public void testConstruction() {
113 DefaultOpenstackVtap vtap = (DefaultOpenstackVtap) vtap1;
114
115 assertThat(vtap.id(), is(VTAP_ID_1));
Jimo Jung14e87bf2018-09-03 16:28:13 +0900116 assertThat(vtap.vtapCriterion(), is(CRITERION_1));
Jian Lid18f2b02018-07-04 02:26:45 +0900117 assertThat(vtap.type(), is(VTAP_TYPE_1));
118 }
119
120 private static OpenstackVtapCriterion createVtapCriterion(IpPrefix srcIp, IpPrefix dstIp,
121 TpPort srcPort, TpPort dstPort,
122 byte ipProtocol) {
123 return DefaultOpenstackVtapCriterion.builder()
124 .srcIpPrefix(srcIp)
125 .dstIpPrefix(dstIp)
126 .srcTpPort(srcPort)
127 .dstTpPort(dstPort)
128 .ipProtocol(ipProtocol)
129 .build();
130 }
131}