package com.constellio.sdk.tests; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.constellio.data.dao.managers.config.ConfigManagerException.OptimisticLockingConfiguration; import com.constellio.data.dao.services.bigVault.solr.BigVaultServer; import com.constellio.data.io.concurrent.data.DataWithVersion; import com.constellio.data.io.concurrent.data.TextView; import com.constellio.data.io.concurrent.filesystem.AtomicFileSystem; import com.constellio.model.services.search.SynonymFeatureAcceptanceTest; import com.constellio.sdk.tests.annotations.SlowTest; @SlowTest public class SolrServerFactoryAcceptanceTest extends SynonymFeatureAcceptanceTest { private static Logger LOGGER = LoggerFactory.getLogger(SolrServerFactoryAcceptanceTest.class); @Test public void whenSettingUpSolrCollectionsThenTheirConfigurationAreStoredInThePathStartsWithTheCollectionName() { for (BigVaultServer server : getConstellioFactories().getDataLayerFactory().getSolrServers().getServers()) { AtomicFileSystem configFileSystem = server.getSolrServerFactory().getConfigFileSystem(); assertThat(configFileSystem.exists("/" + server.getName()) || //SolrCloud configuration configFileSystem.exists("/" + server.getName() + "_configs") //HttpSolr configuration ).isTrue(); } } @Test public void whenCreatingASolrServerThenTheWriteAccessIsProvided() throws OptimisticLockingConfiguration { String testFilePath = "/writeAccessFile.txt"; String fileContent = "Some content"; BigVaultServer aServer = getConstellioFactories().getDataLayerFactory().getSolrServers().getServers().iterator().next(); AtomicFileSystem solrFileSystem = aServer.getSolrFileSystem(); if (solrFileSystem.exists(testFilePath)) solrFileSystem.delete(testFilePath, null); assertThat(solrFileSystem.exists(testFilePath)).isFalse(); solrFileSystem.writeData(testFilePath, new DataWithVersion(fileContent.getBytes(), null)); DataWithVersion readData = solrFileSystem.readData(testFilePath); assertThat(readData.getView(new TextView()).getData()).isEqualTo(fileContent); } @Test public void whenCreateASolrServerThenItCanBeReloaded() throws Exception { //In this test we do a very basic modification, reload the server, and check if the modification has affected on the search. //Is there any better way to test this ? givenSynonymFeatureEnabledWhenIndexingDocumentsAndSearchForAWordThenAllDocumentsContainTheWordAndItsSynonymAreReturned(); } @Test public void whenChangingSolrConfiguraitonInTestThenOtherTestsAreNotAffectedFirst() throws OptimisticLockingConfiguration { doAModification(); } @Test public void whenChangingSolrConfiguraitonInTestThenOtherTestsAreNotAffectedSecond() throws OptimisticLockingConfiguration { doAModification(); } public void doAModification() { LOGGER.info("Do a modification in the solr configuration."); String testFilePath = "/cleanUpFile.txt"; String flag = "This content should not be in this file."; for (BigVaultServer server : getConstellioFactories().getDataLayerFactory().getSolrServers().getServers()) { AtomicFileSystem solrFileSystem = server.getSolrFileSystem(); assertThat(solrFileSystem.exists(testFilePath)).isFalse(); solrFileSystem.writeData(testFilePath, new DataWithVersion(flag.getBytes(), null)); } } }