* 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.cluster.schema.provider.impl;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
import akka.dispatch.ExecutionContexts;
import akka.dispatch.Futures;
-import com.google.common.base.Optional;
-import com.google.common.io.ByteSource;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.io.CharSource;
+import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.ExecutionException;
import org.junit.Before;
import org.junit.Test;
-import org.mockito.Mockito;
import org.opendaylight.controller.cluster.schema.provider.RemoteYangTextSourceProvider;
-import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
public class RemoteSchemaProviderTest {
-
- private static final SourceIdentifier ID = RevisionSourceIdentifier.create("Test", Optional.of("2015-10-30"));
+ private static final SourceIdentifier ID = new SourceIdentifier("Test", "2015-10-30");
private RemoteSchemaProvider remoteSchemaProvider;
private RemoteYangTextSourceProvider mockedRemoteSchemaRepository;
@Before
public void setUp() {
- mockedRemoteSchemaRepository = Mockito.mock(RemoteYangTextSourceProvider.class);
- ExecutionContexts.fromExecutorService(MoreExecutors.newDirectExecutorService());
+ mockedRemoteSchemaRepository = mock(RemoteYangTextSourceProvider.class);
remoteSchemaProvider = new RemoteSchemaProvider(mockedRemoteSchemaRepository,
- ExecutionContexts.fromExecutorService(MoreExecutors.newDirectExecutorService()));
+ ExecutionContexts.fromExecutor(MoreExecutors.directExecutor()));
}
@Test
- public void getExistingYangTextSchemaSource() throws IOException, SchemaSourceException {
- String source = "Test";
- YangTextSchemaSource schemaSource = YangTextSchemaSource.delegateForByteSource(
- ID, ByteSource.wrap(source.getBytes()));
- YangTextSchemaSourceSerializationProxy sourceProxy = new YangTextSchemaSourceSerializationProxy(schemaSource);
- Mockito.when(mockedRemoteSchemaRepository.getYangTextSchemaSource(ID))
- .thenReturn(Futures.successful(sourceProxy));
+ public void getExistingYangTextSchemaSource() throws IOException, InterruptedException, ExecutionException {
+ YangTextSchemaSource schemaSource = YangTextSchemaSource.delegateForByteSource(ID,
+ CharSource.wrap("Test").asByteSource(StandardCharsets.UTF_8));
+ doReturn(Futures.successful(new YangTextSchemaSourceSerializationProxy(schemaSource)))
+ .when(mockedRemoteSchemaRepository).getYangTextSchemaSource(ID);
- YangTextSchemaSource providedSource = remoteSchemaProvider.getSource(ID).checkedGet();
- assertEquals(providedSource.getIdentifier(), ID);
- assertArrayEquals(providedSource.read(), schemaSource.read());
+ YangTextSchemaSource providedSource = remoteSchemaProvider.getSource(ID).get();
+ assertEquals(ID, providedSource.getIdentifier());
+ assertArrayEquals(schemaSource.read(), providedSource.read());
}
- @Test(expected = SchemaSourceException.class)
- public void getNonExistingSchemaSource() throws Exception {
- Futures.failed(new Exception("halo"));
-
- Mockito.when(mockedRemoteSchemaRepository.getYangTextSchemaSource(ID)).thenReturn(
- Futures.<YangTextSchemaSourceSerializationProxy>failed(
- new SchemaSourceException("Source not provided")));
+ @Test
+ public void getNonExistingSchemaSource() throws InterruptedException {
+ final var exception = new SchemaSourceException("Source not provided");
+ doReturn(Futures.failed(exception)).when(mockedRemoteSchemaRepository).getYangTextSchemaSource(ID);
- CheckedFuture<?, ?> sourceFuture = remoteSchemaProvider.getSource(ID);
+ ListenableFuture<YangTextSchemaSource> sourceFuture = remoteSchemaProvider.getSource(ID);
assertTrue(sourceFuture.isDone());
- sourceFuture.checkedGet();
+
+ final var cause = assertThrows(ExecutionException.class, sourceFuture::get).getCause();
+ assertSame(exception, cause);
}
}