Skip to content

Commit

Permalink
Add legacy Spec
Browse files Browse the repository at this point in the history
  • Loading branch information
enyachoke committed Jan 15, 2024
1 parent 2d8c775 commit 7e36d26
Show file tree
Hide file tree
Showing 5 changed files with 313 additions and 121 deletions.
16 changes: 5 additions & 11 deletions node-scripts/spec/pipeline3/impl/dockerComposeGeneric.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,7 @@ describe("Docker Compose Generic Deployment implementation", function() {
scripts.remote(
instanceDef.deployment.host.value,
"cd " +
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
"docker_compose"
)
.toString() +
path.resolve(instanceDef.deployment.workDir).toString() +
" && docker compose -p " +
instanceDef.name +
" -f docker-compose.yml -f docker-compose-2.yml " +
Expand All @@ -146,9 +140,9 @@ describe("Docker Compose Generic Deployment implementation", function() {
.resolve(instanceDef.deployment.hostDir, instanceDef.name)
.toString()
);

// expect(
// dockerCompose.hostPreparation.getDeploymentScript(instanceDef)
// ).toEqual(expected);
let generated = dockerCompose.hostPreparation.getDeploymentScript(
instanceDef
);
expect(generated).toEqual(expected);
});
});
192 changes: 192 additions & 0 deletions node-scripts/spec/pipeline3/impl/dockerComposeGenericRegacy.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
"use strict";

describe("Docker Compose Generic Deployment implementation", function() {
// deps
const path = require("path");
const config = require(path.resolve("src/utils/config"));
const cst = require(path.resolve("src/const"));
const dockerCompose = require(path.resolve(
"src/pipeline3/impl/dockerComposeGeneric"
));

const scripts = require(path.resolve(
"src/" + config.getJobNameForPipeline3() + "/scripts"
));

var instanceDef = {
uuid: "336af1ee-90a1-4d1b-baaf-db12c84deec0",
name: "cambodia1",
type: "dev",
group: "tlc",
deployment: {
hostDir: "/var/docker-volumes/",
type: "dockerComposeGenericMaven",
composePlugin: true,
dockerComposeFiles: ["docker-compose.yml", "docker-compose-2.yml"],
envFiles: ["env-file-1", "env-file-2"],
value: {
mavenProject: {
version: "1.0.0-SNAPSHOT",
artifactId: "bahmni-docker-compose",
groupId: "net.mekomsolutions",
packaging: "zip"
},
services: ["proxy", "openmrs", "mysql"]
},
timezone: "Europe/Amsterdam",
host: {
type: "ssh",
value: {
ip: "hsc-dev.mekomsolutions.net",
user: "mekom",
port: "22"
}
}
},
data: [
{
type: "sqlDocker",
value: {
service: "mysql",
sourceFile: "/var/instance-data/sql-script.sql"
}
}
]
};
it("should use the correct compose command if composePlugin is set to true", () => {
var expected = "docker compose";
expect(dockerCompose.composeExec(true)).toEqual(expected);
});

it("should use the correct compose command if composePlugin is set to false", () => {
var expected = "docker-compose";
expect(dockerCompose.composeExec(false)).toEqual(expected);
});

it("should generate the correct compose command given multiple docker compose files", () => {
var expected = " -f docker-compose.yml -f docker-compose-2.yml ";
expect(
dockerCompose.combineComposeFiles(
instanceDef.deployment.dockerComposeFiles
)
).toEqual(expected);
});
it("should generate Pre-Host Preparation deployment script", () => {
var expected = "";
expected += scripts.initFolder(
config.getCDDockerDirPath(instanceDef.uuid),
"jenkins",
"jenkins",
true
);
expected += scripts.fetchArtifact(
instanceDef.deployment.value.mavenProject,
"maven",
config.getCDDockerDirPath(instanceDef.uuid),
null
);
let generated = dockerCompose.preHostPreparation.getDeploymentScript(
instanceDef
);
expect(generated).toEqual(expected);
});

it("should generate Host Preparation deployment script", () => {
var expected = "";
expected += scripts.rsync(
{ ...instanceDef.deployment.host.value, ...{ remoteDst: true } },
config.getCDDockerDirPath(instanceDef.uuid),
path.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
"docker_compose"
),
true,
null,
"-avzz --delete"
);

expected +=
scripts.remote(
instanceDef.deployment.host.value,
scripts.writeProperty(
"TIMEZONE",
instanceDef.deployment.timezone,
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
"docker_compose",
".env"
)
.toString()
)
) + "\n";

expected +=
scripts.remote(
instanceDef.deployment.host.value,
scripts.createEnvVarFileDockerGeneric(instanceDef)
) +
"\n" +
scripts.remote(
instanceDef.deployment.host.value,
"cd " +
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
"docker_compose"
)
.toString() +
" && docker compose -p " +
instanceDef.name +
" -f docker-compose.yml -f docker-compose-2.yml --env-file=env-file-1 --env-file=env-file-2" +
" --env-file=" +
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
instanceDef.name + ".env"
)
.toString() +
" build --pull proxy openmrs mysql" +
"\n"
) +
scripts.remote(
instanceDef.deployment.host.value,
"cd " +
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
"docker_compose"
)
.toString() +
" && docker compose -p " +
instanceDef.name +
" -f docker-compose.yml -f docker-compose-2.yml --env-file=env-file-1 --env-file=env-file-2" +
" --env-file=" +
path
.resolve(
instanceDef.deployment.hostDir,
instanceDef.name,
instanceDef.name + ".env"
)
.toString() +
" pull proxy openmrs mysql" +
"\n"
) +
scripts.remote(
instanceDef.deployment.host.value,
"sudo chown -R root:root " +
path
.resolve(instanceDef.deployment.hostDir, instanceDef.name)
.toString()
);
let generated = dockerCompose.hostPreparation.getDeploymentScript(
instanceDef
);
expect(generated).toEqual(expected);
});
});
2 changes: 1 addition & 1 deletion node-scripts/src/instance-event/validator.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ module.exports = {
},
validateDockerComposeGenericDeploymentConfigValue: function(value) {
if (
JSON.stringify(Object.keys(value).sort()) !==
JSON.stringify(Object.keys(value).sort()) >=
JSON.stringify(
Object.keys(new model.DockerComposeGenericDeployment()).sort()
)
Expand Down
Loading

0 comments on commit 7e36d26

Please sign in to comment.