blob: 644b839f66feae9855a1f72cf43fd23081548f2c [file] [log] [blame]
Jian Li70c32de2021-02-26 18:15:20 +09001/*
2 * Copyright 2021-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.kubevirtnetworking.api;
17
18import com.google.common.collect.ImmutableMap;
19import com.google.common.collect.ImmutableSet;
20import com.google.common.testing.EqualsTester;
21import org.junit.Before;
22import org.junit.Test;
23import org.onlab.packet.IpAddress;
24import org.onlab.packet.MacAddress;
25
26import static junit.framework.TestCase.assertEquals;
27import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
28import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.FLAT;
29import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
30
31/**
32 * Unit tests for the default kubevirt router class.
33 */
34public class DefaultKubevirtRouterTest {
35
36 private static final String NAME_1 = "router-1";
37 private static final String NAME_2 = "router-2";
38 private static final String DESCRIPTION_1 = "dummy router 1";
39 private static final String DESCRIPTION_2 = "dummy router 2";
40 private static final boolean ENABLE_SNAT_1 = false;
41 private static final boolean ENABLE_SNAT_2 = true;
Jian Lic49017d2021-03-16 16:06:33 +090042 private static final MacAddress MAC_ADDRESS_1 = MacAddress.valueOf("11:22:33:44:55:66");
43 private static final MacAddress MAC_ADDRESS_2 = MacAddress.valueOf("22:33:44:55:66:77");
Jian Li70c32de2021-02-26 18:15:20 +090044 private static final KubevirtNetwork.Type TYPE_1 = FLAT;
45 private static final KubevirtNetwork.Type TYPE_2 = VXLAN;
46 private static final String NETWORK_NAME_1 = "net-1";
47 private static final String NETWORK_NAME_2 = "net-2";
Daniel Parkb9a22022021-03-04 18:58:47 +090048 private static final String GATEWAY_HOST_1 = "gateway-1";
49 private static final String GATEWAY_HOST_2 = "gateway-2";
Jian Li70c32de2021-02-26 18:15:20 +090050
51 private static final KubevirtPeerRouter PEER_ROUTER_1 =
52 new KubevirtPeerRouter(IpAddress.valueOf("192.168.10.10"),
53 MacAddress.valueOf("11:22:33:44:55:66"));
54 private static final KubevirtPeerRouter PEER_ROUTER_2 =
55 new KubevirtPeerRouter(IpAddress.valueOf("192.168.20.20"),
56 MacAddress.valueOf("22:33:44:55:66:77"));
57
58 private KubevirtRouter router1;
59 private KubevirtRouter sameAsRouter1;
60 private KubevirtRouter router2;
61
62 /**
63 * Tests class immutability.
64 */
65 @Test
66 public void testImmutability() {
67 assertThatClassIsImmutable(DefaultKubevirtRouter.class);
68 }
69
70 /**
71 * Initial setup for this unit test.
72 */
73 @Before
74 public void setUp() {
75 router1 = DefaultKubevirtRouter.builder()
76 .name(NAME_1)
77 .description(DESCRIPTION_1)
78 .enableSnat(ENABLE_SNAT_1)
Jian Lic49017d2021-03-16 16:06:33 +090079 .mac(MAC_ADDRESS_1)
Jian Li70c32de2021-02-26 18:15:20 +090080 .internal(ImmutableSet.of(NETWORK_NAME_1))
Jian Li7eb20782021-02-27 01:10:50 +090081 .external(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1))
Jian Li70c32de2021-02-26 18:15:20 +090082 .peerRouter(PEER_ROUTER_1)
Daniel Parkb9a22022021-03-04 18:58:47 +090083 .electedGateway(GATEWAY_HOST_1)
Jian Li70c32de2021-02-26 18:15:20 +090084 .build();
85 sameAsRouter1 = DefaultKubevirtRouter.builder()
86 .name(NAME_1)
87 .description(DESCRIPTION_1)
88 .enableSnat(ENABLE_SNAT_1)
Jian Lic49017d2021-03-16 16:06:33 +090089 .mac(MAC_ADDRESS_1)
Jian Li70c32de2021-02-26 18:15:20 +090090 .internal(ImmutableSet.of(NETWORK_NAME_1))
Jian Li7eb20782021-02-27 01:10:50 +090091 .external(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1))
Jian Li70c32de2021-02-26 18:15:20 +090092 .peerRouter(PEER_ROUTER_1)
Daniel Parkb9a22022021-03-04 18:58:47 +090093 .electedGateway(GATEWAY_HOST_1)
Jian Li70c32de2021-02-26 18:15:20 +090094 .build();
95 router2 = DefaultKubevirtRouter.builder()
96 .name(NAME_2)
97 .description(DESCRIPTION_2)
98 .enableSnat(ENABLE_SNAT_2)
Jian Lic49017d2021-03-16 16:06:33 +090099 .mac(MAC_ADDRESS_2)
Jian Li70c32de2021-02-26 18:15:20 +0900100 .internal(ImmutableSet.of(NETWORK_NAME_2))
Jian Li7eb20782021-02-27 01:10:50 +0900101 .external(ImmutableMap.of("20.20.20.20", NETWORK_NAME_2))
Jian Li70c32de2021-02-26 18:15:20 +0900102 .peerRouter(PEER_ROUTER_2)
Daniel Parkb9a22022021-03-04 18:58:47 +0900103 .electedGateway(GATEWAY_HOST_2)
Jian Li70c32de2021-02-26 18:15:20 +0900104 .build();
105 }
106
107 /**
108 * Tests object equality.
109 */
110 @Test
111 public void testEquality() {
112 new EqualsTester().addEqualityGroup(router1, sameAsRouter1)
113 .addEqualityGroup(router2)
114 .testEquals();
115 }
116
117 /**
118 * Test object construction.
119 */
120 @Test
121 public void testConstruction() {
122 KubevirtRouter router = router1;
123
124 assertEquals(NAME_1, router.name());
125 assertEquals(DESCRIPTION_1, router.description());
126 assertEquals(ENABLE_SNAT_1, router.enableSnat());
Jian Lic49017d2021-03-16 16:06:33 +0900127 assertEquals(MAC_ADDRESS_1, router.mac());
Jian Li70c32de2021-02-26 18:15:20 +0900128 assertEquals(ImmutableSet.of(NETWORK_NAME_1), router.internal());
Jian Li7eb20782021-02-27 01:10:50 +0900129 assertEquals(ImmutableMap.of("10.10.10.10", NETWORK_NAME_1), router.external());
Jian Li70c32de2021-02-26 18:15:20 +0900130 assertEquals(PEER_ROUTER_1, router.peerRouter());
131 }
132}