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