Search in sources :

Example 1 with Project

use of org.opengrok.indexer.configuration.Project in project OpenGrok by OpenGrok.

the class PluginClassLoaderTest method testFalsePlugin.

@Test
public void testFalsePlugin() {
    PluginClassLoader instance = new PluginClassLoader(pluginDirectory);
    Class<?> clazz = loadClass(instance, "opengrok.auth.plugin.FalsePlugin");
    IAuthorizationPlugin plugin = getNewInstance(clazz);
    Group g = new Group("group1");
    Project p = new Project("project1");
    assertFalse(plugin.isAllowed(new DummyHttpServletRequest(), g));
    assertFalse(plugin.isAllowed(new DummyHttpServletRequest(), p));
}
Also used : Group(org.opengrok.indexer.configuration.Group) Project(org.opengrok.indexer.configuration.Project) DummyHttpServletRequest(org.opengrok.indexer.web.DummyHttpServletRequest) PluginClassLoader(org.opengrok.indexer.framework.PluginClassLoader) Test(org.junit.jupiter.api.Test)

Example 2 with Project

use of org.opengrok.indexer.configuration.Project in project OpenGrok by OpenGrok.

the class ProjectsControllerTest method testAdd.

/**
 * Verify that added project correctly inherits a property
 * from configuration. Ideally, this should test all properties of Project.
 */
@Test
void testAdd() throws Exception {
    assertTrue(env.getRepositories().isEmpty());
    assertTrue(env.getProjects().isEmpty());
    // Add a group matching the project to be added.
    String groupName = "mercurialgroup";
    Group group = new Group(groupName, "mercurial.*");
    env.getGroups().add(group);
    assertTrue(env.hasGroups());
    assertEquals(1, env.getGroups().stream().filter(g -> g.getName().equals(groupName)).collect(Collectors.toSet()).size());
    assertEquals(0, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    // Add a sub-repository.
    String repoPath = repository.getSourceRoot() + File.separator + "mercurial";
    File mercurialRoot = new File(repoPath);
    File subDir = new File(mercurialRoot, "usr");
    assertTrue(subDir.mkdir());
    String subRepoPath = repoPath + File.separator + "usr" + File.separator + "closed";
    File mercurialSubRoot = new File(subRepoPath);
    MercurialRepositoryTest.runHgCommand(mercurialRoot, "clone", mercurialRoot.getAbsolutePath(), subRepoPath);
    // Add the project.
    env.setScanningDepth(3);
    addProject("mercurial");
    // Check that the project was added properly.
    assertTrue(env.getProjects().containsKey("mercurial"));
    assertEquals(1, env.getProjects().size());
    assertEquals(2, env.getRepositories().size());
    assertEquals(1, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    assertEquals(1, group.getRepositories().stream().filter(p -> p.getName().equals("mercurial")).collect(Collectors.toSet()).size());
    // Check that HistoryGuru now includes the project in its list.
    Set<String> directoryNames = HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet());
    assertTrue(directoryNames.contains(repoPath) || directoryNames.contains(mercurialRoot.getCanonicalPath()), "though it should contain the top root,");
    assertTrue(directoryNames.contains(subRepoPath) || directoryNames.contains(mercurialSubRoot.getCanonicalPath()), "though it should contain the sub-root,");
    // Add more projects and check that they have been added incrementally.
    // At the same time, it checks that multiple projects can be added
    // with single message.
    addProject("git");
    assertEquals(2, env.getProjects().size());
    assertEquals(3, env.getRepositories().size());
    assertTrue(env.getProjects().containsKey("git"));
    assertFalse(HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet()).contains("git"));
}
Also used : GrizzlyWebTestContainerFactory(org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory) TestContainerFactory(org.glassfish.jersey.test.spi.TestContainerFactory) BeforeEach(org.junit.jupiter.api.BeforeEach) RepositoryFactory(org.opengrok.indexer.history.RepositoryFactory) SuggesterService(org.opengrok.web.api.v1.suggester.provider.service.SuggesterService) Arrays(java.util.Arrays) Group(org.opengrok.indexer.configuration.Group) Project(org.opengrok.indexer.configuration.Project) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) BeforeAll(org.junit.jupiter.api.BeforeAll) ApiTaskManager(org.opengrok.web.api.ApiTaskManager) ResourceConfig(org.glassfish.jersey.server.ResourceConfig) RuntimeEnvironment(org.opengrok.indexer.configuration.RuntimeEnvironment) ApiUtils.waitForTask(org.opengrok.web.api.v1.controller.ApiUtils.waitForTask) Path(java.nio.file.Path) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) ServletContainer(org.glassfish.jersey.servlet.ServletContainer) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) TestContainerException(org.glassfish.jersey.test.spi.TestContainerException) SUBVERSION(org.opengrok.indexer.condition.RepositoryInstalled.Type.SUBVERSION) IndexDatabase(org.opengrok.indexer.index.IndexDatabase) Collectors(java.util.stream.Collectors) Indexer(org.opengrok.indexer.index.Indexer) Entity(jakarta.ws.rs.client.Entity) Test(org.junit.jupiter.api.Test) IndexerException(org.opengrok.indexer.index.IndexerException) List(java.util.List) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) HistoryGuru(org.opengrok.indexer.history.HistoryGuru) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) DeploymentContext(org.glassfish.jersey.test.DeploymentContext) Mock(org.mockito.Mock) AbstractBinder(org.glassfish.jersey.internal.inject.AbstractBinder) StandardCopyOption(java.nio.file.StandardCopyOption) ArrayList(java.util.ArrayList) Response(jakarta.ws.rs.core.Response) RepositoryInfo(org.opengrok.indexer.history.RepositoryInfo) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) TestRepository(org.opengrok.indexer.util.TestRepository) CommandTimeoutType(org.opengrok.indexer.configuration.CommandTimeoutType) EnabledForRepository(org.opengrok.indexer.condition.EnabledForRepository) Files(java.nio.file.Files) IOUtils.removeRecursive(org.opengrok.indexer.util.IOUtils.removeRecursive) IOException(java.io.IOException) File(java.io.File) GenericType(jakarta.ws.rs.core.GenericType) AfterEach(org.junit.jupiter.api.AfterEach) ServletDeploymentContext(org.glassfish.jersey.test.ServletDeploymentContext) Paths(java.nio.file.Paths) MERCURIAL(org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL) Collections(java.util.Collections) Group(org.opengrok.indexer.configuration.Group) File(java.io.File) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) Test(org.junit.jupiter.api.Test)

Example 3 with Project

use of org.opengrok.indexer.configuration.Project in project OpenGrok by OpenGrok.

the class ProjectsControllerTest method testSetGet.

@Test
void testSetGet() {
    assertTrue(env.isHandleHistoryOfRenamedFiles());
    String[] projects = new String[] { "mercurial", "git" };
    for (String proj : projects) {
        addProject(proj);
    }
    assertEquals(2, env.getProjectList().size());
    for (String proj : projects) {
        Project project = env.getProjects().get(proj);
        assertNotNull(project);
        assertTrue(project.isHandleRenamedFiles());
        List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
        assertNotNull(riList);
        for (RepositoryInfo ri : riList) {
            ri.setHandleRenamedFiles(true);
            assertTrue(ri.isHandleRenamedFiles());
        }
    }
    // Change their property via RESTful API call.
    for (String proj : projects) {
        setHandleRenamedFilesToFalse(proj);
    }
    // Verify the property was set on each project and its repositories.
    for (String proj : projects) {
        Project project = env.getProjects().get(proj);
        assertNotNull(project);
        assertFalse(project.isHandleRenamedFiles());
        List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
        assertNotNull(riList);
        for (RepositoryInfo ri : riList) {
            assertFalse(ri.isHandleRenamedFiles());
        }
    }
    // Verify the property can be retrieved via message.
    for (String proj : projects) {
        boolean value = target("projects").path(proj).path("property/handleRenamedFiles").request().get(boolean.class);
        assertFalse(value);
    }
}
Also used : Project(org.opengrok.indexer.configuration.Project) RepositoryInfo(org.opengrok.indexer.history.RepositoryInfo) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) Test(org.junit.jupiter.api.Test)

Example 4 with Project

use of org.opengrok.indexer.configuration.Project in project OpenGrok by OpenGrok.

the class ProjectsControllerTest method testAddInherit.

@Test
void testAddInherit() {
    assertTrue(env.getRepositories().isEmpty());
    assertTrue(env.getProjects().isEmpty());
    assertTrue(env.isHandleHistoryOfRenamedFiles());
    addProject("git");
    assertTrue(env.getProjects().containsKey("git"));
    assertEquals(1, env.getProjects().size());
    Project proj = env.getProjects().get("git");
    assertNotNull(proj);
    assertTrue(proj.isHandleRenamedFiles());
}
Also used : Project(org.opengrok.indexer.configuration.Project) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) Test(org.junit.jupiter.api.Test)

Example 5 with Project

use of org.opengrok.indexer.configuration.Project in project OpenGrok by OpenGrok.

the class ProjectsControllerTest method testDelete.

/**
 * This test needs to perform indexing so that it can be verified that
 * delete handling does remove the index data.
 */
@Test
void testDelete() throws Exception {
    String[] projectsToDelete = { "git" };
    // Add a group matching the project to be added.
    String groupName = "gitgroup";
    Group group = new Group(groupName, "git.*");
    env.getGroups().add(group);
    assertTrue(env.hasGroups());
    assertEquals(1, env.getGroups().stream().filter(g -> g.getName().equals(groupName)).collect(Collectors.toSet()).size());
    assertEquals(0, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    assertEquals(0, env.getProjects().size());
    assertEquals(0, env.getRepositories().size());
    assertEquals(0, env.getProjectRepositoriesMap().size());
    addProject("mercurial");
    addProject("git");
    assertEquals(2, env.getProjects().size());
    assertEquals(2, env.getRepositories().size());
    assertEquals(2, env.getProjectRepositoriesMap().size());
    // Check the group was populated properly.
    assertEquals(1, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
    assertEquals(1, group.getRepositories().stream().filter(p -> p.getName().equals("git")).collect(Collectors.toSet()).size());
    // Run the indexer so that data directory is populated.
    ArrayList<String> subFiles = new ArrayList<>();
    subFiles.add("/git");
    subFiles.add("/mercurial");
    ArrayList<String> repos = new ArrayList<>();
    repos.add("/git");
    repos.add("/mercurial");
    // This is necessary so that repositories in HistoryGuru get populated.
    // For per project reindex this is called from setConfiguration() because
    // of the -R option is present.
    HistoryGuru.getInstance().invalidateRepositories(env.getRepositories(), null, CommandTimeoutType.INDEXER);
    env.setHistoryEnabled(true);
    Indexer.getInstance().prepareIndexer(env, // don't search for repositories
    false, // don't scan and add projects
    false, // don't create dictionary
    false, // subFiles - needed when refreshing history partially
    subFiles, // repositories - needed when refreshing history partially
    repos);
    Indexer.getInstance().doIndexerExecution(true, null, null);
    for (String proj : projectsToDelete) {
        deleteProject(proj);
    }
    assertEquals(1, env.getProjects().size());
    assertEquals(1, env.getRepositories().size());
    assertEquals(1, env.getProjectRepositoriesMap().size());
    // Test data removal.
    for (String projectName : projectsToDelete) {
        for (String dirName : new String[] { "historycache", IndexDatabase.XREF_DIR, IndexDatabase.INDEX_DIR }) {
            File dir = new File(env.getDataRootFile(), dirName + File.separator + projectName);
            assertFalse(dir.exists());
        }
    }
    // Check that HistoryGuru no longer maintains the removed projects.
    for (String p : projectsToDelete) {
        assertFalse(HistoryGuru.getInstance().getRepositories().stream().map(RepositoryInfo::getDirectoryName).collect(Collectors.toSet()).contains(repository.getSourceRoot() + File.separator + p));
    }
    // Check the group no longer contains the removed project.
    assertEquals(0, group.getRepositories().size());
    assertEquals(0, group.getProjects().size());
}
Also used : GrizzlyWebTestContainerFactory(org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory) TestContainerFactory(org.glassfish.jersey.test.spi.TestContainerFactory) BeforeEach(org.junit.jupiter.api.BeforeEach) RepositoryFactory(org.opengrok.indexer.history.RepositoryFactory) SuggesterService(org.opengrok.web.api.v1.suggester.provider.service.SuggesterService) Arrays(java.util.Arrays) Group(org.opengrok.indexer.configuration.Group) Project(org.opengrok.indexer.configuration.Project) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) BeforeAll(org.junit.jupiter.api.BeforeAll) ApiTaskManager(org.opengrok.web.api.ApiTaskManager) ResourceConfig(org.glassfish.jersey.server.ResourceConfig) RuntimeEnvironment(org.opengrok.indexer.configuration.RuntimeEnvironment) ApiUtils.waitForTask(org.opengrok.web.api.v1.controller.ApiUtils.waitForTask) Path(java.nio.file.Path) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) ServletContainer(org.glassfish.jersey.servlet.ServletContainer) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) TestContainerException(org.glassfish.jersey.test.spi.TestContainerException) SUBVERSION(org.opengrok.indexer.condition.RepositoryInstalled.Type.SUBVERSION) IndexDatabase(org.opengrok.indexer.index.IndexDatabase) Collectors(java.util.stream.Collectors) Indexer(org.opengrok.indexer.index.Indexer) Entity(jakarta.ws.rs.client.Entity) Test(org.junit.jupiter.api.Test) IndexerException(org.opengrok.indexer.index.IndexerException) List(java.util.List) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) HistoryGuru(org.opengrok.indexer.history.HistoryGuru) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) DeploymentContext(org.glassfish.jersey.test.DeploymentContext) Mock(org.mockito.Mock) AbstractBinder(org.glassfish.jersey.internal.inject.AbstractBinder) StandardCopyOption(java.nio.file.StandardCopyOption) ArrayList(java.util.ArrayList) Response(jakarta.ws.rs.core.Response) RepositoryInfo(org.opengrok.indexer.history.RepositoryInfo) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) TestRepository(org.opengrok.indexer.util.TestRepository) CommandTimeoutType(org.opengrok.indexer.configuration.CommandTimeoutType) EnabledForRepository(org.opengrok.indexer.condition.EnabledForRepository) Files(java.nio.file.Files) IOUtils.removeRecursive(org.opengrok.indexer.util.IOUtils.removeRecursive) IOException(java.io.IOException) File(java.io.File) GenericType(jakarta.ws.rs.core.GenericType) AfterEach(org.junit.jupiter.api.AfterEach) ServletDeploymentContext(org.glassfish.jersey.test.ServletDeploymentContext) Paths(java.nio.file.Paths) MERCURIAL(org.opengrok.indexer.condition.RepositoryInstalled.Type.MERCURIAL) Collections(java.util.Collections) Group(org.opengrok.indexer.configuration.Group) ArrayList(java.util.ArrayList) File(java.io.File) MercurialRepositoryTest(org.opengrok.indexer.history.MercurialRepositoryTest) Test(org.junit.jupiter.api.Test)

Aggregations

Project (org.opengrok.indexer.configuration.Project)88 Test (org.junit.jupiter.api.Test)42 RuntimeEnvironment (org.opengrok.indexer.configuration.RuntimeEnvironment)27 File (java.io.File)22 Group (org.opengrok.indexer.configuration.Group)20 RepositoryInfo (org.opengrok.indexer.history.RepositoryInfo)17 ArrayList (java.util.ArrayList)16 TreeSet (java.util.TreeSet)11 IOException (java.io.IOException)10 DummyHttpServletRequest (org.opengrok.indexer.web.DummyHttpServletRequest)10 List (java.util.List)8 HttpServletRequest (jakarta.servlet.http.HttpServletRequest)7 Path (jakarta.ws.rs.Path)7 HistoryGuru (org.opengrok.indexer.history.HistoryGuru)7 Path (java.nio.file.Path)6 Map (java.util.Map)6 Paths (java.nio.file.Paths)5 Set (java.util.Set)5 Collectors (java.util.stream.Collectors)5 MercurialRepositoryTest (org.opengrok.indexer.history.MercurialRepositoryTest)5