OPNFLWPLUG-1032: Neon-MRI: Bump odlparent, yangtools, mdsal
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / test / java / org / opendaylight / openflowjava / nx / NiciraExtensionCodecRegistratorImplTest.java
1 /**
2  * Copyright (c) 2016 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.openflowjava.nx;
10
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13 import static org.mockito.ArgumentMatchers.any;
14 import static org.mockito.ArgumentMatchers.eq;
15
16 import java.util.LinkedList;
17 import java.util.List;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.junit.runner.RunWith;
21 import org.mockito.Mock;
22 import org.mockito.Mockito;
23 import org.mockito.runners.MockitoJUnitRunner;
24 import org.opendaylight.openflowjava.nx.api.NiciraActionDeserializerKey;
25 import org.opendaylight.openflowjava.nx.api.NiciraActionSerializerKey;
26 import org.opendaylight.openflowjava.nx.api.NiciraUtil;
27 import org.opendaylight.openflowjava.nx.codec.action.ActionDeserializer;
28 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
29 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
30 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
31 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
32 import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
33 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
34 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
35 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
36 import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm0Class;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
42
43 @RunWith(MockitoJUnitRunner.class)
44 public class NiciraExtensionCodecRegistratorImplTest {
45
46
47     NiciraExtensionCodecRegistratorImpl niciraExtensionCodecRegistrator;
48     List<SwitchConnectionProvider> providers = new LinkedList<>();
49     NiciraActionSerializerKey actionSerializerKey;
50     NiciraActionDeserializerKey actionDeserializerKey;
51     MatchEntrySerializerKey matchSerializerKey;
52     MatchEntryDeserializerKey matchDeserializerKey;
53
54     @Mock
55     OFSerializer<Action> actionSerializer;
56     @Mock(extraInterfaces = DeserializerRegistryInjector.class)
57     OFDeserializer<Action> actionDeserializer;
58     @Mock
59     OFSerializer<MatchEntry> matchSerializer;
60     @Mock
61     OFDeserializer<MatchEntry> matchDeserializer;
62
63
64     public static final short VERSION = 4;
65     public static final byte VERSION1 = EncodeConstants.OF10_VERSION_ID;
66     public static final byte VERSION2 = EncodeConstants.OF13_VERSION_ID;
67
68
69
70     @Mock
71     SwitchConnectionProvider provider;
72
73     @Before
74     public void setUp() {
75         providers.add(provider);
76         actionSerializerKey = new NiciraActionSerializerKey(VERSION, PopVlanCase.class);
77         //subtype = 10
78         actionDeserializerKey = new NiciraActionDeserializerKey(VERSION, 10);
79         matchSerializerKey = new MatchEntrySerializerKey(VERSION, Nxm0Class.class, MatchField.class);
80         //OxmClass 1, OxmField 2
81         matchDeserializerKey = new MatchEntryDeserializerKey(VERSION, 1, 2);
82
83         niciraExtensionCodecRegistrator = new NiciraExtensionCodecRegistratorImpl(providers);
84     }
85
86     @Test
87     public void niciraExtensionsCodecRegistratorImplTest() {
88         Mockito.verify(provider).registerActionDeserializer(eq(ActionDeserializer.OF10_DESERIALIZER_KEY),
89                 any(ActionDeserializer.class));
90         Mockito.verify(provider).registerActionDeserializer(eq(ActionDeserializer.OF13_DESERIALIZER_KEY),
91                 any(ActionDeserializer.class));
92     }
93
94     @Test
95     public void registerActionSerializerTest() {
96         niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
97         ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
98         Mockito.verify(provider).registerActionSerializer(eq(key1), any(OFGeneralSerializer.class));
99     }
100
101     @Test
102     public void unregisterActionSerializerTest() {
103         niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
104         ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
105         niciraExtensionCodecRegistrator.unregisterActionSerializer(actionSerializerKey);
106         Mockito.verify(provider).unregisterSerializer(eq(key1));
107     }
108
109     @Test
110     public void registerActionDeserializerTest() {
111         assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
112         niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
113         assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
114         Mockito.verify((DeserializerRegistryInjector) actionDeserializer)
115                 .injectDeserializerRegistry(any());
116     }
117
118     @Test
119     public void unregisterActionDeserializerTest() {
120         niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
121         assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
122         niciraExtensionCodecRegistrator.unregisterActionDeserializer(actionDeserializerKey);
123         assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
124     }
125
126     @Test
127     public void registerMatchEntrySerializerTest() {
128         niciraExtensionCodecRegistrator.registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
129         Mockito.verify(provider).registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
130     }
131
132     @Test
133     public void unregisterMatchEntrySerializerTest() {
134         niciraExtensionCodecRegistrator.unregisterMatchEntrySerializer(matchSerializerKey);
135         Mockito.verify(provider).unregisterSerializer(matchSerializerKey);
136     }
137
138     @Test
139     public void registerMatchEntryDeserializerTest() {
140         niciraExtensionCodecRegistrator.registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
141         Mockito.verify(provider).registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
142     }
143
144     @Test
145     public void unregisterMatchEntryDeserializerTest() {
146         niciraExtensionCodecRegistrator.unregisterMatchEntryDeserializer(matchDeserializerKey);
147         Mockito.verify(provider).unregisterDeserializer(matchDeserializerKey);
148     }
149 }