Bug 1764 - moved Session related interfaces to openflowplugin-api
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / translator / MultiPartMessageDescToNodeUpdatedTranslatorTest.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\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
7  */\r
8 \r
9 package org.opendaylight.openflowplugin.openflow.md.core.translator;\r
10 \r
11 import static org.mockito.Mockito.when;\r
12 \r
13 import java.math.BigInteger;\r
14 import java.util.List;\r
15 \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
37 \r
38 /**\r
39  * @author michal.polkorab\r
40  *\r
41  */\r
42 public class MultiPartMessageDescToNodeUpdatedTranslatorTest {\r
43 \r
44     @Mock SwitchConnectionDistinguisher cookie;\r
45     @Mock SessionContext sc;\r
46     @Mock GetFeaturesOutput features;\r
47 \r
48     MultiPartMessageDescToNodeUpdatedTranslator translator = new MultiPartMessageDescToNodeUpdatedTranslator();\r
49 \r
50     /**\r
51      * Initializes mocks\r
52      */\r
53     @Before\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
58     }\r
59 \r
60     /**\r
61      * Test {@link MultiPartMessageDescToNodeUpdatedTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
62      * with wrong inputs\r
63      */\r
64     @Test\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
70         \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
76     }\r
77 \r
78     /**\r
79      * Test {@link MultiPartMessageDescToNodeUpdatedTranslator#translate(SwitchConnectionDistinguisher, SessionContext, OfHeader)}\r
80      * with correct input\r
81      */\r
82     @Test\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
89         \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
100         \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
111     }\r
112 }