diff --git a/src/main/java/uk/ac/soton/itinnovation/security/systemmodeller/InitializeManagementGraph.java b/src/main/java/uk/ac/soton/itinnovation/security/systemmodeller/InitializeManagementGraph.java index a660d073..fd8a0032 100644 --- a/src/main/java/uk/ac/soton/itinnovation/security/systemmodeller/InitializeManagementGraph.java +++ b/src/main/java/uk/ac/soton/itinnovation/security/systemmodeller/InitializeManagementGraph.java @@ -71,6 +71,9 @@ public class InitializeManagementGraph implements CommandLineRunner { @Value("${knowledgebases.install.folder}") private String kbInstallFolder; + @Value("${check.installed.knowledgebases}") + private boolean checkDomainModelsAndPalettes; + @Override public void run(String... args) { @@ -252,67 +255,69 @@ public void run(String... args) { } } - //Final check of installed domain models and palettes - Map> domainModels = storeModelManager.getDomainModels(); + if (checkDomainModelsAndPalettes) { + //Final check of installed domain models and palettes + Map> domainModels = storeModelManager.getDomainModels(); - logger.info("Checking domain models and palettes..."); - logger.info(""); + logger.info("Checking domain models and palettes..."); + logger.info(""); - if (domainModels.keySet().size() > 0) { - boolean palettesExist = true; + if (domainModels.keySet().size() > 0) { + boolean palettesExist = true; - for (String domainModelUri : domainModels.keySet()) { - Map domainModel = domainModels.get(domainModelUri); - String title = (String) domainModel.get("title"); - String label = (String) domainModel.get("label"); - String version = (String) domainModel.get("version"); + for (String domainModelUri : domainModels.keySet()) { + Map domainModel = domainModels.get(domainModelUri); + String title = (String) domainModel.get("title"); + String label = (String) domainModel.get("label"); + String version = (String) domainModel.get("version"); - logger.info("URI: {}", domainModelUri); - logger.info("title: {}", title); - logger.info("label: {}", label); - logger.info("version: {}", version); + logger.info("URI: {}", domainModelUri); + logger.info("title: {}", title); + logger.info("label: {}", label); + logger.info("version: {}", version); - String domainModelName = title; - String domainModelFolderPath = kbInstallFolder + File.separator + domainModelName; - String palettePath = domainModelFolderPath + File.separator + "palette.json"; - File paletteFile = new File(palettePath); + String domainModelName = title; + String domainModelFolderPath = kbInstallFolder + File.separator + domainModelName; + String palettePath = domainModelFolderPath + File.separator + "palette.json"; + File paletteFile = new File(palettePath); - if (paletteFile.exists()) { - logger.info("palette: {}", paletteFile.getAbsolutePath()); - } - else { - logger.error("palette: {}", paletteFile.getAbsolutePath() + " (missing)"); - palettesExist = false; - } + if (paletteFile.exists()) { + logger.info("palette: {}", paletteFile.getAbsolutePath()); + } + else { + logger.error("palette: {}", paletteFile.getAbsolutePath() + " (missing)"); + palettesExist = false; + } - logger.info(""); - } + logger.info(""); + } - if (!palettesExist) { - logger.error("One or more palettes are missing (see details above)"); - System.exit(1); - } + if (!palettesExist) { + logger.error("One or more palettes are missing (see details above)"); + System.exit(1); + } - if (duplicatedDomainGraphs.size() > 0) { - logger.warn("Multiple zipfiles were found for the following domain graphs:"); - for (String graphUri : duplicatedDomainGraphs) { - logger.warn(graphUri); + if (duplicatedDomainGraphs.size() > 0) { + logger.warn("Multiple zipfiles were found for the following domain graphs:"); + for (String graphUri : duplicatedDomainGraphs) { + logger.warn(graphUri); + } + logger.info(""); } - logger.info(""); } - } - else { - boolean production = true; - String profile = System.getProperty("spring.profiles.active"); - if ((profile != null) && (profile.equals("test") || profile.equals("dev"))) { - production = false; - } - logger.warn("No domain models currently installed! Options include:"); - String restartMsg = production ? "restart Spyderisk (docker-compose down -v; docker-compose up -d)" - : "restart Spyderisk (ensure reset.on.start=true in application properties)"; + else { + boolean production = true; + String profile = System.getProperty("spring.profiles.active"); + if ((profile != null) && (profile.equals("test") || profile.equals("dev"))) { + production = false; + } + logger.warn("No domain models currently installed! Options include:"); + String restartMsg = production ? "restart Spyderisk (docker-compose down -v; docker-compose up -d)" + : "restart Spyderisk (ensure reset.on.start=true in application properties)"; - logger.warn("1) Copy required domain model zip bundles into {} then " + restartMsg, kbSourceFolder); - logger.warn("2) Manually install each required domain model (knowledgebase) via the Spyderisk Knowledgebase Manager page"); + logger.warn("1) Copy required domain model zip bundles into {} then " + restartMsg, kbSourceFolder); + logger.warn("2) Manually install each required domain model (knowledgebase) via the Spyderisk Knowledgebase Manager page"); + } } logger.info("Finished management graph initialisation"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d3e3f721..995a4bdd 100755 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -19,6 +19,9 @@ knowledgebases.source.folder=/code/knowledgebases # N.B. This should match the knowledgebases volume in docker-compose.yml knowledgebases.install.folder=/opt/spyderisk/knowledgebases +# Check knowledgebases and palettes after start-up +check.installed.knowledgebases=true + # Enable response compression (set to true, if required) # N.B. this only applies to embedded Tomcat (e.g. via bootTest). For production servers, this is configured via the Tomcat server.xml file instead. server.compression.enabled=false diff --git a/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/CommonTestSetup.java b/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/CommonTestSetup.java index 0e756ef0..fb43c554 100644 --- a/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/CommonTestSetup.java +++ b/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/CommonTestSetup.java @@ -50,7 +50,11 @@ /** * Represents common setup for the REST controller tests. */ -@TestPropertySource(properties = {"spring.data.mongodb.database=${test.spring.data.mongodb.database}", "reset.on.start=false"}) +@TestPropertySource(properties = {"spring.data.mongodb.database=${test.spring.data.mongodb.database}", + "reset.on.start=false", + "knowledgebases.install.folder=/opt/spyderisk/knowledgebases-test", + "check.installed.knowledgebases=false" +}) public abstract class CommonTestSetup { protected final Logger logger = LoggerFactory.getLogger(CommonTestSetup.class); diff --git a/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/rest/DomainModelControllerTest.java b/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/rest/DomainModelControllerTest.java index ae2fe660..538f32d3 100644 --- a/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/rest/DomainModelControllerTest.java +++ b/src/test/java/uk/ac/soton/itinnovation/security/systemmodeller/rest/DomainModelControllerTest.java @@ -48,7 +48,9 @@ import java.util.stream.Collectors; import java.util.zip.GZIPOutputStream; +import org.apache.commons.io.FileUtils; import org.apache.http.HttpStatus; +import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; @@ -113,9 +115,17 @@ public class DomainModelControllerTest extends CommonTestSetup { private String NETWORK_TESTING_NEW_ZIP_PATH = "domainmanager/domain-network-testing-new.zip"; @Before - public void init() { + public void init() throws IOException { logger.info("Executing {}", name.getMethodName()); initAuth(contextPath, port); + logger.info("Initialising knowledgebases installation folder: {}", kbInstallFolder); + FileUtils.deleteDirectory(new File(kbInstallFolder)); + } + + @After + public void cleanup() throws IOException { + logger.info("Removing knowledgebases installation folder: {}", kbInstallFolder); + FileUtils.deleteDirectory(new File(kbInstallFolder)); } //Utilities