Replaced reference from deprecated junit.framework.Assert to org.junit.Assert
[bgpcep.git] / pcep / pcc-mock / src / test / java / org / opendaylight / protocol / pcep / pcc / mock / SimpleSessionListenerTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  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
9 package org.opendaylight.protocol.pcep.pcc.mock;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertTrue;
13
14 import com.google.common.collect.Lists;
15 import java.net.InetAddress;
16 import java.net.UnknownHostException;
17 import java.util.List;
18 import org.junit.After;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.mockito.Mock;
22 import org.mockito.Mockito;
23 import org.mockito.MockitoAnnotations;
24 import org.mockito.invocation.InvocationOnMock;
25 import org.mockito.stubbing.Answer;
26 import org.opendaylight.protocol.pcep.PCEPSession;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcrpt;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.Pcupd;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PcupdBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.PlspId;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.SrpIdNumber;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.lsp.object.LspBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.PcupdMessageBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.UpdatesBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.pcupd.message.pcupd.message.updates.PathBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev131222.srp.object.SrpBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcerr;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.EroBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.IpPrefixCaseBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.ip.prefix._case.IpPrefixBuilder;
45
46 public class SimpleSessionListenerTest {
47
48     private static final String IP_ADDRESS = "127.0.0.1";
49
50     @Mock
51     private PCEPSession mockedSession;
52
53     private final List<Message> sendMessages = Lists.newArrayList();
54
55     @Before
56     public void setup() {
57         MockitoAnnotations.initMocks(this);
58         Mockito.doAnswer(new Answer<Void>() {
59             @Override
60             public Void answer(InvocationOnMock invocation) throws Throwable {
61                 SimpleSessionListenerTest.this.sendMessages.add((Message) invocation.getArguments()[0]);
62                 return null;
63             }
64         }).when(mockedSession).sendMessage(Mockito.any(Message.class));
65     }
66
67     @After
68     public void cleanup() {
69         this.sendMessages.clear();
70     }
71
72     @Test
73     public void testSessionListenerPcRpt() throws UnknownHostException {
74         final SimpleSessionListener sessionListser = new SimpleSessionListener(1, false, 1,
75                 InetAddress.getByName(IP_ADDRESS));
76
77         sessionListser.onSessionUp(this.mockedSession);
78         // one lsp + end-of-sync marker
79         Mockito.verify(this.mockedSession, Mockito.times(2)).sendMessage(Mockito.any(Message.class));
80         assertEquals(2, this.sendMessages.size());
81         assertTrue(this.sendMessages.get(0) instanceof Pcrpt);
82         assertTrue(this.sendMessages.get(1) instanceof Pcrpt);
83
84         sessionListser.onMessage(this.mockedSession, createUpdMsg());
85         // send PcRpt as a response to PcUpd
86         Mockito.verify(this.mockedSession, Mockito.times(3)).sendMessage(Mockito.any(Message.class));
87         assertEquals(3, this.sendMessages.size());
88         assertTrue(this.sendMessages.get(2) instanceof Pcrpt);
89
90         sessionListser.onSessionDown(mockedSession, new Exception());
91         Mockito.verify(this.mockedSession, Mockito.times(1)).close();
92     }
93
94     @Test
95     public void testSessionListenerPcErr() throws UnknownHostException {
96         final SimpleSessionListener sessionListser = new SimpleSessionListener(1, true, 1,
97                 InetAddress.getByName(IP_ADDRESS));
98
99         sessionListser.onMessage(this.mockedSession, createUpdMsg());
100         // send PcErr as a response to PcUpd
101         Mockito.verify(this.mockedSession, Mockito.times(1)).sendMessage(Mockito.any(Message.class));
102         assertEquals(1, this.sendMessages.size());
103         assertTrue(this.sendMessages.get(0) instanceof Pcerr);
104     }
105
106     private Pcupd createUpdMsg() {
107         final PcupdMessageBuilder msgBuilder = new PcupdMessageBuilder();
108         final UpdatesBuilder updsBuilder = new UpdatesBuilder();
109         updsBuilder.setLsp(new LspBuilder().setPlspId(new PlspId(1L)).build());
110         final PathBuilder pathBuilder = new PathBuilder();
111         pathBuilder.setEro(
112                 new EroBuilder()
113                     .setSubobject(Lists.newArrayList(new SubobjectBuilder().setSubobjectType(new IpPrefixCaseBuilder().setIpPrefix(
114                         new IpPrefixBuilder().setIpPrefix(new IpPrefix(new Ipv4Prefix("127.0.0.2/32"))).build()).build()).build())).build());
115         updsBuilder.setPath(pathBuilder.build());
116         updsBuilder.setSrp(new SrpBuilder().setOperationId(new SrpIdNumber(0L)).build());
117         msgBuilder.setUpdates(Lists.newArrayList(updsBuilder.build()));
118         return new PcupdBuilder().setPcupdMessage(msgBuilder.build()).build();
119     }
120 }