2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.openflowplugin.openflow.md.core.translator;
\r
11 import static org.mockito.Mockito.when;
\r
13 import java.math.BigInteger;
\r
14 import java.util.List;
\r
16 import org.junit.Assert;
\r
17 import org.junit.Before;
\r
18 import org.junit.Test;
\r
19 import org.mockito.Mock;
\r
20 import org.mockito.MockitoAnnotations;
\r
21 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
\r
22 import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
\r
23 import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeUpdated;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdated;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessageBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessageBuilder;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDescCaseBuilder;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.desc._case.MultipartReplyDescBuilder;
\r
36 import org.opendaylight.yangtools.yang.binding.DataObject;
\r
39 * @author michal.polkorab
\r
42 public class MultiPartMessageDescToNodeUpdatedTranslatorTest {
\r
44 @Mock SwitchConnectionDistinguisher cookie;
\r
45 @Mock SessionContext sc;
\r
46 @Mock GetFeaturesOutput features;
\r
48 MultiPartMessageDescToNodeUpdatedTranslator translator = new MultiPartMessageDescToNodeUpdatedTranslator();
\r
54 public void startUp() {
\r
55 MockitoAnnotations.initMocks(this);
\r
56 when(sc.getFeatures()).thenReturn(features);
\r
57 when(features.getDatapathId()).thenReturn(new BigInteger("42"));
\r
61 * Test {@link MultiPartMessageDescToNodeUpdatedTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}
\r
65 public void testWrongInputs() {
\r
66 HelloMessageBuilder helloBuilder = new HelloMessageBuilder();
\r
67 HelloMessage helloMessage = helloBuilder.build();
\r
68 List<DataObject> list = translator.translate(cookie, sc, helloMessage);
\r
69 Assert.assertEquals("Wrong output", 0, list.size());
\r
71 MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
\r
72 builder.setType(MultipartType.OFPMPFLOW);
\r
73 MultipartReplyMessage message = builder.build();
\r
74 list = translator.translate(cookie, sc, message);
\r
75 Assert.assertEquals("Wrong output", 0, list.size());
\r
79 * Test {@link MultiPartMessageDescToNodeUpdatedTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}
\r
80 * with correct input
\r
83 public void testCorrectInput() {
\r
84 MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
\r
85 builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
\r
86 builder.setXid(12345L);
\r
87 builder.setType(MultipartType.OFPMPDESC);
\r
88 builder.setFlags(new MultipartRequestFlags(false));
\r
90 MultipartReplyDescCaseBuilder caseBuilder = new MultipartReplyDescCaseBuilder();
\r
91 MultipartReplyDescBuilder descBuilder = new MultipartReplyDescBuilder();
\r
92 descBuilder.setMfrDesc("Collaboration ltd.");
\r
93 descBuilder.setHwDesc("Simple switch");
\r
94 descBuilder.setSwDesc("Best software ever inside");
\r
95 descBuilder.setSerialNum("123456789");
\r
96 descBuilder.setDpDesc("0000000000000001");
\r
97 caseBuilder.setMultipartReplyDesc(descBuilder.build());
\r
98 builder.setMultipartReplyBody(caseBuilder.build());
\r
99 MultipartReplyMessage message = builder.build();
\r
101 List<DataObject> list = translator.translate(cookie, sc, message);
\r
102 Assert.assertEquals("Wrong output", 1, list.size());
\r
103 NodeUpdated nodeUpdated = (NodeUpdated) list.get(0);
\r
104 Assert.assertEquals("Wrong node-id", "openflow:42", nodeUpdated.getId().getValue());
\r
105 FlowCapableNodeUpdated flowCapable = nodeUpdated.getAugmentation(FlowCapableNodeUpdated.class);
\r
106 Assert.assertEquals("Wrong manufacturer", "Collaboration ltd.", flowCapable.getManufacturer());
\r
107 Assert.assertEquals("Wrong hardware", "Simple switch", flowCapable.getHardware());
\r
108 Assert.assertEquals("Wrong software", "Best software ever inside", flowCapable.getSoftware());
\r
109 Assert.assertEquals("Wrong serial number", "123456789", flowCapable.getSerialNumber());
\r
110 Assert.assertEquals("Wrong datapath description", "0000000000000001", flowCapable.getDescription());
\r