blob: fd9fbf5605f62cee9376d7b4781b62ba53cd7e7d [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
37 private static final OpenstackVtapId VTAP_ID_1 = OpenstackVtapId.vTapId();
38 private static final OpenstackVtapId VTAP_ID_2 = OpenstackVtapId.vTapId();
39
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)
77 .vTapCriterion(CRITERION_1)
78 .txDeviceIds(Sets.newHashSet())
79 .rxDeviceIds(Sets.newHashSet())
80 .annotations()
81 .build();
82
83 OpenstackVtap.Builder builder2 = DefaultOpenstackVtap.builder();
84
85 sameAsVtap1 = builder2
86 .id(VTAP_ID_1)
87 .type(VTAP_TYPE_1)
88 .vTapCriterion(CRITERION_1)
89 .txDeviceIds(Sets.newHashSet())
90 .rxDeviceIds(Sets.newHashSet())
91 .annotations()
92 .build();
93
94 OpenstackVtap.Builder builder3 = DefaultOpenstackVtap.builder();
95
96 vtap2 = builder3
97 .id(VTAP_ID_2)
98 .type(VTAP_TYPE_2)
99 .vTapCriterion(CRITERION_2)
100 .txDeviceIds(Sets.newHashSet())
101 .rxDeviceIds(Sets.newHashSet())
102 .annotations()
103 .build();
104
105 }
106
107 @Test
108 public void testEquality() {
109 new EqualsTester()
110 .addEqualityGroup(vtap1, sameAsVtap1)
111 .addEqualityGroup(vtap2).testEquals();
112 }
113
114 @Test
115 public void testConstruction() {
116 DefaultOpenstackVtap vtap = (DefaultOpenstackVtap) vtap1;
117
118 assertThat(vtap.id(), is(VTAP_ID_1));
119 assertThat(vtap.vTapCriterion(), is(CRITERION_1));
120 assertThat(vtap.type(), is(VTAP_TYPE_1));
121 }
122
123 private static OpenstackVtapCriterion createVtapCriterion(IpPrefix srcIp, IpPrefix dstIp,
124 TpPort srcPort, TpPort dstPort,
125 byte ipProtocol) {
126 return DefaultOpenstackVtapCriterion.builder()
127 .srcIpPrefix(srcIp)
128 .dstIpPrefix(dstIp)
129 .srcTpPort(srcPort)
130 .dstTpPort(dstPort)
131 .ipProtocol(ipProtocol)
132 .build();
133 }
134}