/**
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowjava.nx.api.impl;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.LinkedList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.opendaylight.openflowjava.nx.api.NiciraActionDeserializerKey;
import org.opendaylight.openflowjava.nx.api.NiciraActionSerializerKey;
import org.opendaylight.openflowjava.nx.api.NiciraUtil;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm0Class;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
@RunWith(MockitoJUnitRunner.class)
public class NiciraExtensionCodecRegistratorImplTest {
NiciraExtensionCodecRegistratorImpl niciraExtensionCodecRegistrator;
List<SwitchConnectionProvider> providers = new LinkedList<>();
NiciraActionSerializerKey actionSerializerKey;
NiciraActionDeserializerKey actionDeserializerKey;
MatchEntrySerializerKey matchSerializerKey;
MatchEntryDeserializerKey matchDeserializerKey;
@Mock
OFSerializer<Action> actionSerializer;
@Mock
OFDeserializer<Action> actionDeserializer;
@Mock
OFSerializer<MatchEntry> matchSerializer;
@Mock
OFDeserializer<MatchEntry> matchDeserializer;
public static final short VERSION = 4;
public static final byte VERSION1 = EncodeConstants.OF10_VERSION_ID;
public static final byte VERSION2 = EncodeConstants.OF13_VERSION_ID;
@Mock
SwitchConnectionProvider provider;
@Before
public void setUp() {
providers.add(provider);
actionSerializerKey = new NiciraActionSerializerKey(VERSION, PopVlanCase.class);
//subtype = 10
actionDeserializerKey = new NiciraActionDeserializerKey(VERSION, 10);
matchSerializerKey = new MatchEntrySerializerKey(VERSION, Nxm0Class.class, MatchField.class);
//OxmClass 1, OxmField 2
matchDeserializerKey = new MatchEntryDeserializerKey(VERSION, 1, 2);
niciraExtensionCodecRegistrator = new NiciraExtensionCodecRegistratorImpl(providers);
}
@Test
public void niciraExtensionsCodecRegistratorImplTest() {
Mockito.verify(provider).registerActionDeserializer(Matchers.eq(ActionDeserializer.OF10_DESERIALIZER_KEY), Matchers.any(ActionDeserializer.class));
Mockito.verify(provider).registerActionDeserializer(Matchers.eq(ActionDeserializer.OF13_DESERIALIZER_KEY), Matchers.any(ActionDeserializer.class));
}
@Test
public void registerActionSerializerTest() {
niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
Mockito.verify(provider).registerActionSerializer(Matchers.eq(key1), Matchers.any(OFGeneralSerializer.class));
}
@Test
public void unregisterActionSerializerTest() {
niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
niciraExtensionCodecRegistrator.unregisterActionSerializer(actionSerializerKey);
Mockito.verify(provider).unregisterSerializer(Matchers.eq(key1));
}
@Test
public void registerActionDeserializerTest() {
assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
}
@Test
public void unregisterActionDeserializerTest() {
niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
niciraExtensionCodecRegistrator.unregisterActionDeserializer(actionDeserializerKey);
assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
}
@Test
public void registerMatchEntrySerializerTest() {
niciraExtensionCodecRegistrator.registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
Mockito.verify(provider).registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
}
@Test
public void unregisterMatchEntrySerializerTest() {
niciraExtensionCodecRegistrator.unregisterMatchEntrySerializer(matchSerializerKey);
Mockito.verify(provider).unregisterSerializer(matchSerializerKey);
}
@Test
public void registerMatchEntryDeserializerTest() {
niciraExtensionCodecRegistrator.registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
Mockito.verify(provider).registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
}
@Test
public void unregisterMatchEntryDeserializerTest() {
niciraExtensionCodecRegistrator.unregisterMatchEntryDeserializer(matchDeserializerKey);
Mockito.verify(provider).unregisterDeserializer(matchDeserializerKey);
}
}