Refactor backend

This commit is contained in:
Dunemask 2022-07-12 21:26:36 +00:00
parent fd497c0e23
commit 7027feb8ac
20 changed files with 75 additions and 369 deletions

View file

@ -1,13 +1,13 @@
import { Router, json as jsonMiddleware } from "express";
import TestResultsWorker from "../rabbit/workers/TestResultsWorker.js";
const router = Router();
router.use(jsonMiddleware());
router.post("/rabbit/TestResults", (req, res) => {
const { testResult } = req.body;
var io = req.app.get("socketio");
new TestResultsWorker(io).onMessage(testResult);
res.sendStatus(200);
});
export default router;
export default function buildDevRoute(pg, skio) {
const router = Router();
router.use(jsonMiddleware());
router.post("/rabbit/TestResults", (req, res) => {
const { testResult } = req.body;
new TestResultsWorker(skio).onMessage(testResult);
res.sendStatus(200);
});
return router;
}

View file

@ -1,12 +0,0 @@
import { Router, json as jsonMiddleware } from "express";
import jobs from "../core/JobManager.js";
const router = Router();
router.get("/jobs", (req, res) => {
const { clients } = jobs;
const allJobs = [];
for (var c of clients) allJobs.push(...c.jobs);
res.json(allJobs);
});
export default router;

View file

@ -1,37 +0,0 @@
import { Router } from "express";
import { readFileSync } from "fs";
const router = Router();
const catalog = "lib/routes/mocks/catalog.json";
const alerting = "lib/routes/mocks/alerting.json";
const results = "lib/routes/mocks/results.json";
const query = async (mock) => JSON.parse(readFileSync(mock));
// Queries
router.get("/api/catalog/tests", (req, res) => {
query(catalog).then((catalog) => {
res.json(req.get("full") ? catalog["tests:full"] : catalog.tests);
});
});
router.get("/api/results/failing", async (req, res) => {
query(results).then(async (results) => {
if (req.get("count")) res.json({ failing: results.results.length });
else if (!req.get("full")) res.json(results.results);
else
query(catalog).then((catalog) => {
res.json(
results.results.map((r) => ({
...catalog["tests:full"].find((t) => t.name === r.name),
...r,
}))
);
});
});
});
// Mutations
export default router;

View file

@ -1,32 +0,0 @@
{
"silenced": [
{
"name": "Test1",
"class": "TestClass1",
"method": "TestMethod1",
"regions": ["us"],
"alerting": "MyUtcDate"
},
{
"name": "Test2",
"class": null,
"method": "TestMethod1",
"regions": [],
"alerting": "MyUtcDate"
},
{
"name": "*",
"class": "*",
"method": "TestMethod1",
"regions": [],
"alerting": "MyUtcDate"
},
{
"name": "Test3",
"class": "TestClass3",
"method": "*",
"regions": ["us", "au"],
"alerting": "MyUtcDate"
}
]
}

View file

@ -1,92 +0,0 @@
{
"tests": [
{
"name": "Test 1",
"class": "Test Class 1",
"compound": false,
"type": "api"
},
{
"name": "Test 2",
"class": "Test Class 2",
"compound": false,
"type": "ui"
},
{
"name": "Test Primary",
"class": "Test Class Primary",
"compound": true,
"type": "api"
},
{
"name": "Test Secondary",
"class": "Test Class Secondary",
"compound": true,
"type": "ui"
}
],
"tests:full": [
{
"name": "Test1",
"class": "TestClass1",
"compound": false,
"type": "api",
"markers": ["Service1"],
"ignored": false,
"comment": "This Comment Is Part Of Test 1",
"coverage": ["/api/test1", "/api/test2"],
"env": ["prod", "ci"],
"path": "tests/api/test1.js",
"regions": ["us", "ca"],
"origin": "Repo1",
"cron": "1hour"
},
{
"name": "Test2",
"class": "TestClass2",
"compound": false,
"type": "ui",
"markers": ["Service2"],
"ignored": false,
"comment": "Comment belonging to Test2",
"coverage": ["Page1/FeatureA"],
"env": ["prod"],
"path": "tests/ui/test2.js",
"regions": [],
"origin": "Repo2",
"cron": "30min"
},
{
"name": "TestPrimary",
"class": "TestClassPrimary",
"compound": true,
"type": "api",
"markers": [
"ServiceComplex",
"compound_Repo2!TestClassSecondary#TestSecondary"
],
"ignored": false,
"comment": "Comment belonging to Test Primary",
"coverage": ["/api/compound"],
"env": ["ci"],
"path": "tests/api/primary.js",
"regions": [],
"origin": "Repo1",
"cron": "2hour"
},
{
"name": "TestSecondary",
"class": "TestClassSecondary",
"compound": true,
"type": "ui",
"markers": ["ServiceComplex"],
"ignored": false,
"coverage": ["PageComplex/FeatureA"],
"env": ["ci"],
"path": "tests/ui/secondary.js",
"regions": [],
"origin": "Repo2",
"cron": "2hour"
}
]
}

View file

@ -1,48 +0,0 @@
{
"results": [
{
"name": "Test1",
"method": "Test1Method",
"env": "prod",
"timestamp": "2022-05-10T16:35:27.220Z",
"retry": false,
"failed": true,
"failed_message": "Some failure message",
"screenshot": "https://example.com",
"weblog": "https://example.com"
},
{
"name": "Test2",
"method": "Test2Method",
"env": "prod",
"timestamp": "2022-05-10T16:35:31.682Z",
"retry": false,
"failed": true,
"failed_message": "Some failure message 2",
"screenshot": "https://example.com",
"weblog": "https://example.com"
},
{
"name": "Test1",
"method": null,
"env": "prod",
"timestamp": "2022-05-10T16:35:33.810Z",
"retry": false,
"failed": false,
"failed_message": null,
"screenshot": "https://example.com",
"weblog": "https://example.com"
},
{
"name": "Test1",
"method": null,
"env": "ci",
"timestamp": "2022-05-10T16:35:33.810Z",
"retry": false,
"failed": false,
"failed_message": null,
"screenshot": "https://example.com",
"weblog": "https://example.com"
}
]
}

28
lib/routes/router.js Normal file
View file

@ -0,0 +1,28 @@
// Imports
import express from "express";
// Routes
import results from "../routes/results-route.js";
import alerting from "../routes/alerting-route.js";
import react from "../routes/react-route.js";
import catalog from "../routes/catalog-route.js";
import buildDevRoute from "../routes/dev-route.js";
export default function buildRoutes(pg, skio) {
const router = express.Router();
// Special Routes
router.all("/", (req, res) => res.redirect("/qualiteer"));
if (process.env.USE_DEV_ROUTER === "true")
router.use("/api/dev", buildDevRoute(pg, skio));
// Middlewares
// Routes
router.use(react); // Static Build Route
router.use("/api/results", results);
router.use("/api/alerting", alerting);
router.use("/api/catalog", catalog);
return router;
}