<type>pom</type>
<scope>import</scope>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock</artifactId>
- <version>2.12.0</version>
- <exclusions>
- <exclusion>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>annotations</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <version>2.12.0</version>
- </dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>controller-artifacts</artifactId>
<artifactId>mappingservice.config</artifactId>
<version>${lispflowmapping.version}</version>
</dependency>
- <dependency>
- <groupId>org.opendaylight.lispflowmapping</groupId>
- <artifactId>common.unittest.tools</artifactId>
- <version>${lispflowmapping.version}</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.opendaylight.lispflowmapping</groupId>
<artifactId>ui-lispflowmapping</artifactId>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.opendaylight.lispflowmapping</groupId>
- <artifactId>lispflowmapping-commons</artifactId>
- <version>1.18.0-SNAPSHOT</version>
- <relativePath>../parent</relativePath>
- </parent>
-
- <artifactId>common.unittest.tools</artifactId>
- <!-- <name> formatting is used by autorelease to parse and notify projects on
- build failure. Please do not modify this unless you have a good reason. -->
- <name>ODL :: lispflowmapping :: ${project.artifactId}</name>
-
- <properties>
- <odlparent.checkstyle.enforce>false</odlparent.checkstyle.enforce>
- <odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <version>1.3</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- </dependencies>
-</project>
+++ /dev/null
-/*
- * Copyright (c) 2014 Contextream, 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.lispflowmapping.tools.junit;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.api.Action;
-import org.jmock.api.Invocation;
-import org.jmock.internal.InvocationExpectationBuilder;
-import org.jmock.internal.ReturnDefaultValueAction;
-import org.jmock.lib.concurrent.Synchroniser;
-import org.jmock.lib.legacy.ClassImposteriser;
-import org.jmock.syntax.ReceiverClause;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class BaseExpectations extends Expectations {
- protected Mockery context;
- protected boolean showAllExpectations;
- private final Synchroniser synchroniser = new Synchroniser();
- protected static final Logger LOG = LoggerFactory.getLogger(BaseExpectations.class);
-
- @Before
- public void before() throws Exception {
- context = new Mockery() {
- {
- setImposteriser(ClassImposteriser.INSTANCE);
- // otherwise we get errors on the finalizer thread:
- setThreadingPolicy(synchroniser);
- }
- };
- defaultAction = new ReturnDefaultValueAction(ClassImposteriser.INSTANCE);
- }
-
- @After
- public void after() throws Exception {
- context.assertIsSatisfied();
- }
-
- // New suger syntax
-
- protected final void ret(Object result) {
- will(returnValue(result));
- }
-
- protected final void rethrow(Throwable throwable) {
- will(throwException(throwable));
- }
-
- protected final void retField(Object container, String fieldName) throws Exception {
- will(new ReturnField(container, fieldName));
- }
-
- protected final void rets(Object... results) {
- will(returnValues(results));
- }
-
- protected final <T> T wany(Class<T> type) {
- return with(any(type));
- }
-
- protected final int wanyint() {
- return with(any(int.class));
- }
-
- protected final long wanylong() {
- return with(any(long.class));
- }
-
- protected final boolean wanybool() {
- return with(any(boolean.class));
- }
-
- protected final <T> T wsame(T instance) {
- return with(same(instance));
- }
-
- protected final <T> T weq(T instance) {
- return with(equal(instance));
- }
-
- protected final short weq(short instance) {
- return with(equal(instance));
- }
-
- protected final int weq(int instance) {
- return with(equal(instance));
- }
-
- protected final long weq(long instance) {
- return with(equal(instance));
- }
-
- protected final boolean weq(boolean instance) {
- return with(equal(instance));
- }
-
- public static Action returnValues(Object... result) {
- return new ActionSequenceValue(result);
- }
-
- protected void retMethod(final String methodName) {
- will(new MethodAction(this, methodName));
- }
-
- private static class MethodAction implements Action {
- private Object testInstance;
- private String methodName;
- private Method method;
-
- MethodAction(Object testInstance, String methodName) {
- this.testInstance = testInstance;
- this.methodName = methodName;
- method = findMethod(testInstance.getClass());
- Assert.assertNotNull("Cannot locate '" + methodName + "'", method);
- }
-
- private Method findMethod(Class<? extends Object> clazz) {
- if (Object.class.equals(clazz)) {
- return null;
- }
- try {
- return clazz.getMethod(methodName, Invocation.class);
- } catch (SecurityException e) {
- LOG.debug("Catched SecurityException", e);
- } catch (NoSuchMethodException e) {
- LOG.debug("Catched NoSuchMethodException", e);
- }
-
- return findMethod(clazz.getSuperclass());
- }
-
- public void describeTo(Description arg0) {
- arg0.appendText("running " + methodName);
- }
-
- public Object invoke(Invocation invocation) throws Throwable {
- Exception e = null;
- try {
- return method.invoke(testInstance, invocation);
- } catch (SecurityException se) {
- e = se;
- } catch (IllegalAccessException iae) {
- e = iae;
- } catch (InvocationTargetException ite) {
- throw ite.getTargetException();
- }
- Assert.fail("Got " + e.getMessage() + " while trying to execute '" + methodName + "'");
- return null;
- }
-
- }
-
- private static class ActionSequenceValue implements Action {
- private final Object[] values;
- private int i = 0;
-
- ActionSequenceValue(Object... values) {
- this.values = values;
- }
-
- public Object invoke(Invocation invocation) throws Throwable {
- if (i < values.length) {
- return values[i++];
- }
- throw new RuntimeException("no morCxtrmExpectationse actions available: " + invocation);
- }
-
- public void describeTo(Description description) {
- description.appendText(", and then ").appendText(Arrays.toString(values));
- }
- }
-
- protected static final class ReturnField implements Action {
- private final Object container;
- private final Field field;
-
- public ReturnField(Object container, String fieldName) throws Exception {
- this.container = container;
- field = container.getClass().getDeclaredField(fieldName);
- field.setAccessible(true);
- }
-
- public void describeTo(Description description) {
- description.appendText("return " + container.getClass().getName() + "." + field.getName());
- }
-
- public Object invoke(Invocation invocation) throws Throwable {
- return field.get(container);
- }
- }
-
- public static class ValueSaverAction<T> extends BaseMatcher<T> implements Action {
- private final String logMatch;
- private final boolean logInvocation;
- public T lastValue;
- public final List<T> values = new ArrayList<T>();
-
- public ValueSaverAction() {
- this(null, false);
- }
-
- public ValueSaverAction(String logMatch, boolean logInvocation) {
- this.logMatch = logMatch;
- this.logInvocation = logInvocation;
- }
-
- @SuppressWarnings("unchecked")
- public final boolean matches(Object arg) {
- T value = (T) arg;
- if (!validate(value)) {
- return false;
- }
- lastValue = transformOnMatch(value);
- values.add(lastValue);
- boolean match = match(lastValue);
- if (match && (logMatch != null)) {
- LOG.trace("Match: " + logMatch + " " + value);
- }
- return match;
- }
-
- protected T onMatch(T value) {
- return value;
- }
-
- protected boolean match(T lastValue2) {
- return true;
- }
-
- protected boolean validate(T value) {
- return true;
- }
-
- protected T transformOnMatch(T value) {
- return value;
- }
-
- public void describeTo(Description arg0) {
- }
-
- public Object invoke(Invocation invocation) throws Throwable {
- if (logInvocation) {
- LOG.trace("Invoke: returning " + lastValue);
- }
- return lastValue;
- }
-
- @Override
- public String toString() {
- return "ValueSavers: " + values.toString();
- }
- }
-
- @SafeVarargs
- protected static final <T> Matcher<T[]> contains(final T... expected) {
- return new BaseMatcher<T[]>() {
- @SuppressWarnings("unchecked")
- public boolean matches(Object actual) {
- T[] arr = (T[]) actual;
- if (arr.length != expected.length) {
- return false;
- }
- for (T expectedInstance : expected) {
- boolean found = false;
- for (int j = 0; (j < arr.length) && !found; j++) {
- found = (arr[j] == expectedInstance);
- }
- if (!found) {
- return false;
- }
- }
- return true;
- }
-
- public void describeTo(Description arg0) {
- }
- };
- }
-
- @SafeVarargs
- protected static final <T> Matcher<T[]> sameArbitraryArray(final T... expectedArr) {
- return new TypeSafeMatcher<T[]>() {
- @Override
- public boolean matchesSafely(T[] actualArr) {
- Set<T> expected = new HashSet<T>();
- for (T val : expectedArr) {
- expected.add(val);
- }
- Set<T> actual = new HashSet<T>();
- actual.addAll(Arrays.asList(actualArr));
- return actual.equals(expected);
- }
-
- public void describeTo(Description description) {
- description.appendText("Same arbitrary array as " + Arrays.toString(expectedArr));
- }
- };
- }
-
- @SafeVarargs
- protected static final <T> Matcher<T[]> doseNotContain(final T... forbiddenValues) {
- return new TypeSafeMatcher<T[]>() {
- @Override
- public boolean matchesSafely(T[] arr) {
- for (T forbiddenInstance : forbiddenValues) {
- for (T element : arr) {
- if (element == forbiddenInstance) {
- return false;
- }
- }
- }
- return true;
- }
-
- public void describeTo(Description description) {
- }
- };
- }
-
- public final class StringArrayMatcher extends BaseMatcher<String[]> {
- private final Object[] expected;
-
- /**
- * @param expected
- * null are considered "any"
- */
- StringArrayMatcher(Object... expected) {
- this.expected = expected;
- }
-
- public boolean matches(Object item) {
- if (!(item instanceof String[])) {
- return false;
- }
- String[] actual = (String[]) item;
- if (expected.length != actual.length) {
- return false;
- }
- for (int i = 0; i < expected.length; i++) {
- if ((expected[i] != null) && !expected[i].toString().equals(actual[i])) {
- return false;
- }
- }
- return true;
- }
-
- public void describeTo(Description description) {
- description.appendText("String" + Arrays.toString(expected));
- }
- }
-
- /**
- * @param expected
- * null are considered "any"
- */
- public final String[] wStrArr(Object... expected) {
- return with(new StringArrayMatcher(expected));
- }
-
- // ////////////////////////////////////////////////////////////
- // Make expectations work in our new ConteXtream better way //
- // ////////////////////////////////////////////////////////////
- private ReturnDefaultValueAction defaultAction;
-
- protected InvocationExpectationBuilder getCurrentBuilder() {
- try {
- return currentBuilder();
- } catch (IllegalStateException e) {
- LOG.debug("Catched IllegalStateException", e);
- return null;
- }
- }
-
- private void addCurrentExpectation() {
- context.addExpectation(currentBuilder().toExpectation(defaultAction));
- }
-
- @Override
- public ReceiverClause exactly(int count) {
- ReceiverClause ret = super.exactly(count);
- addCurrentExpectation();
- return ret;
- }
-
- @Override
- public ReceiverClause atLeast(int count) {
- ReceiverClause ret = super.atLeast(count);
- addCurrentExpectation();
- return ret;
- }
-
- @Override
- public ReceiverClause between(int minCount, int maxCount) {
- ReceiverClause ret = super.between(minCount, maxCount);
- addCurrentExpectation();
- return ret;
- }
-
- @Override
- public ReceiverClause atMost(int count) {
- ReceiverClause ret = super.atMost(count);
- addCurrentExpectation();
- return ret;
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Contextream, 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.lispflowmapping.tools.junit;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.nio.ByteBuffer;
-
-import org.hamcrest.Description;
-import org.jmock.api.Action;
-import org.jmock.api.Invocation;
-import org.junit.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class BaseTestCase extends BaseExpectations {
- protected static final Logger LOG = LoggerFactory.getLogger(BaseTestCase.class);
-
- protected InetAddress asInet(int intValue) {
- try {
- return InetAddress.getByAddress(ByteBuffer.allocate(4).putInt(intValue).array());
- } catch (UnknownHostException e) {
- LOG.debug("Unknown host {}", ByteBuffer.allocate(4).putInt(intValue).array(), e);
- fail("");
- }
- return null;
- }
-
- public static void fail(String message) {
- Assert.fail(message);
- }
-
- public static void fail() {
- Assert.fail();
- }
-
- public static void assertNotNull(String message, Object object) {
- Assert.assertNotNull(message, object);
- }
-
- public static void assertNotNull(Object object) {
- Assert.assertNotNull(object);
- }
-
- public static void assertNull(Object message, Object object) {
- Assert.assertNull(message.toString(), object);
- }
-
- public static void assertNull(Object object) {
- Assert.assertNull("" + object, object);
- }
-
- public static void assertSame(String message, Object expected, Object actual) {
- Assert.assertSame(message, expected, actual);
- }
-
- public static void assertSame(Object expected, Object actual) {
- Assert.assertSame(expected, actual);
- }
-
- public static void assertNotSame(String message, Object unexpected, Object actual) {
- Assert.assertNotSame(message, unexpected, actual);
- }
-
- public static void assertNotSame(Object unexpected, Object actual) {
- Assert.assertNotSame(unexpected, actual);
- }
-
- protected Object inject(Object testedObject, String memberName, Object member) throws Exception {
- assertNotNull(testedObject);
- assertNotNull(memberName);
- assertNotNull(member);
-
- Field field = null;
- for (Class<?> cls = testedObject.getClass(); (cls != null) && (field == null); cls = cls.getSuperclass()) {
- field = cls.getDeclaredField(memberName);
- }
- assertNotNull("Couldn't find member '" + memberName + "' in " + testedObject.getClass().getSimpleName(), field);
- return inject(testedObject, new FieldData(field, member));
- }
-
- protected Object inject(Object testedObject, FieldData fieldData) {
- assertNotNull(fieldData.field);
- Field field = fieldData.field;
- if (fieldData.value != null) {
- try {
- field.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(testedObject, fieldData.value);
- return fieldData.value;
- } catch (Exception e) {
- LOG.debug("Caught generic exception", e);
- fail(e.getMessage());
- }
- }
- return null;
- }
-
- protected Object injectStatic(Class<?> clazz, String memberName, Object member) throws Exception {
- assertNotNull(clazz);
- assertNotNull(memberName);
- assertNotNull(member);
-
- Field field = null;
- for (Class<?> cls = clazz; (cls != null) && (field == null); cls = cls.getSuperclass()) {
- field = cls.getDeclaredField(memberName);
- }
- assertNotNull("Couldn't find member '" + memberName + "' in " + clazz.getSimpleName(), field);
- return inject(null, new FieldData(field, member));
- }
-
- protected static final class FieldData {
- public final Field field;
- public Object value;
-
- public FieldData(Field field, Object value) {
- assertNotNull(field);
- this.field = field;
- this.value = value;
- }
- }
-
- protected abstract class SimpleAction implements Action {
- public void describeTo(Description arg0) {
- }
-
- public abstract Object invoke(Invocation invocation) throws Throwable;
- }
-
- protected static ByteBuffer hexToByteBuffer(String hex) {
- String[] hexBytes = hex.split(" ");
- ByteBuffer bb = ByteBuffer.allocate(hexBytes.length);
- for (String hexByte : hexBytes) {
- bb.put((byte) Integer.parseInt(hexByte, 16));
- }
- bb.clear();
- return bb;
- }
-
- protected static void assertHexEquals(short expected, short actual) {
- assertEquals(String.format("0x%04X", expected), String.format("0x%04X", actual));
- }
-
- protected static void assertHexEquals(byte expected, byte actual) {
- assertEquals(String.format("0x%02X", expected), String.format("0x%02X", actual));
- }
-}
<groupId>${project.groupId}</groupId>
<artifactId>mappingservice.config</artifactId>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>common.unittest.tools</artifactId>
- </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.lispflowmapping</groupId>
- <artifactId>common.unittest.tools</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
--- /dev/null
+/*
+ * Copyright (c) 2023 PANTHEON.tech s.r.o. 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.lispflowmapping;
+
+import static org.junit.Assert.assertEquals;
+
+import java.nio.ByteBuffer;
+
+public final class TestUtils {
+
+ private TestUtils() {
+ // utility class
+ }
+
+ public static ByteBuffer hexToByteBuffer(String hex) {
+ String[] hexBytes = hex.split(" ");
+ ByteBuffer bb = ByteBuffer.allocate(hexBytes.length);
+ for (String hexByte : hexBytes) {
+ bb.put((byte) Integer.parseInt(hexByte, 16));
+ }
+ bb.clear();
+ return bb;
+ }
+
+ public static void assertHexEquals(short expected, short actual) {
+ assertEquals(String.format("0x%04X", expected), String.format("0x%04X", actual));
+ }
+
+ public static void assertHexEquals(byte expected, byte actual) {
+ assertEquals(String.format("0x%02X", expected), String.format("0x%02X", actual));
+ }
+}
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.MapRegisterSerializer;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkeyBuilder;
import org.opendaylight.yangtools.yang.common.Uint16;
-public class LispAuthenticationTest extends BaseTestCase {
+public class LispAuthenticationTest {
private static final String PASSWORD = "password";
private static final String WRONG_PASSWORD = "wrongPassword";
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.opendaylight.lispflowmapping.TestUtils.assertHexEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapNotify;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifymessage.MapNotifyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItem;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItemBuilder;
-public class MapNotifySerializationTest extends BaseTestCase {
+public class MapNotifySerializationTest {
@Test
public void serialize__Fields() throws Exception {
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.opendaylight.lispflowmapping.TestUtils.assertHexEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.MapRegister;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItemBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregisternotification.MapRegisterBuilder;
-public class MapRegisterSerializationTest extends BaseTestCase {
+public class MapRegisterSerializationTest {
@Test
public void serialize__Fields() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import static org.opendaylight.lispflowmapping.TestUtils.assertHexEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder;
import org.opendaylight.yangtools.yang.common.Uint8;
-public class MapReplySerializationTest extends BaseTestCase {
+public class MapReplySerializationTest {
@Test
@Ignore
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.opendaylight.lispflowmapping.lisp.serializer.MapRequestSerializer;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.NoAddressAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequest.SourceEidBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder;
-public class MapRequestSerializationTest extends BaseTestCase {
+public class MapRequestSerializationTest {
@Test
public void prefix__NoPrefix() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import com.google.common.collect.ImmutableSet;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AfiListLcaf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder;
-public class AfiListSerializerTest extends BaseTestCase {
+public class AfiListSerializerTest {
@Test
public void deserialize__Simple() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.ByteUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint8;
-public class ApplicationDataSerializerTest extends BaseTestCase {
+public class ApplicationDataSerializerTest {
@Test
public void deserialize__Simple() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AfiListLcaf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
-public class DistinguishedNameSerializerTest extends BaseTestCase {
+public class DistinguishedNameSerializerTest {
@Test
public void deserialize__EmptyString() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPath;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder;
-public class ExplicitLocatorPathSerializerTest extends BaseTestCase {
+public class ExplicitLocatorPathSerializerTest {
@Test
public void deserialize__Simple() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializerContext;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4BinaryAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
-public class InstanceIdSerializerTest extends BaseTestCase {
+public class InstanceIdSerializerTest {
@Test
public void deserialize__Simple() throws Exception {
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv6BinaryAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
-public class Ipv6SerializerTest extends BaseTestCase {
+public class Ipv6SerializerTest {
@Test
public void constructor__Name() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.KeyValueAddressLcaf;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
-public class KeyValueAddressSerializerTest extends BaseTestCase {
+public class KeyValueAddressSerializerTest {
@Test
public void deserialize__Simple() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializerContext;
import org.opendaylight.lispflowmapping.lisp.util.ByteUtil;
import org.opendaylight.lispflowmapping.lisp.util.LispAddressUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathLcaf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePath;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
*
* @author Lorand Jakab
*/
-public class ServicePathTest extends BaseTestCase {
+public class ServicePathTest {
@Test
public void deserialize__Simple() throws Exception {
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.opendaylight.lispflowmapping.TestUtils.hexToByteBuffer;
import java.nio.ByteBuffer;
import org.junit.Test;
import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializerContext;
import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
import org.opendaylight.lispflowmapping.lisp.util.MaskUtil;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
-public class SourceDestKeySerializerTest extends BaseTestCase {
+public class SourceDestKeySerializerTest {
@Test
public void deserialize__Simple() throws Exception {
<type>pom</type>
<scope>import</scope>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>common.unittest.tools</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
</dependencies>
</dependencyManagement>
<properties>
<odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
- <!-- FIXME: needed to get cglib working -->
- <jacoco.version>0.8.8</jacoco.version>
</properties>
<dependencies>
<artifactId>netty-transport-native-epoll</artifactId>
<classifier>linux-x86_64</classifier>
</dependency>
- <dependency>
- <groupId>org.opendaylight.lispflowmapping</groupId>
- <artifactId>common.unittest.tools</artifactId>
- </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.opendaylight.lispflowmapping.southbound.lisp.MapRegisterCacheTestUtil.DATA1;
import static org.opendaylight.lispflowmapping.southbound.lisp.MapRegisterCacheTestUtil.DATA2;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.mockito.AdditionalMatchers;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.InOrder;
+import org.mockito.Mock;
import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer;
import org.opendaylight.lispflowmapping.lisp.serializer.MapReplySerializer;
import org.opendaylight.lispflowmapping.lisp.type.LispMessage;
import org.opendaylight.lispflowmapping.southbound.LispSouthboundPlugin;
import org.opendaylight.lispflowmapping.southbound.lisp.cache.MapRegisterCache;
import org.opendaylight.lispflowmapping.southbound.lisp.exception.LispMalformedPacketException;
-import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
-import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana.afn.safi.rev130704.AddressFamily;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4BinaryAfi;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping._record.list.MappingRecordItemBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.authkey.container.MappingAuthkeyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplymessage.MapReplyBuilder;
-import org.opendaylight.yangtools.yang.binding.Notification;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
-public class LispSouthboundHandlerTest extends BaseTestCase {
+@RunWith(MockitoJUnitRunner.class)
+public class LispSouthboundHandlerTest {
private LispSouthboundHandler testedLispService;
private byte[] mapRequestPacket;
private MapReplyBuilder mapReplyBuilder;
private MappingRecordBuilder mappingRecordBuilder;
private MapRegisterCache mapRegisterCache;
+ @Mock
private LispSouthboundPlugin mockLispSouthboundPlugin;
- private LispSouthboundPlugin contextMockLispSouthboundPlugin;
private static final long CACHE_RECORD_TIMEOUT = 90000;
private static AuthKeyDb akdb;
Mockito.when(akdl.authKeysForEidsUnchanged(Mockito.anyMap(), Mockito.anyLong())).thenReturn(true);
}
- @Override
+
@Before
public void before() throws Exception {
- super.before();
- mockLispSouthboundPlugin = Mockito.mock(LispSouthboundPlugin.class);
- contextMockLispSouthboundPlugin = context.mock(LispSouthboundPlugin.class);
Mockito.when(mockLispSouthboundPlugin.isMapRegisterCacheEnabled()).thenReturn(true);
Mockito.when(mockLispSouthboundPlugin.getMapRegisterCacheTimeout()).thenReturn(CACHE_RECORD_TIMEOUT);
mapRegisterCache = new MapRegisterCache();
Mockito.when(mockLispSouthboundPlugin.getMapRegisterCache()).thenReturn(mapRegisterCache);
- Mockito.when(mockLispSouthboundPlugin.getDataBroker()).thenReturn(Mockito.mock(DataBroker.class));
Mockito.when(mockLispSouthboundPlugin.getAkdb()).thenReturn(akdb);
Mockito.when(mockLispSouthboundPlugin.getAuthenticationKeyDataListener()).thenReturn(akdl);
ConcurrentLispSouthboundStats lispSouthboundStats = new ConcurrentLispSouthboundStats();
mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32"));
mapReplyBuilder.setNonce(0x3d8d2acd39c8d608L);
- stubHandleRequest();
-
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(28, result.length);
public void mapReply_q_VerifyBasicIPv6() throws Exception {
mappingRecordBuilder.setEid(LispAddressUtil.asIpv6PrefixEid("0:0:0:0:0:0:0:1/128"));
- stubHandleRequest();
-
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(40, result.length);
mappingRecordBuilder.getLocatorRecord().add(
new LocatorRecordBuilder().setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:2")).build());
- stubHandleRequest();
-
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(64, result.length);
@Ignore
@Test
public void mapReply__UseEncapsulatedUdpPort() throws Exception {
- stubHandleRequest();
-
assertEquals(LispMessage.PORT_NUM, handleMapRequestPacket(mapRequestPacket).recipient().getPort());
}
mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32"));
mappingRecordBuilder.getLocatorRecord().add(
new LocatorRecordBuilder().setRouted(false).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build());
- stubHandleRequest();
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(0x00, result[MapReplyIpv4SingleLocatorPos.LOCATOR_RBIT] & 0x01);
mappingRecordBuilder.setEid(LispAddressUtil.asIpv4PrefixEid("10.0.20.200/32"));
mappingRecordBuilder.getLocatorRecord().add(
new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv4Rloc("4.3.2.1")).build());
- stubHandleRequest();
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(40, result.length);
mappingRecordBuilder.getLocatorRecord().add(
new LocatorRecordBuilder().setRouted(true).setRloc(LispAddressUtil.asIpv6Rloc("0:0:0:0:0:0:0:1"))
.build());
- stubHandleRequest();
byte[] result = handleMapRequestAsByteArray(mapRequestPacket);
assertEquals(64, result.length);
Mockito.verify(mockLispSouthboundPlugin).sendNotificationIfPossible(Mockito.any(RequestMapping.class));
}
- private void stubHandleRequest() {
- try {
- allowing(contextMockLispSouthboundPlugin).sendNotificationIfPossible(wany(Notification.class));
- } catch (InterruptedException e) {
- LOG.debug("Interrupted", e);
- }
- }
-
private byte[] handleMapRequestAsByteArray(byte[] inPacket) {
handleMapRequestPacket(inPacket);
return lastMapReplyPacket().content().array();
return null;
}
- private byte[] extractWSUdpByteArray(String wiresharkHex) {
+ private static byte[] extractWSUdpByteArray(String wiresharkHex) {
final int headerLen = 42;
byte[] res = new byte[1000];
String[] split = wiresharkHex.split(" ");
return Arrays.copyOf(res, counter - headerLen);
}
+ private static ByteBuffer hexToByteBuffer(String hex) {
+ String[] hexBytes = hex.split(" ");
+ ByteBuffer bb = ByteBuffer.allocate(hexBytes.length);
+ for (String hexByte : hexBytes) {
+ bb.put((byte) Integer.parseInt(hexByte, 16));
+ }
+ bb.clear();
+ return bb;
+ }
+
+ private static void assertHexEquals(byte expected, byte actual) {
+ assertEquals(String.format("0x%02X", expected), String.format("0x%02X", actual));
+ }
+
@Test(expected = LispMalformedPacketException.class)
public void mapRequest__NoIpItrRloc() throws Exception {
mapRequestPacket = hexToByteBuffer("10 00 "
<modules>
<module>commons/parent</module>
<module>commons/build_tools</module>
- <module>commons/unittest_tools</module>
<module>artifacts</module>
<module>mappingservice</module>
<module>features</module>