X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Ftest%2FRuntimeCodeGeneratorTest.java;h=9ba65339710b50c5e3a1e453fa5b5ff3805484f3;hp=20181a62c8a8b38abc3add11873ed3452350cf89;hb=23054c2ec3fa8166838f9d18af452e30acefd9d5;hpb=d575edf655b58bb5aafd88c113ace7d41a813d7c diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java index 20181a62c8..9ba6533971 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/RuntimeCodeGeneratorTest.java @@ -1,21 +1,26 @@ +/* + * Copyright (c) 2014 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.controller.sal.binding.test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; import javassist.ClassPool; import org.junit.Before; import org.junit.Test; - -import static org.opendaylight.controller.sal.binding.codegen.RuntimeCodeHelper.*; - -import org.opendaylight.controller.sal.binding.api.NotificationListener; import org.opendaylight.controller.sal.binding.api.rpc.RpcRouter; import org.opendaylight.controller.sal.binding.api.rpc.RpcRoutingTable; import org.opendaylight.controller.sal.binding.codegen.impl.RuntimeCodeGenerator; @@ -23,12 +28,10 @@ import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory; import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory.NotificationInvoker; import org.opendaylight.controller.sal.binding.test.mock.BarListener; import org.opendaylight.controller.sal.binding.test.mock.BarUpdate; -import org.opendaylight.controller.sal.binding.test.mock.CompositeListener; import org.opendaylight.controller.sal.binding.test.mock.FlowDelete; import org.opendaylight.controller.sal.binding.test.mock.FooListener; import org.opendaylight.controller.sal.binding.test.mock.FooService; import org.opendaylight.controller.sal.binding.test.mock.FooUpdate; -import org.opendaylight.controller.sal.binding.test.mock.InheritedContextInput; import org.opendaylight.controller.sal.binding.test.mock.ReferencableObject; import org.opendaylight.controller.sal.binding.test.mock.ReferencableObjectKey; import org.opendaylight.controller.sal.binding.test.mock.SimpleInput; @@ -37,10 +40,6 @@ import org.opendaylight.yangtools.yang.binding.BaseIdentity; import org.opendaylight.yangtools.yang.binding.DataContainer; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; - -import static org.mockito.Mockito.*; public class RuntimeCodeGeneratorTest { @@ -77,7 +76,7 @@ public class RuntimeCodeGeneratorTest { NotificationInvoker invokerFoo = invokerFactory.invokerFor(fooListener); - + assertSame(fooListener,invokerFoo.getDelegate()); assertNotNull(invokerFoo.getSupportedNotifications()); assertEquals(1, invokerFoo.getSupportedNotifications().size()); @@ -114,7 +113,7 @@ public class RuntimeCodeGeneratorTest { } - private void verifyRouting(RpcRouter product) { + private void verifyRouting(final RpcRouter product) { assertNotNull("Routing table should be initialized", product.getRoutingTable(BaseIdentity.class)); RpcRoutingTable routingTable = product.getRoutingTable(BaseIdentity.class); @@ -156,9 +155,34 @@ public class RuntimeCodeGeneratorTest { // We should have call to instance 1 verify(service[1]).simple(instance_1_input[0]); + + /* + * Generated RPC service should throw illegalArgumentException + * with message if rpc input is null. + */ + try { + product.getInvocationProxy().simple(null); + fail("Generated RPC router should throw IllegalArgumentException on null input"); + } catch (IllegalArgumentException e){ + assertNotNull(e.getMessage()); + } + + + /* + * Generated RPC service should throw illegalArgumentException + * with message if rpc route is null. + */ + try { + SimpleInput withoutValue = new SimpleInputImpl(null); + product.getInvocationProxy().simple(withoutValue); + fail("Generated RPC router should throw IllegalArgumentException on null value for route"); + } catch (IllegalArgumentException e){ + assertNotNull(e.getMessage()); + } + } - private InstanceIdentifier[][] identifiers(int serviceSize, int instancesPerService) { + private InstanceIdentifier[][] identifiers(final int serviceSize, final int instancesPerService) { InstanceIdentifier[][] ret = new InstanceIdentifier[serviceSize][]; int service = 0; for (int i = 0; i < serviceSize; i++) { @@ -174,23 +198,19 @@ public class RuntimeCodeGeneratorTest { return ret; } - private InstanceIdentifier referencableIdentifier(int i) { - ReferencableObjectKey key = new ReferencableObjectKey(i); - IdentifiableItem pathArg = new IdentifiableItem<>( - ReferencableObject.class, key); - return new InstanceIdentifier(Arrays. asList(pathArg), - ReferencableObject.class); + private InstanceIdentifier referencableIdentifier(final int i) { + return InstanceIdentifier.builder(ReferencableObject.class, new ReferencableObjectKey(i)).build(); } private static class SimpleInputImpl implements SimpleInput { private final InstanceIdentifier identifier; - public SimpleInputImpl(InstanceIdentifier _identifier) { + public SimpleInputImpl(final InstanceIdentifier _identifier) { this.identifier = _identifier; } @Override - public > E getAugmentation(Class augmentationType) { + public > E getAugmentation(final Class augmentationType) { return null; } @@ -229,7 +249,7 @@ public class RuntimeCodeGeneratorTest { List receivedFoos = new ArrayList<>(); @Override - public void onFooUpdate(FooUpdate notification) { + public void onFooUpdate(final FooUpdate notification) { receivedFoos.add(notification); } @@ -241,12 +261,12 @@ public class RuntimeCodeGeneratorTest { List receivedDeletes = new ArrayList<>(); @Override - public void onBarUpdate(BarUpdate notification) { + public void onBarUpdate(final BarUpdate notification) { receivedBars.add(notification); } @Override - public void onFlowDelete(FlowDelete notification) { + public void onFlowDelete(final FlowDelete notification) { receivedDeletes.add(notification); }