diff --git a/lib/core/Qualiteer.js b/lib/core/Qualiteer.js index b470b82..17fb422 100644 --- a/lib/core/Qualiteer.js +++ b/lib/core/Qualiteer.js @@ -1,14 +1,13 @@ -import "dotenv/config"; // Load Envars - // Imports import fig from "figlet"; import http from "http"; import { INFO, OK, logInfo } from "../util/logging.js"; -// import "../utils/preload.js"; // Load Globals // Import Core Modules +import expressApp from "./server.js"; import applySockets from "../sockets/handler.js"; import JobManager from "./JobManager.js"; +import rabbiteer from "../rabbit/rabbit-workers.js"; // Constants const title = "QLTR"; @@ -25,9 +24,10 @@ export default class Qualiteer { async _preinitialize() { logInfo(fig.textSync(title, "Cosmike")); INFO("INIT", "Initializing..."); - this.app = (await import("./server.js")).default; + this.app = expressApp; this.server = http.createServer(this.app); this.sockets = applySockets(this.server, this.jobs); + this.rabbiteer = rabbiteer; } start() { diff --git a/lib/core/crons.js b/lib/core/crons.js new file mode 100644 index 0000000..8c6cf3a --- /dev/null +++ b/lib/core/crons.js @@ -0,0 +1,13 @@ +import cron from "cron"; +const { CronJob } = cron; + +// Remove Expired Silenced Tests +const expiredSilenced = () => { + console.log("Would Update Silenced Tests"); +}; + +const silencedCron = new CronJob("* * * * * *", expiredSilenced); + +export default async function startCrons() { + silencedCron.start(); +} diff --git a/lib/core/server.js b/lib/core/server.js index f19f60a..5fea567 100644 --- a/lib/core/server.js +++ b/lib/core/server.js @@ -11,3 +11,5 @@ app.all("/", (req, res) => res.redirect("/qualiteer")); // Routes app.use("/api/results", results); + +export default app; diff --git a/lib/rabbit/rabbit-workers.js b/lib/rabbit/rabbit-workers.js new file mode 100644 index 0000000..0d7a8bd --- /dev/null +++ b/lib/rabbit/rabbit-workers.js @@ -0,0 +1,14 @@ +import Rabbiteer from "rabbiteer"; +import workers from "./workers/index.js"; + +// Pull Environment Variables +const { RABBIT_HOST: host, RABBIT_USER: user, RABBIT_PASS: pass } = process.env; + +// Rabbit Config +const rabbitConfig = { + host: host ?? "localhost", + user: user ?? "rabbit", + pass: pass ?? "rabbit", +}; + +export default new Rabbiteer(null, workers, { autoRabbit: rabbitConfig }); diff --git a/lib/rabbit/TestResultsConsumer.js b/lib/rabbit/workers/TestResultsWorker.js similarity index 82% rename from lib/rabbit/TestResultsConsumer.js rename to lib/rabbit/workers/TestResultsWorker.js index 7f044ae..741870f 100644 --- a/lib/rabbit/TestResultsConsumer.js +++ b/lib/rabbit/workers/TestResultsWorker.js @@ -1,7 +1,7 @@ // Imports -import { RabbitConsumer } from "rabiteer"; +import { Worker } from "rabbiteer"; // Class -export default class TestResultsConsumer extends RabbitConsumer { +export default class TestResultsWorker extends Worker { constructor() { super("TestResults"); } diff --git a/lib/rabbit/workers/index.js b/lib/rabbit/workers/index.js new file mode 100644 index 0000000..36149dc --- /dev/null +++ b/lib/rabbit/workers/index.js @@ -0,0 +1,3 @@ +import TestResultsWorker from "./TestResultsWorker.js"; + +export default [new TestResultsWorker()]; diff --git a/package-lock.json b/package-lock.json index 3aadad4..075566a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "moment": "^2.29.3", "pg-promise": "^10.11.1", "postgres-migrations": "^5.3.0", + "rabbiteer": "gitlab:Dunemask/rabbiteer", "socket.io": "^4.4.1", "socket.io-client": "^4.4.1", "uuid": "^8.3.2" @@ -37,7 +38,7 @@ "readline-sync": "^1.4.10" }, "optionalDependencies": { - "rabbiteer": "^1.0.0" + "rabbiteer": "gitlab:Dunemask/rabbiteer" } }, "node_modules/@ampproject/remapping": { @@ -14590,6 +14591,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rabbiteer": { + "version": "1.0.0", + "resolved": "git+ssh://git@gitlab.com/Dunemask/rabbiteer.git#6bb6cc26ca7ea7f4eb934529305ebb8ae0b26369", + "license": "LGPL-2.1-only", + "optional": true, + "dependencies": { + "amqplib": "^0.8.0" + } + }, "node_modules/raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -28751,6 +28761,14 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, + "rabbiteer": { + "version": "git+ssh://git@gitlab.com/Dunemask/rabbiteer.git#6bb6cc26ca7ea7f4eb934529305ebb8ae0b26369", + "from": "rabbiteer@git+https://gitlab.com/Dunemask/rabbiteer.git", + "optional": true, + "requires": { + "amqplib": "^0.8.0" + } + }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", diff --git a/package.json b/package.json index d7f2771..2c4e8a6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "author": "Dunemask", "license": "LGPL-2.1-only", "optionalDependencies": { - "rabbiteer": "^1.0.0" + "rabbiteer": "gitlab:Dunemask/rabbiteer" }, "dependencies": { "@mui/icons-material": "^5.6.2",