From 1614002b5cb4ddafaa21f01f11c6bd0a3bebd9ff Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 10 Feb 2021 15:31:34 +0100 Subject: [PATCH] tests --- .../manager/controller/MDStoreController.java | 8 +++ .../MDStoreControllerWithMocksTest.java | 63 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 apps/dhp-mdstore-manager/src/test/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreControllerWithMocksTest.java diff --git a/apps/dhp-mdstore-manager/src/main/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreController.java b/apps/dhp-mdstore-manager/src/main/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreController.java index f3a4b74f..24368433 100644 --- a/apps/dhp-mdstore-manager/src/main/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreController.java +++ b/apps/dhp-mdstore-manager/src/main/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreController.java @@ -201,4 +201,12 @@ public class MDStoreController extends AbstractDnetController { return info; } + protected void setDatabaseUtils(final DatabaseUtils databaseUtils) { + this.databaseUtils = databaseUtils; + } + + protected void setHdfsClient(final HdfsClient hdfsClient) { + this.hdfsClient = hdfsClient; + } + } diff --git a/apps/dhp-mdstore-manager/src/test/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreControllerWithMocksTest.java b/apps/dhp-mdstore-manager/src/test/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreControllerWithMocksTest.java new file mode 100644 index 00000000..78fac3b3 --- /dev/null +++ b/apps/dhp-mdstore-manager/src/test/java/eu/dnetlib/data/mdstore/manager/controller/MDStoreControllerWithMocksTest.java @@ -0,0 +1,63 @@ +package eu.dnetlib.data.mdstore.manager.controller; + +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.Set; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import com.google.common.collect.Sets; + +import eu.dnetlib.data.mdstore.manager.exceptions.MDStoreManagerException; +import eu.dnetlib.data.mdstore.manager.utils.DatabaseUtils; +import eu.dnetlib.data.mdstore.manager.utils.HdfsClient; + +@ExtendWith(MockitoExtension.class) +class MDStoreControllerWithMocksTest { + + // Class Under Test + private MDStoreController controller; + + @Mock + private DatabaseUtils dbUtils; + + @Mock + private HdfsClient hdfsClient; + + @BeforeEach + void setUp() throws Exception { + controller = new MDStoreController(); + controller.setDatabaseUtils(dbUtils); + controller.setHdfsClient(hdfsClient); + when(hdfsClient.listHadoopDirs()).thenReturn(Sets.newHashSet("/tmp/a", "/tmp/a/1", "/tmp/b", "/tmp/b/1", "/tmp/b/2", "/tmp/c")); + when(dbUtils.listValidHdfsPaths()).thenReturn(Sets.newHashSet("/tmp/a", "/tmp/a/1", "/tmp/b", "/tmp/b/2")); + } + + @Test + void testFixHdfsInconsistencies_false() throws MDStoreManagerException { + final Set toDelete = controller.fixHdfsInconsistencies(false); + assertEquals(2, toDelete.size()); + assertTrue(toDelete.contains("/tmp/b/1")); + assertTrue(toDelete.contains("/tmp/c")); + verify(hdfsClient, never()).deletePath(anyString()); + } + + @Test + void testFixHdfsInconsistencies_true() throws MDStoreManagerException { + final Set toDelete = controller.fixHdfsInconsistencies(true); + assertEquals(2, toDelete.size()); + assertTrue(toDelete.contains("/tmp/b/1")); + assertTrue(toDelete.contains("/tmp/c")); + verify(hdfsClient).deletePath("/tmp/b/1"); + verify(hdfsClient).deletePath("/tmp/c"); + } +}