Pipeline Trigger Dialog
This commit is contained in:
parent
fd4dba7140
commit
87caafe36f
19 changed files with 8 additions and 382 deletions
|
@ -1,5 +0,0 @@
|
|||
const cap = 10;
|
||||
|
||||
const logNow = () => console.log(Date.now());
|
||||
|
||||
for (var i = 0; i < cap; i++) setTimeout(logNow, i * 1000);
|
18
dev/query.js
18
dev/query.js
|
@ -1,18 +0,0 @@
|
|||
import {
|
||||
insertQuery,
|
||||
selectWhereAnyQuery,
|
||||
updateWhereAnyQuery,
|
||||
} from "../lib/database/pg-query.js";
|
||||
import { readFileSync } from "fs";
|
||||
var data = JSON.parse(readFileSync("lib/routes/mocks/results.json"));
|
||||
|
||||
var table = "test_results";
|
||||
var queries = data.results.map((r) => insertQuery(table, r));
|
||||
queries.forEach((q) => console.log(q + ";"));
|
||||
|
||||
console.log();
|
||||
|
||||
table = "test_catalog";
|
||||
data = JSON.parse(readFileSync("lib/routes/mocks/catalog.json"));
|
||||
queries = data["tests:full"].map((r) => insertQuery(table, r));
|
||||
queries.forEach((q) => console.log(q + ";"));
|
|
@ -1,14 +0,0 @@
|
|||
function jobDisplay({ props }) {
|
||||
return (
|
||||
<div className="job">
|
||||
<h2>Job ID: {props.job.id}</h2>
|
||||
<h3>Log: </h3>
|
||||
{props.job.log.map((l, i) => (
|
||||
<div className="line" key={i}>
|
||||
{l}
|
||||
<br />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
import { useContext } from "react";
|
||||
import { Initiator } from "qualiteer/web-clients";
|
||||
import JobContext, { ACTIONS as jobActions } from "../../ctx/JobContext.jsx";
|
||||
|
||||
const cmd = `node other.js`;
|
||||
export default function Test() {
|
||||
const { state: jobState, dispatch: jobDispatch } = useContext(JobContext);
|
||||
|
||||
function onLog(d) {
|
||||
const job = jobState.jobs[0];
|
||||
job.log.push(d);
|
||||
jobDispatch({ type: jobActions.UPDATE, jobId: jobState.jobs[0].id, job });
|
||||
console.log(d);
|
||||
console.log(jobState);
|
||||
}
|
||||
|
||||
async function startJob() {
|
||||
console.log("Wanting to start");
|
||||
const url = "https://Qualiteer.elijahparker3.repl.co";
|
||||
// Create an initiator and make a job request
|
||||
const primary = new Initiator(url);
|
||||
const jobRequest = { command: cmd };
|
||||
|
||||
const job = await primary.newJob(jobRequest, onLog, () =>
|
||||
console.log("Primary Job Concluded")
|
||||
);
|
||||
jobDispatch({ type: jobActions.CREATE, job: { ...job, log: [] } });
|
||||
|
||||
console.log("Started");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="Jobs">
|
||||
<h1>vv Info vv </h1>
|
||||
<button onClick={startJob}>Start</button>
|
||||
{jobState.jobs.map((j) =>
|
||||
j.log.map((l, i) => (
|
||||
<div className="line" key={i}>
|
||||
{l}
|
||||
<br />
|
||||
</div>
|
||||
))
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
/*
|
||||
}*/
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
import { useContext } from "react";
|
||||
import { Initiator } from "qualiteer/web-clients";
|
||||
import JobContext from "../ctx/JobContext.jsx";
|
||||
|
||||
const cmd = `node other.js`;
|
||||
export default function Test() {
|
||||
const {
|
||||
state: jobState,
|
||||
dispatch: jobDispatch,
|
||||
jobUpdate,
|
||||
jobCreate,
|
||||
} = useContext(JobContext);
|
||||
|
||||
function onLog(d) {
|
||||
const job = jobState.jobs[0];
|
||||
job.log.push(d);
|
||||
jobUpdate(job.id, job);
|
||||
console.log(d);
|
||||
console.log(jobState);
|
||||
}
|
||||
|
||||
async function startJob() {
|
||||
console.log("Wanting to start");
|
||||
const url = "https://Qualiteer.elijahparker3.repl.co";
|
||||
// Create an initiator and make a job request
|
||||
const primary = new Initiator(url);
|
||||
const jobRequest = { command: cmd };
|
||||
|
||||
const job = await primary.newJob(jobRequest, onLog, () =>
|
||||
console.log("Primary Job Concluded")
|
||||
);
|
||||
jobCreate(job);
|
||||
|
||||
console.log("Started");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="test">
|
||||
<h1>vv Info vv </h1>
|
||||
<button onClick={startJob}>Start</button>
|
||||
{jobState.jobs.map((j) =>
|
||||
j.log.map((l, i) => (
|
||||
<div className="line" key={i}>
|
||||
{l}
|
||||
<br />
|
||||
</div>
|
||||
))
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
|
||||
/*
|
||||
}*/
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
import { useState } from "react";
|
||||
import { Initiator } from "qualiteer/web-clients";
|
||||
|
||||
const cmd = `node other.js`;
|
||||
export default function Test() {
|
||||
const [job, setJob] = useState({ log: ["INTRO"] });
|
||||
|
||||
function onLog(d) {
|
||||
const j = { ...job };
|
||||
j.log.push(d);
|
||||
setJob(j);
|
||||
}
|
||||
|
||||
async function startJob() {
|
||||
console.log("Wanting to start");
|
||||
const url = "https://Qualiteer.elijahparker3.repl.co";
|
||||
// Create an initiator and make a job request
|
||||
const primary = new Initiator(url);
|
||||
const job = { command: cmd };
|
||||
await primary.newJob(job, onLog, () =>
|
||||
console.log("Primary Job Concluded")
|
||||
);
|
||||
console.log("Started");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="test">
|
||||
<h1>vv Info vv </h1>
|
||||
<button onClick={startJob}>Start</button>
|
||||
{job.log.map((l, i) => (
|
||||
<div className="line" key={i}>
|
||||
{l}
|
||||
<br />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -11,6 +11,7 @@ import Dialog from "@mui/material/Dialog";
|
|||
import Typography from "@mui/material/Typography";
|
||||
import TextField from "@mui/material/TextField";
|
||||
import Toolbar from "@mui/material/Toolbar";
|
||||
import ContentPasteIcon from "@mui/icons-material/ContentPaste";
|
||||
|
||||
export function usePipelineTriggerDialog(isOpen = false) {
|
||||
const [open, setOpen] = useState(isOpen);
|
||||
|
@ -75,11 +76,13 @@ export default function PipelineTriggerDialog(props) {
|
|||
{trigger.testName}
|
||||
</div>
|
||||
</Typography>
|
||||
{trigger.jobReq && (
|
||||
<TextField
|
||||
margin="normal"
|
||||
label="Expires"
|
||||
label="Job Request"
|
||||
value={JSON.stringify(trigger.jobReq)}
|
||||
/>
|
||||
)}
|
||||
</Box>
|
||||
<PipelineTriggerWidget trigger={trigger} close={onClose} />
|
||||
</DialogContent>
|
||||
|
|
24
tests/api.js
24
tests/api.js
|
@ -1,24 +0,0 @@
|
|||
#!/usr/bin/env node
|
||||
import "dotenv/config"; // Load Envars
|
||||
import Qualiteer from "qualiteer";
|
||||
import axios from "axios";
|
||||
|
||||
// Start server
|
||||
const qltr = new Qualiteer();
|
||||
await qltr.start();
|
||||
|
||||
const url = process.env.QUALITEER_EXECUTOR_URL;
|
||||
|
||||
const mappingsUrl = "/api/catalog/pipeline-mappings";
|
||||
const resultsUrl = "/api/results/failing";
|
||||
|
||||
const get = (...args) => axios.get(`${url}${args[0]}`, args[1]);
|
||||
|
||||
const mappings = await get(resultsUrl, {}).catch((e) => console.log(e));
|
||||
console.log(mappings.data);
|
||||
/*var res = await get(resultsUrl);
|
||||
console.log(res.data);
|
||||
|
||||
res = await get(resultsUrl, { headers: { count: true } });
|
||||
|
||||
console.log(res.data);*/
|
|
@ -1,4 +0,0 @@
|
|||
export default function failingTest() {
|
||||
console.log("This came from a failing test!");
|
||||
return { status: 1, message: "This test always fails :(" };
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function primaryTest() {
|
||||
console.log("This came from a primary test!");
|
||||
return { status: 0, pipelineData: "SomeData" };
|
||||
}
|
|
@ -1,94 +0,0 @@
|
|||
import axios from "axios";
|
||||
import Rabbiteer from "rabbiteer";
|
||||
import primary from "./primary.js";
|
||||
import secondary1 from "./secondary1.js";
|
||||
import secondary2 from "./secondary2.js";
|
||||
|
||||
import tertiary1 from "./tertiary1.js";
|
||||
import tertiary2 from "./tertiary2.js";
|
||||
import tertiary3 from "./tertiary3.js";
|
||||
|
||||
import single from "./single.js";
|
||||
import singleAlt from "./single-alt.js";
|
||||
import failing from "./failing.js";
|
||||
|
||||
// Constants
|
||||
const liveUpdateDelay = 100;
|
||||
const endLiveCount = 200;
|
||||
const reportingUrl = `${process.env.QUALITEER_EXECUTOR_URL}/api/dev/rabbit/TestResults`;
|
||||
// Pull args
|
||||
const args = process.argv.slice(2);
|
||||
const test = (args.find((v) => v.includes("test=")) ?? "").replace("test=", "");
|
||||
const isTriage = (args.find((v) => v.includes("isTriage=")) ?? "").replace(
|
||||
"isTriage=",
|
||||
""
|
||||
);
|
||||
var pipeline = (args.find((v) => v.includes("pipeline=")) ?? "").replace(
|
||||
"pipeline=",
|
||||
""
|
||||
);
|
||||
if (pipeline)
|
||||
pipeline = JSON.parse(Buffer.from(pipeline, "base64").toString("utf8"));
|
||||
|
||||
const logNow = () => console.log(Date.now());
|
||||
const liveIndicator = () => {
|
||||
for (var i = 0; i < endLiveCount; i++)
|
||||
setTimeout(logNow, i * liveUpdateDelay);
|
||||
};
|
||||
|
||||
const runTests = () => {
|
||||
switch (test) {
|
||||
case "primary":
|
||||
return primary();
|
||||
case "secondary1":
|
||||
return secondary1(pipeline.testData);
|
||||
case "secondary2":
|
||||
return secondary2(pipeline.testData);
|
||||
case "tertiary1":
|
||||
return tertiary1(pipeline.testData);
|
||||
case "tertiary2":
|
||||
return tertiary2(pipeline.testData);
|
||||
case "tertiary3":
|
||||
return tertiary3(pipeline.testData);
|
||||
case "single":
|
||||
return single();
|
||||
case "single-alt":
|
||||
return singleAlt();
|
||||
case "failing":
|
||||
return failing();
|
||||
default:
|
||||
return single();
|
||||
}
|
||||
};
|
||||
|
||||
// Run
|
||||
liveIndicator();
|
||||
setTimeout(async () => {
|
||||
const status = runTests();
|
||||
if (pipeline) pipeline.testData = status.pipelineData;
|
||||
const testResult = {
|
||||
...status,
|
||||
failed: status.status !== 0,
|
||||
name: test,
|
||||
pipeline,
|
||||
triage: isTriage === "true",
|
||||
};
|
||||
|
||||
/*const rbt = new Rabbiteer(null, [], {
|
||||
autoRabbit: { user: "guest", pass: "guest" },
|
||||
});
|
||||
await rbt.connect();
|
||||
const data = JSON.stringify(testResult);
|
||||
await rbt.publishMessageWithTimeout("TestResults", data);
|
||||
rbt.disconnect();
|
||||
if (status.status === 1) process.exit(1);*/
|
||||
|
||||
axios
|
||||
.post(reportingUrl, { testResult })
|
||||
.catch((e) => {
|
||||
console.log(e.response.status);
|
||||
})
|
||||
.then(() => {
|
||||
if (status.status === 1) process.exit(1);
|
||||
});
|
||||
}, endLiveCount * liveUpdateDelay);
|
|
@ -1,7 +0,0 @@
|
|||
export default function secondaryTest(pipelineData) {
|
||||
console.log("This came from a secondary1 test!");
|
||||
return {
|
||||
status: +(pipelineData !== "SomeData"),
|
||||
pipelineData: "SomeOtherData",
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
export default function secondaryTest(pipelineData) {
|
||||
console.log("This came from a secondary2 test!");
|
||||
return {
|
||||
status: +(pipelineData !== "SomeData"),
|
||||
pipelineData: "SomeOtherOtherData",
|
||||
};
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function singleAltTest() {
|
||||
console.log("This came from a single test!");
|
||||
return { status: 0 };
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function singleTest() {
|
||||
console.log("This came from a single test!");
|
||||
return { status: 0 };
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function secondaryTest(pipelineData) {
|
||||
console.log("This came from a tertiary1!");
|
||||
return { status: +(pipelineData !== "SomeOtherData") };
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function secondaryTest(pipelineData) {
|
||||
console.log("This came from a tertiary2!");
|
||||
return { status: +(pipelineData !== "SomeOtherData") };
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default function secondaryTest(pipelineData) {
|
||||
console.log("This came from a tertiary3!");
|
||||
return { status: +(pipelineData !== "SomeOtherOtherData") };
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
#!/usr/bin/env node
|
||||
import "dotenv/config"; // Load Envars
|
||||
import Qualiteer from "qualiteer";
|
||||
import { Initiator, Executor } from "qualiteer/clients";
|
||||
|
||||
// Start server
|
||||
const qltr = new Qualiteer();
|
||||
await qltr.start();
|
||||
|
||||
const url = process.env.QUALITEER_EXECUTOR_URL;
|
||||
|
||||
// Create an initiator and make a job request
|
||||
const primary = new Initiator(url);
|
||||
const job = {
|
||||
pipeline: {
|
||||
__test: "primary",
|
||||
triggers: {
|
||||
secondary1: {
|
||||
__testDelay: 1000,
|
||||
tertiary1: {},
|
||||
tertiary2: {
|
||||
__testDelay: 8000,
|
||||
},
|
||||
},
|
||||
secondary2: {
|
||||
__testDelay: 20000,
|
||||
tertiary3: {
|
||||
__testDelay: 3000,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
name: "testing",
|
||||
image: "node",
|
||||
};
|
||||
|
||||
const launchJob = () =>
|
||||
primary.newPipelineJob(job, null, () => console.log("Primary Job Concluded"));
|
||||
launchJob();
|
Loading…
Add table
Add a link
Reference in a new issue