Some embarrassing mistakes

This commit is contained in:
Radon Rosborough 2021-07-11 21:43:58 +00:00
parent 416d91395f
commit 320b17777c
4 changed files with 21 additions and 15 deletions

View File

@ -637,6 +637,13 @@ async function writeLog(lang, type, result, log) {
);
}
async function getImageHash(tag) {
const output = (await run(["docker", "inspect", `riju:${tag}`], console.error, {
suppressOutput: true,
})).output;
return JSON.parse(output)[0].Config.Labels["riju.image-hash"];
}
async function main() {
if (process.env.HOSTNAME !== "runtime") {
throw new Error("tests should be run in runtime container");
@ -656,13 +663,11 @@ async function main() {
const langHashes = Object.fromEntries(
await Promise.all(
_.uniq(tests.map(({ lang }) => lang)).map(async (lang) => {
const output = (await run(["docker", "inspect", `riju:lang-${lang}`], console.error, {
suppressOutput: true,
})).output;
return [lang, JSON.parse(output)[0].Config.Labels["riju.image-hash"]];
return [lang, await getImageHash(`lang-${lang}`)];
})
)
);
const runtimeHash = await getImageHash("runtime");
console.error(`Running ${tests.length} test${tests.length !== 1 ? "s" : ""}`);
const lintSeen = new Set();
let lintPassed = new Set();
@ -772,7 +777,7 @@ async function main() {
await fs.mkdir(`build/test-hashes/lang`, { recursive: true });
await fs.writeFile(
`build/test-hashes/lang/${lang}`,
await getTestHash(lang, langHashes[lang]),
await getTestHash(lang, runtimeHash, langHashes[lang]),
);
}
process.exit(failed.size > 0 ? 1 : 0);

View File

@ -66,9 +66,6 @@ async function getTestRunnerHash() {
.digest("hex")
);
}
hashes.push((await util.promisify(child_process.exec)(
`docker inspect riju:runtime -f '{{ index .Config.Labels "riju.image-hash" }}'`,
)).stdout.trim());
return crypto.createHash("sha1").update(hashes.join(",")).digest("hex");
}
@ -81,11 +78,11 @@ async function getTestConfigHash(lang) {
return crypto.createHash("sha1").update(JSON.stringify(config)).digest("hex");
}
export async function getTestHash(lang, imageHash) {
export async function getTestHash(lang, runtimeImageHash, langImageHash) {
return crypto
.createHash("sha1")
.update(
`${await testRunnerHash},${await getTestConfigHash(lang)},${imageHash}`
`${await testRunnerHash},${await getTestConfigHash(lang)},${runtimeImageHash},${langImageHash}`
)
.digest("hex");
}

View File

@ -111,7 +111,7 @@ void session(char *uuid, char *lang, char *imageHash)
"--memory", "100m",
"--memory-swap", "900m",
image, "bash", "-c",
"cat /var/run/riju/sentinel/fifo | while read -t2; do :; done",
"cat /var/run/riju/sentinel/fifo | ( while read -t2; do :; done; pkill -g0 )",
NULL,
};
execvp(argv[0], argv);

View File

@ -228,7 +228,11 @@ async function getLanguageTestArtifact({ lang }) {
return s3TestHashes[lang] || null;
},
getDesiredHash: async (dependencyHashes) => {
return await getTestHash(lang, dependencyHashes[`image:lang-${lang}`]);
return await getTestHash(
lang,
dependencyHashes[`image:runtime`],
dependencyHashes[`image:lang-${lang}`],
);
},
buildLocally: async () => {
await runCommand(`make shell I=runtime CMD="make test L=${lang}"`);
@ -531,6 +535,9 @@ async function executeDepGraph({
const seen = new Set();
for (const target of priorityTargets) {
for (const dep of artifacts[target].dependencies) {
if (seen.has(dep)) {
continue;
}
if (artifacts[target].publishTarget) {
if (statuses[dep] === "publishToRegistry") {
plan.push({
@ -546,9 +553,6 @@ async function executeDepGraph({
});
}
}
if (seen.has(dep)) {
continue;
}
seen.add(dep);
}
if (statuses[target]) {