+ netconfTopologyManager.close();
+
+ verifyNoMoreInteractions(mockClusterRegistration1, mockContext1, mockClusterRegistration2, mockContext2,
+ newMockContext1, newMockClusterRegistration1, clusterSingletonServiceProvider);
+ }
+
+ @Test
+ public void testClusterSingletonServiceRegistrationFailure() throws Exception {
+ final NodeId nodeId = new NodeId("node-id");
+ final InstanceIdentifier<Node> nodeInstanceId = NetconfTopologyUtils.createTopologyNodeListPath(
+ new NodeKey(nodeId), TOPOLOGY_ID);
+
+ final NetconfNode netconfNode = new NetconfNodeBuilder()
+ .setHost(new Host(new IpAddress(new Ipv4Address("127.0.0.1"))))
+ .setPort(new PortNumber(10))
+ .setActorResponseWaitTime(ACTOR_RESPONSE_WAIT_TIME).build();
+ final Node node = new NodeBuilder().setNodeId(nodeId).addAugmentation(NetconfNode.class,
+ netconfNode).build();
+
+ final DataObjectModification<Node> dataObjectModification = mock(DataObjectModification.class);
+ doReturn(WRITE).when(dataObjectModification).getModificationType();
+ doReturn(node).when(dataObjectModification).getDataAfter();
+ doReturn(new InstanceIdentifier.IdentifiableItem<>(Node.class, new NodeKey(nodeId)))
+ .when(dataObjectModification).getIdentifier();
+
+ final NetconfTopologyContext mockContext = mock(NetconfTopologyContext.class);
+ mockContextMap.put(nodeInstanceId, setup -> mockContext);
+
+ doThrow(new RuntimeException("mock error")).when(clusterSingletonServiceProvider)
+ .registerClusterSingletonService(mockContext);
+
+ netconfTopologyManager.init();
+
+ netconfTopologyManager.onDataTreeChanged(Arrays.asList(
+ new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION,
+ nodeInstanceId), dataObjectModification)));
+
+ verify(clusterSingletonServiceProvider, times(3)).registerClusterSingletonService(mockContext);
+ verify(mockContext).close();
+ verifyNoMoreInteractions(mockListenerReg);
+
+ netconfTopologyManager.close();
+ verifyNoMoreInteractions(mockContext);