This commit is contained in:
Michele Artini 2021-02-10 15:31:34 +01:00
parent fbd8f30e05
commit 1614002b5c
2 changed files with 71 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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<String> 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<String> 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");
}
}