diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2017-02-10 08:55:55 +0100 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2017-02-10 08:53:27 +0000 |
commit | de55d1e7c1fa5517ee6eabcd3fa23e5b5136d64b (patch) | |
tree | 057cd5f38c18da91852c2d79168ae41c0c6bfed6 /infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java | |
parent | 8450b69800c827ba221351eb0c374fcbd9146593 (diff) |
HONEYCOMB-334 - List entry injection for yang data
Major changes
- mechanism to inject list entries by key
- provided processor registry to hide explicit implementations
Minor changes
- general refactoring
Test cases
- list in root of model
- list under container
- list under nested container
- list in augmentation
Change-Id: I9abe1ce5f9176c132ad88627b135516574e40e06
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java')
-rw-r--r-- | infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java | 47 |
1 files changed, 12 insertions, 35 deletions
diff --git a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java index 906a5fc87..0f8b1b9af 100644 --- a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java +++ b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/HoneycombTestRunner.java @@ -17,29 +17,23 @@ package io.fd.honeycomb.test.tools; import io.fd.honeycomb.test.tools.annotations.InjectablesProcessor; -import io.fd.honeycomb.test.tools.factories.ChildNodeDataFactory; -import io.fd.honeycomb.test.tools.factories.RootNodeDataFactory; -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Parameter; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import javax.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; import org.junit.runners.BlockJUnit4ClassRunner; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.junit.runners.model.Statement; import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.annotation.Annotation; +import java.lang.reflect.Parameter; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangContextProducer, InjectablesProcessor { private static final Logger LOG = LoggerFactory.getLogger(HoneycombTestRunner.class); @@ -48,8 +42,7 @@ public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangC private BindingToNormalizedNodeCodec serializer; private AbstractModuleStringInstanceIdentifierCodec iidParser; - private ChildNodeDataFactory childNodeDataFactory; - private RootNodeDataFactory rootNodeDataFactory; + private YangDataProcessorRegistry processorRegistry; public HoneycombTestRunner(final Class<?> klass) throws InitializationError { super(klass); @@ -64,12 +57,11 @@ public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangC final ModuleInfoBackedContext ctx = getCheckedModuleInfoContext(test); schemaContext = ctx.getSchemaContext(); // Create serializer from it in order to later transform NormalizedNodes into BA - serializer = createSerializer(ctx, schemaContext); + serializer = createSerializer(ctx); // Create InstanceIdentifier Codec in order to later transform string represented IID into YangInstanceIdentifier iidParser = getIIDCodec(ctx); - childNodeDataFactory = new ChildNodeDataFactory(schemaContext, serializer, iidParser); - rootNodeDataFactory = new RootNodeDataFactory(schemaContext, serializer, iidParser); + processorRegistry = YangDataProcessorRegistry.create(schemaContext, serializer); injectFields(test); return test; @@ -83,7 +75,7 @@ public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangC /** * Allows method parameters injection - * */ + */ @Override protected Statement methodInvoker(final FrameworkMethod method, final Object test) { return new InjectableTestMethodInvoker(method, test, Arrays.stream(method.getMethod().getParameters()) @@ -94,7 +86,7 @@ public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangC private Object injectValueOrNull(final Parameter parameter) { return isInjectable(parameter) - ? getData(resourcePath(parameter), instanceIdentifier(parameter).orNull(), parameter.getType()) + ? processorRegistry.getNodeData(instanceIdentifier(iidParser, parameter), resourcePath(parameter)) : null; } @@ -107,22 +99,7 @@ public class HoneycombTestRunner extends BlockJUnit4ClassRunner implements YangC injectableFields(testInstance.getClass()).forEach(field -> { LOG.debug("Processing field {}", field); injectField(field, testInstance, - getData(resourcePath(field), instanceIdentifier(field).orNull(), field.getType())); + processorRegistry.getNodeData(instanceIdentifier(iidParser, field), resourcePath(field))); }); } - - private DataObject getData(final String resourcePath, @Nullable final String identifier, - final Class<?> injectedType) { - try { - if (StringUtils.isNotEmpty(identifier)) { - LOG.debug("Processing {} as child node {}", injectedType, identifier); - return childNodeDataFactory.getChildNodeData(identifier, resourcePath); - } else { - LOG.debug("Processing {} as root node", injectedType); - return rootNodeDataFactory.getRootNodeData(getRootInstanceIdentifier(injectedType), resourcePath); - } - } catch (DeserializationException | IOException e) { - throw new IllegalStateException(e); - } - } } |