use of org.opendaylight.mdsal.dom.api.DOMRpcIdentifier in project controller by opendaylight.
the class RoutedGetConstantService method registerNew.
public static DOMRpcImplementationRegistration<RoutedGetConstantService> registerNew(final BindingNormalizedNodeSerializer codec, final DOMRpcProviderService rpcProviderService, final String constant, final InstanceIdentifier<?> context) {
LOG.debug("Registering get-contexted-constant on context: {}, with value: {}", context, constant);
final YangInstanceIdentifier yid = codec.toYangInstanceIdentifier(context);
final DOMRpcIdentifier id = DOMRpcIdentifier.create(GET_CONTEXTED_CONSTANT, yid);
return rpcProviderService.registerRpcImplementation(new RoutedGetConstantService(constant), id);
}
use of org.opendaylight.mdsal.dom.api.DOMRpcIdentifier in project controller by opendaylight.
the class RpcRegistryTest method testRpcAddedOnMultiNodes.
/**
* Three node cluster. Register rpc on 2 nodes. Ensure 3rd gets updated.
*/
@Test
public void testRpcAddedOnMultiNodes() {
final TestKit testKit = new TestKit(node3);
// Add rpc on node 1
List<DOMRpcIdentifier> addedRouteIds1 = createRouteIds();
registry1.tell(new AddOrUpdateRoutes(addedRouteIds1), ActorRef.noSender());
final UpdateRemoteEndpoints req1 = registrar3.expectMsgClass(Duration.ofSeconds(3), UpdateRemoteEndpoints.class);
// Add rpc on node 2
List<DOMRpcIdentifier> addedRouteIds2 = createRouteIds();
registry2.tell(new AddOrUpdateRoutes(addedRouteIds2), ActorRef.noSender());
final UpdateRemoteEndpoints req2 = registrar3.expectMsgClass(Duration.ofSeconds(3), UpdateRemoteEndpoints.class);
Address node2Address = node2.provider().getDefaultAddress();
Address node1Address = node1.provider().getDefaultAddress();
Map<Address, Bucket<RoutingTable>> buckets = retrieveBuckets(registry3, testKit, node1Address, node2Address);
verifyBucket(buckets.get(node1Address), addedRouteIds1);
verifyBucket(buckets.get(node2Address), addedRouteIds2);
Map<Address, Long> versions = retrieveVersions(registry3, testKit);
assertEquals("Version for bucket " + node1Address, (Long) buckets.get(node1Address).getVersion(), versions.get(node1Address));
assertEquals("Version for bucket " + node2Address, (Long) buckets.get(node2Address).getVersion(), versions.get(node2Address));
assertEndpoints(req1, node1Address, invoker1);
assertEndpoints(req2, node2Address, invoker2);
}
use of org.opendaylight.mdsal.dom.api.DOMRpcIdentifier in project controller by opendaylight.
the class RpcRegistryTest method createRouteIds.
private List<DOMRpcIdentifier> createRouteIds() {
QName type = QName.create("/mockrpc", "mockrpc" + routeIdCounter++);
List<DOMRpcIdentifier> routeIds = new ArrayList<>(1);
routeIds.add(DOMRpcIdentifier.create(type));
return routeIds;
}
use of org.opendaylight.mdsal.dom.api.DOMRpcIdentifier in project controller by opendaylight.
the class RpcRegistryTest method testRpcAddRemoveInCluster.
/**
* Three node cluster. 1. Register rpc on 1 node, ensure 2nd node gets updated 2. Remove rpc on
* 1 node, ensure 2nd node gets updated
*/
@Test
public void testRpcAddRemoveInCluster() {
LOG.info("testRpcAddRemoveInCluster starting");
List<DOMRpcIdentifier> addedRouteIds = createRouteIds();
Address node1Address = node1.provider().getDefaultAddress();
// Add rpc on node 1
registry1.tell(new AddOrUpdateRoutes(addedRouteIds), ActorRef.noSender());
// Bucket store on node2 should get a message to update its local copy of remote buckets
final TestKit testKit = new TestKit(node2);
Map<Address, Bucket<RoutingTable>> buckets = retrieveBuckets(registry2, testKit, node1Address);
verifyBucket(buckets.get(node1Address), addedRouteIds);
// Now remove
registry1.tell(new RemoveRoutes(addedRouteIds), ActorRef.noSender());
// Bucket store on node2 should get a message to update its local copy of remote buckets.
// Wait for the bucket for node1 to be empty.
verifyEmptyBucket(testKit, registry2, node1Address);
LOG.info("testRpcAddRemoveInCluster ending");
}
use of org.opendaylight.mdsal.dom.api.DOMRpcIdentifier in project controller by opendaylight.
the class RemoteRpcRegistryMXBeanImplTest method setUp.
@Before
public void setUp() {
system = ActorSystem.create("test", ConfigFactory.load().getConfig("unit-test"));
final DOMRpcIdentifier emptyRpcIdentifier = DOMRpcIdentifier.create(REMOTE_QNAME, YangInstanceIdentifier.empty());
final DOMRpcIdentifier localRpcIdentifier = DOMRpcIdentifier.create(LOCAL_QNAME, YangInstanceIdentifier.of(LOCAL_QNAME));
buckets = Lists.newArrayList(emptyRpcIdentifier, localRpcIdentifier);
final RemoteOpsProviderConfig config = new RemoteOpsProviderConfig.Builder("system").build();
final TestKit invoker = new TestKit(system);
final TestKit registrar = new TestKit(system);
final TestKit supervisor = new TestKit(system);
final Props props = RpcRegistry.props(config, invoker.getRef(), registrar.getRef()).withDispatcher(Dispatchers.DefaultDispatcherId());
testActor = new TestActorRef<>(system, props, supervisor.getRef(), "testActor");
final Timeout timeout = Timeout.apply(10, TimeUnit.SECONDS);
mxBean = new RemoteRpcRegistryMXBeanImpl(new BucketStoreAccess(testActor, system.dispatcher(), timeout), timeout);
}
Aggregations