da1dd9e1256f8507a3e1569f46d4e9fd626ab80a
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / translator / ErrorTranslatorV10Test.java
1 /**
2  * Copyright (c) 2013-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 package org.opendaylight.openflowplugin.openflow.md.core.translator;
9
10 import java.math.BigInteger;
11 import java.lang.reflect.Method;
12
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 /**
26  *
27  */
28 public class ErrorTranslatorV10Test {
29
30     private ErrorV10Translator errorTranslator;
31     private static Logger LOG = LoggerFactory
32             .getLogger(ErrorTranslatorV10Test.class);
33
34     /**
35      * startup method
36      */
37     @Before
38     public void setUp() {
39         errorTranslator = new ErrorV10Translator();
40     }
41
42     /**
43      * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorTranslator#getGranularNodeErrors(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType, NodeRef)}.
44      * @throws Exception
45      */
46     @Test
47     public void testGetGranularNodeErrors() throws Exception {
48         BigInteger dpid = BigInteger.valueOf(0x1122334455L);
49         NodeRef node = new NodeRef(
50             InventoryDataServiceUtil.identifierFromDatapathId(dpid));
51         for (ErrorType eType : ErrorType.values()) {
52             ErrorMessageBuilder builder = new ErrorMessageBuilder();
53             builder.setType(eType.getIntValue());
54             builder.setCode(21);
55             builder.setXid(42L);
56             builder.setData(new byte[]{42});
57
58             ErrorMessage errorMessage = errorTranslator.getGranularNodeErrors(builder.build(), eType, node);
59             LOG.debug("translating errorMessage of type {}", eType);
60             Assert.assertNotNull("translated error is null", errorMessage);
61             Assert.assertEquals(21, errorMessage.getCode().intValue());
62             Assert.assertEquals(eType, errorMessage.getType());
63             Method getNode = errorMessage.getClass().getMethod("getNode");
64             getNode.setAccessible(true);
65             Assert.assertEquals(node, getNode.invoke(errorMessage));
66             Method getXid = errorMessage.getClass().getMethod("getTransactionId", new Class[0]);
67             getXid.setAccessible(true);
68             TransactionId xid = (TransactionId) getXid.invoke(errorMessage, new Object[0]);
69             Assert.assertEquals(42L, xid.getValue().longValue());
70             Assert.assertNotNull("data is null", errorMessage.getData());
71         }
72     }
73
74     /**
75      * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorTranslator#decodeErrorType(int)}.
76      */
77     @Test
78     public void testDecodeErrorType() {
79         for (ErrorType eType : ErrorType.values()) {
80             ErrorType result = errorTranslator.decodeErrorType(eType.getIntValue());
81             int expectedType = -1;
82             switch (eType.getIntValue()) {
83             case 3:
84                 expectedType = 5;
85                 break;
86             case 4:
87                 expectedType = 7;
88                 break;
89             case 5:
90                 expectedType = 9;
91                 break;
92             default:
93                 expectedType = eType.getIntValue();
94             }
95
96             Assert.assertEquals(expectedType, result.getIntValue());
97         }
98     }
99 }