Use new Uint* constants
[bgpcep.git] / pcep / topology / cli / src / test / java / org / opendaylight / protocol / pcep / cli / utils / PcepStateUtilsTest.java
1 /*
2  * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.pcep.cli.utils;
9
10 import static org.junit.Assert.assertEquals;
11
12 import com.google.common.io.Resources;
13 import java.io.ByteArrayOutputStream;
14 import java.io.IOException;
15 import java.io.PrintStream;
16 import java.nio.charset.StandardCharsets;
17 import java.util.concurrent.ExecutionException;
18 import org.junit.Test;
19 import org.opendaylight.mdsal.binding.api.WriteTransaction;
20 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
21 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdStatsAug;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdStatsAugBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAug;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAugBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesStatsAug;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesStatsAugBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.error.messages.grouping.ErrorMessages;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.error.messages.grouping.ErrorMessagesBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.LocalPref;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.LocalPrefBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.Messages;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.MessagesBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.PeerCapabilities;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.PeerCapabilitiesBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.PeerPrefBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.grouping.PcepSessionState;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.grouping.PcepSessionStateBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.reply.time.grouping.ReplyTime;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.reply.time.grouping.ReplyTimeBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.stats.rev181109.PcepTopologyNodeStatsAug;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.stats.rev181109.PcepTopologyNodeStatsAugBuilder;
43 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
44 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
45 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
46 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
47 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
48 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
49 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
50 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
51 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
52 import org.opendaylight.yangtools.yang.common.Uint16;
53 import org.opendaylight.yangtools.yang.common.Uint32;
54 import org.opendaylight.yangtools.yang.common.Uint8;
55
56 public class PcepStateUtilsTest extends AbstractConcurrentDataBrokerTest {
57     private static final String PCEP_TOPOLOGY = "pcep-topology";
58     private static final String IP_ADDRESS = "127.0.0.1";
59     private static final String RIB_NOT_FOUND = "Node [pcc://" + IP_ADDRESS + "] not found\n";
60     private static final String NODE_ID = "pcc://127.0.0.1";
61     private static final byte[] SPEAKER_ID = {0x01, 0x02, 0x03, 0x04};
62
63     private final ByteArrayOutputStream output = new ByteArrayOutputStream();
64     private final PrintStream stream = new PrintStream(this.output);
65
66     @Test
67     public void testNodeStateNotFound() {
68         PcepStateUtils.displayNodeState(getDataBroker(), this.stream, PCEP_TOPOLOGY, NODE_ID);
69         assertEquals(RIB_NOT_FOUND, this.output.toString());
70     }
71
72     @Test
73     public void testDisplayNodeState() throws IOException, ExecutionException, InterruptedException {
74         createDefaultProtocol();
75         PcepStateUtils.displayNodeState(getDataBroker(), this.stream, PCEP_TOPOLOGY, NODE_ID);
76         final String expected = Resources.toString(getClass().getClassLoader().getResource("node.txt"),
77             StandardCharsets.UTF_8);
78         assertEquals(expected, this.output.toString());
79     }
80
81     private void createDefaultProtocol() throws ExecutionException, InterruptedException {
82         final WriteTransaction wt = getDataBroker().newWriteOnlyTransaction();
83         final Node node = new NodeBuilder()
84                 .setNodeId(new NodeId(NODE_ID))
85                 .addAugmentation(PcepTopologyNodeStatsAug.class,
86                         new PcepTopologyNodeStatsAugBuilder().setPcepSessionState(createPcepSessionState())
87                                 .build())
88                 .build();
89
90         final InstanceIdentifier<Node> topology = InstanceIdentifier.builder(NetworkTopology.class)
91                 .child(Topology.class, new TopologyKey(new TopologyId(PCEP_TOPOLOGY)))
92                 .child(Node.class, new NodeKey(new NodeId(NODE_ID))).build();
93         wt.mergeParentStructurePut(LogicalDatastoreType.OPERATIONAL, topology, node);
94         wt.commit().get();
95     }
96
97     private static PcepSessionState createPcepSessionState() {
98         final LocalPref pref = new LocalPrefBuilder()
99                 .setKeepalive(Uint8.valueOf(30))
100                 .setDeadtimer(Uint8.valueOf(120))
101                 .setIpAddress(IP_ADDRESS)
102                 .setSessionId(Uint16.ZERO)
103                 .addAugmentation(PcepEntityIdStatsAug.class, new PcepEntityIdStatsAugBuilder()
104                         .setSpeakerEntityIdValue(SPEAKER_ID).build())
105                 .build();
106
107         final PeerCapabilities capa = new PeerCapabilitiesBuilder()
108                 .addAugmentation(StatefulCapabilitiesStatsAug.class, new StatefulCapabilitiesStatsAugBuilder()
109                         .setStateful(Boolean.TRUE)
110                         .setInstantiation(Boolean.TRUE)
111                         .setActive(Boolean.TRUE)
112                         .build())
113                 .build();
114
115         final ReplyTime reply = new ReplyTimeBuilder()
116                 .setAverageTime(Uint32.ONE)
117                 .setMaxTime(Uint32.valueOf(3))
118                 .setMinTime(Uint32.TWO)
119                 .build();
120
121         final ErrorMessages errorMsg = new ErrorMessagesBuilder()
122                 .setReceivedErrorMsgCount(Uint32.ONE)
123                 .setSentErrorMsgCount(Uint32.TWO)
124                 .build();
125
126         final StatefulMessagesStatsAug statefulMsg = new StatefulMessagesStatsAugBuilder()
127                 .setLastReceivedRptMsgTimestamp(Uint32.valueOf(1512043769L))
128                 .setSentUpdMsgCount(Uint32.ONE)
129                 .setReceivedRptMsgCount(Uint32.TWO)
130                 .setSentInitMsgCount(Uint32.valueOf(3))
131                 .build();
132
133         final Messages messages = new MessagesBuilder()
134                 .setLastSentMsgTimestamp(Uint32.valueOf(1512043828L))
135                 .setUnknownMsgReceived(Uint16.ONE)
136                 .setSentMsgCount(Uint32.valueOf(5))
137                 .setReceivedMsgCount(Uint32.valueOf(4))
138                 .setReplyTime(reply)
139                 .setErrorMessages(errorMsg)
140                 .addAugmentation(StatefulMessagesStatsAug.class, statefulMsg)
141                 .build();
142
143         return new PcepSessionStateBuilder()
144                 .setSynchronized(Boolean.TRUE)
145                 .setSessionDuration("0:00:01:26")
146                 .setDelegatedLspsCount(Uint16.ONE)
147                 .setLocalPref(pref)
148                 .setPeerPref(new PeerPrefBuilder(pref).build())
149                 .setPeerCapabilities(capa)
150                 .setMessages(messages)
151                 .build();
152     }
153 }