+ slaveRef.tell(new RegisterMountPoint(ImmutableList.of(SOURCE_IDENTIFIER1, SOURCE_IDENTIFIER2),
+ masterRef), testKit.getRef());
+
+ testKit.expectMsgClass(Success.class);
+
+ verify(mockRegistry, timeout(5000)).registerSchemaSource(any(), withSourceId(SOURCE_IDENTIFIER1));
+ verify(mockRegistry, timeout(5000)).registerSchemaSource(any(), withSourceId(SOURCE_IDENTIFIER2));
+
+ verify(mockMountPointBuilder, after(1000).never()).register();
+ verify(mockSchemaSourceReg1, timeout(1000)).close();
+ verify(mockSchemaSourceReg2, timeout(1000)).close();
+
+ // Test recoverable AskTimeoutException - schema context resolution should be retried.
+
+ reset(mockSchemaSourceReg1, mockSchemaSourceReg2);
+
+ doReturn(Futures.immediateFailedFuture(new SchemaResolutionException("mock",
+ new AskTimeoutException("timeout"))))
+ .doReturn(Futures.immediateFuture(mockSchemaContext))
+ .when(mockSchemaContextFactory).createSchemaContext(any());
+
+ slaveRef.tell(new RegisterMountPoint(ImmutableList.of(SOURCE_IDENTIFIER1, SOURCE_IDENTIFIER2),
+ masterRef), testKit.getRef());
+
+ testKit.expectMsgClass(Success.class);
+
+ verify(mockMountPointBuilder, timeout(5000)).register();
+ verifyNoMoreInteractions(mockSchemaSourceReg1, mockSchemaSourceReg2);
+
+ // Test AskTimeoutException with an interleaved successful registration. The first schema context resolution
+ // attempt should not be retried.
+
+ reset(mockSchemaSourceReg1, mockSchemaSourceReg2, mockSchemaRepository, mockSchemaContextFactory);
+ resetMountPointMocks();
+
+ final SchemaContextFactory mockSchemaContextFactorySuccess = mock(SchemaContextFactory.class);
+ doReturn(Futures.immediateFuture(mockSchemaContext))
+ .when(mockSchemaContextFactorySuccess).createSchemaContext(any());
+
+ doAnswer(unused -> {
+ SettableFuture<SchemaContext> future = SettableFuture.create();
+ new Thread(() -> {
+ doReturn(mockSchemaContextFactorySuccess).when(mockSchemaRepository)
+ .createSchemaContextFactory(any(SchemaSourceFilter.class));
+
+ slaveRef.tell(new RegisterMountPoint(ImmutableList.of(SOURCE_IDENTIFIER1, SOURCE_IDENTIFIER2),
+ masterRef), testKit.getRef());
+
+ future.setException(new SchemaResolutionException("mock", new AskTimeoutException("timeout")));
+ }).start();
+ return future;
+ }).when(mockSchemaContextFactory).createSchemaContext(any());
+
+ doReturn(mockSchemaContextFactory).when(mockSchemaRepository)
+ .createSchemaContextFactory(any(SchemaSourceFilter.class));
+
+ slaveRef.tell(new RegisterMountPoint(ImmutableList.of(SOURCE_IDENTIFIER1, SOURCE_IDENTIFIER2),
+ masterRef), testKit.getRef());
+
+ verify(mockMountPointBuilder, timeout(5000)).register();
+ verify(mockSchemaRepository, times(2)).createSchemaContextFactory(any(SchemaSourceFilter.class));
+ }
+
+ @Test
+ public void testYangTextSchemaSourceRequest() throws Exception {
+ final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("testID");
+
+ final ProxyYangTextSourceProvider proxyYangProvider =
+ new ProxyYangTextSourceProvider(masterRef, system.dispatcher(), TIMEOUT);