SureshBR
Committed by Gerrit Code Review

[ONOS-3162] UT for port pair group codec

Change-Id: Ic6c0284d00ee1eba25075f78811feb693c761ab8
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
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 + */
16 +package org.onosproject.vtnweb.web;
17 +
18 +import static org.hamcrest.MatcherAssert.assertThat;
19 +import static org.hamcrest.Matchers.is;
20 +import static org.hamcrest.Matchers.notNullValue;
21 +
22 +import java.io.IOException;
23 +import java.io.InputStream;
24 +
25 +import org.junit.Before;
26 +import org.junit.Test;
27 +import org.onosproject.codec.JsonCodec;
28 +import org.onosproject.vtnrsc.PortPairGroup;
29 +import org.onosproject.vtnrsc.PortPairGroupId;
30 +import org.onosproject.vtnrsc.TenantId;
31 +
32 +import com.fasterxml.jackson.databind.JsonNode;
33 +import com.fasterxml.jackson.databind.ObjectMapper;
34 +import com.fasterxml.jackson.databind.node.ObjectNode;
35 +
36 +/**
37 + * Flow rule codec unit tests.
38 + */
39 +public class PortPairGroupCodecTest {
40 +
41 + SfcCodecContext context;
42 + JsonCodec<PortPairGroup> portPairGroupCodec;
43 + /**
44 + * Sets up for each test. Creates a context and fetches the flow rule
45 + * codec.
46 + */
47 + @Before
48 + public void setUp() {
49 + context = new SfcCodecContext();
50 + portPairGroupCodec = context.codec(PortPairGroup.class);
51 + assertThat(portPairGroupCodec, notNullValue());
52 + }
53 +
54 + /**
55 + * Reads in a rule from the given resource and decodes it.
56 + *
57 + * @param resourceName resource to use to read the JSON for the rule
58 + * @return decoded flow rule
59 + * @throws IOException if processing the resource fails
60 + */
61 + private PortPairGroup getPortPairGroup(String resourceName) throws IOException {
62 + InputStream jsonStream = PortPairGroupCodecTest.class
63 + .getResourceAsStream(resourceName);
64 + ObjectMapper mapper = new ObjectMapper();
65 + JsonNode json = mapper.readTree(jsonStream);
66 + assertThat(json, notNullValue());
67 + PortPairGroup portPairGroup = portPairGroupCodec.decode((ObjectNode) json, context);
68 + assertThat(portPairGroup, notNullValue());
69 + return portPairGroup;
70 + }
71 +
72 + /**
73 + * Checks that a simple rule decodes properly.
74 + *
75 + * @throws IOException if the resource cannot be processed
76 + */
77 + @Test
78 + public void codecPortPairGroupTest() throws IOException {
79 +
80 + PortPairGroup portPairGroup = getPortPairGroup("portPairGroup.json");
81 +
82 + assertThat(portPairGroup, notNullValue());
83 +
84 + PortPairGroupId portPairGroupId = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1");
85 + TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5");
86 +
87 + assertThat(portPairGroup.portPairGroupId().toString(), is(portPairGroupId.toString()));
88 + assertThat(portPairGroup.name(), is("PG1"));
89 + assertThat(portPairGroup.tenantId().toString(), is(tenantId.toString()));
90 + assertThat(portPairGroup.description(), is("Two port-pairs"));
91 + assertThat(portPairGroup.portPairs(), notNullValue());
92 + }
93 +}
1 +{
2 + "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1",
3 + "name": "PG1",
4 + "tenant_id": "d382007aa9904763a801f68ecf065cf5",
5 + "description": "Two port-pairs",
6 + "port_pairs": [
7 + "875dfeda-43ed-23fe-454b-764feab2c342",
8 + "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"
9 + ]
10 +}