blob: b0d003ca58d038fa083cc5cf6ba8bf5fbb798e5d [file] [log] [blame]
Ray Milkey5d08e1e2016-11-02 13:02:12 +01001package org.onosproject.codec.impl;
2
3import java.io.IOException;
4import java.io.InputStream;
5import java.util.Set;
6import java.util.stream.IntStream;
7
8import org.junit.Test;
9import org.onlab.packet.IpAddress;
10import org.onlab.packet.MacAddress;
11import org.onlab.packet.VlanId;
12import org.onosproject.codec.JsonCodec;
13import org.onosproject.incubator.net.virtual.DefaultVirtualHost;
14import org.onosproject.incubator.net.virtual.NetworkId;
15import org.onosproject.incubator.net.virtual.VirtualHost;
16import org.onosproject.net.ConnectPoint;
17import org.onosproject.net.HostId;
18import org.onosproject.net.HostLocation;
19import org.onosproject.net.NetTestTools;
20
21import com.fasterxml.jackson.databind.JsonNode;
22import com.fasterxml.jackson.databind.node.ObjectNode;
23import com.google.common.collect.ImmutableSet;
24
25import static org.hamcrest.MatcherAssert.assertThat;
26import static org.hamcrest.Matchers.is;
27import static org.hamcrest.Matchers.isOneOf;
28import static org.hamcrest.Matchers.notNullValue;
29
30/**
31 * Tests VirtualHostCodec class.
32 */
33
34public class VirtualHostCodecTest {
35
36 private static final String TEST_IP1 = "1.1.1.1";
37 private static final String TEST_IP2 = "2.2.2.2";
38 private static final String TEST_HOST_ID = "12:34:56:78:90:11/1";
39 private static final String TEST_MAC_ADDRESS = "11:11:22:22:33:33";
40 private static final long TEST_NETWORK_ID = 44L;
41 private static final short TEST_VLAN_ID = (short) 12;
42 private static final ConnectPoint CONNECT_POINT =
43 NetTestTools.connectPoint("d1", 1);
44
45 @Test
46 public void testEncode() {
47 MockCodecContext context = new MockCodecContext();
48 NetworkId networkId = NetworkId.networkId(TEST_NETWORK_ID);
49 HostId id = NetTestTools.hid(TEST_HOST_ID);
50 MacAddress mac = MacAddress.valueOf(TEST_MAC_ADDRESS);
51 VlanId vlan = VlanId.vlanId(TEST_VLAN_ID);
52 HostLocation location =
53 new HostLocation(CONNECT_POINT, 0L);
54 Set<IpAddress> ips = ImmutableSet.of(IpAddress.valueOf(TEST_IP1),
55 IpAddress.valueOf(TEST_IP2));
56 VirtualHost host =
57 new DefaultVirtualHost(networkId, id, mac, vlan, location, ips);
58 JsonCodec<VirtualHost> codec = context.codec(VirtualHost.class);
59 ObjectNode node = codec.encode(host, context);
60
61 System.out.println(node.toString());
62
63 assertThat(node.get(VirtualHostCodec.NETWORK_ID).asLong(),
64 is(TEST_NETWORK_ID));
65 assertThat(node.get(VirtualHostCodec.HOST_ID).asText(),
66 is(TEST_HOST_ID));
67 assertThat(node.get(VirtualHostCodec.MAC_ADDRESS).asText(),
68 is(TEST_MAC_ADDRESS));
69 assertThat(node.get(VirtualHostCodec.VLAN).asInt(),
70 is((int) TEST_VLAN_ID));
71 assertThat(node.get(VirtualHostCodec.HOST_LOCATION).get("elementId").asText(),
72 is(location.deviceId().toString()));
73 assertThat(node.get(VirtualHostCodec.HOST_LOCATION).get("port").asLong(),
74 is(location.port().toLong()));
75
76 JsonNode jsonIps = node.get(VirtualHostCodec.IP_ADDRESSES);
77 assertThat(jsonIps, notNullValue());
78 assertThat(jsonIps.isArray(), is(true));
79 assertThat(jsonIps.size(), is(ips.size()));
80
81 IntStream.of(0, 1).forEach(index ->
82 assertThat(jsonIps.get(index).asText(),
83 isOneOf(TEST_IP1, TEST_IP2)));
84 }
85
86 @Test
87 public void testDecode() throws IOException {
88 MockCodecContext context = new MockCodecContext();
89 InputStream jsonStream =
90 VirtualHostCodecTest.class.getResourceAsStream("VirtualHost.json");
91 JsonNode json = context.mapper().readTree(jsonStream);
92 assertThat(json, notNullValue());
93 JsonCodec<VirtualHost> codec = context.codec(VirtualHost.class);
94 VirtualHost virtualHost = codec.decode((ObjectNode) json, context);
95 assertThat(virtualHost, notNullValue());
96
97 assertThat(virtualHost.networkId().id(),
98 is(TEST_NETWORK_ID));
99 assertThat(virtualHost.id().toString(),
100 is(NetTestTools.hid(TEST_MAC_ADDRESS + "/12").toString()));
101 assertThat(virtualHost.mac().toString(),
102 is(TEST_MAC_ADDRESS));
103 assertThat(virtualHost.vlan().id(),
104 is((short) TEST_VLAN_ID));
105 assertThat(virtualHost.location().deviceId(),
106 is(CONNECT_POINT.deviceId()));
107 assertThat(virtualHost.location().port().toLong(),
108 is(CONNECT_POINT.port().toLong()));
109
110
111 assertThat(virtualHost.ipAddresses().contains(IpAddress.valueOf(TEST_IP1)),
112 is(true));
113 assertThat(virtualHost.ipAddresses().contains(IpAddress.valueOf(TEST_IP2)),
114 is(true));
115 }
116}