Skip to content

Commit

Permalink
#10: Configure unit tests to use a separate knowledgebases-test folde…
Browse files Browse the repository at this point in the history
…r for deployed data. Don't check domain models and palettes for unit tests, during start-up.
  • Loading branch information
kenmeacham committed May 30, 2023
1 parent 5f04d6c commit 5ef2371
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {

Expand Down Expand Up @@ -252,67 +255,69 @@ public void run(String... args) {
}
}

//Final check of installed domain models and palettes
Map<String, Map<String, Object>> domainModels = storeModelManager.getDomainModels();
if (checkDomainModelsAndPalettes) {
//Final check of installed domain models and palettes
Map<String, Map<String, Object>> 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<String, Object> 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<String, Object> 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");
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 5ef2371

Please sign in to comment.