Mock moving

This commit is contained in:
Dunemask 2022-08-21 20:58:51 +00:00
parent dfcdcc296f
commit 0ac77cdb15
13 changed files with 219 additions and 528 deletions

View file

@ -0,0 +1,11 @@
export const silencedMock = () => {
return [
{
name: `failing`,
class: `failing.js`,
method: "FAKEMETHOD",
id: 0,
silencedUntil: new Date().toJSON(),
},
];
};

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

@ -0,0 +1,153 @@
export const testsMock = () => {
return [
{
id: 0,
name: "single",
class: "single.js",
image: "node:latest",
isPipeline: false,
type: "api",
description: "This is a single test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core", "skip_alt"],
path: "tests/assets/suite/single.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 1,
name: "failing",
class: "failing.js",
image: "node:latest",
isPipeline: false,
type: "ui",
description: "This is a failing test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core"],
path: "tests/assets/suite/failing.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 2,
name: "primary",
class: "primary.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a primary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"skip_alt",
"pipeline_secondary1",
],
path: "tests/assets/suite/primary.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 3,
name: "secondary1",
class: "secondary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"compound_tertiary1",
"compound_tertiary2",
],
path: "tests/assets/suite/secondary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 4,
name: "secondary2",
class: "secondary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary2 test",
tags: ["cron_1hour", "reg_us", "proj_core", "compound_tertiary3"],
path: "tests/assets/suite/secondary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary1",
class: "tertiary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 6,
name: "tertiary2",
class: "tertiary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third2 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary3",
class: "tertiary3.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third3 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary3.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 6,
name: "single-alt",
class: "single-alt.js",
image: "node:latest",
isPipeline: false,
type: "ui",
description: "This is an alternative test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_alt"],
path: "tests/assets/suite/single-alt.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
];
};
export const mappingsMock = () => {
return [
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary1", delay: 0 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary2", delay: 8000 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary2", delay: 0 },
{ name: "tertiary3", delay: 3000 },
],
];
};

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

@ -0,0 +1,30 @@
export const failingMock = () => {
return [
{
name: "failing",
class: "failing.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 12,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: false,
failedMessage: `Some Test FailureMessage`,
},
{
name: "secondary1",
class: "secondary1.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 1,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: true,
failedMessage: `Some Test FailureMessage from Secondary1`,
},
];
};

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"
}
]
}

View file

@ -1,4 +1,5 @@
import pg from "../postgres.js";
import { silencedMock } from "../mocks/alerting-mock.js";
// Imports
import {
insertQuery,
@ -9,18 +10,6 @@ import {
const table = "silenced_tests";
const PG_DISABLED = process.env.POSTGRES_DISABLED;
const silencedMock = () => {
return [
{
name: `failing`,
class: `failing.js`,
method: "FAKEMETHOD",
id: 0,
silencedUntil: new Date().toJSON(),
},
];
};
// Queries
export const getSilencedTests = async () => {
if (PG_DISABLED) return silencedMock();

View file

@ -8,149 +8,9 @@ import {
// Constants
const table = "tests";
const PG_DISABLED = process.env.POSTGRES_DISABLED;
import { testsMock, mappingsMock } from "../mocks/catalog-mock.js";
// Queries
const testsMock = () => {
return [
{
id: 0,
name: "single",
class: "single.js",
image: "node:latest",
isPipeline: false,
type: "api",
description: "This is a single test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core", "skip_alt"],
path: "tests/assets/suite/single.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 1,
name: "failing",
class: "failing.js",
image: "node:latest",
isPipeline: false,
type: "ui",
description: "This is a failing test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core"],
path: "tests/assets/suite/failing.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 2,
name: "primary",
class: "primary.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a primary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"skip_alt",
"pipeline_secondary1",
],
path: "tests/assets/suite/primary.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 3,
name: "secondary1",
class: "secondary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"compound_tertiary1",
"compound_tertiary2",
],
path: "tests/assets/suite/secondary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 4,
name: "secondary2",
class: "secondary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary2 test",
tags: ["cron_1hour", "reg_us", "proj_core", "compound_tertiary3"],
path: "tests/assets/suite/secondary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary1",
class: "tertiary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 6,
name: "tertiary2",
class: "tertiary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third2 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary3",
class: "tertiary3.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third3 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary3.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
];
};
const mappingsMock = () => {
return [
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary1", delay: 0 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary2", delay: 8000 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary2", delay: 0 },
{ name: "tertiary3", delay: 3000 },
],
];
};
export const getTests = async () => {
if (PG_DISABLED) return testsMock();
const query = `SELECT * from ${table}`;
@ -162,3 +22,9 @@ export const getPipelineMappings = async () => {
const query = `SELECT * from ${table}`;
return pg.query(query);
};
export const getProjects = async () => {
if (PG_DISABLED) {
const tests = testsMock();
}
};

View file

@ -1,4 +1,5 @@
import pg from "../postgres.js";
import { failingMock } from "../mocks/results-mock.js";
// Imports
import {
insertQuery,
@ -10,36 +11,6 @@ import {
const table = "test_results";
const PG_DISABLED = process.env.POSTGRES_DISABLED;
const failingMock = () => {
return [
{
name: "failing",
class: "failing.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 12,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: false,
failedMessage: `Some Test FailureMessage`,
},
{
name: "secondary1",
class: "secondary1.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 1,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: true,
failedMessage: `Some Test FailureMessage from Secondary1`,
},
];
};
// Queries
export const insertTestResult = (testResult) => {
const {

View file

@ -1,8 +1,11 @@
import { useQuery } from "@tanstack/react-query";
import { silencedMock } from "@qltr/mocks/alerting-mock.js";
import { failingMock } from "@qltr/mocks/results-mock.js";
import { testsMock, mappingsMock } from "@qltr/mocks/catalog-mock.js";
const QUALITEER_URL = "https://qualiteer.elijahparker3.repl.co/api";
const useMock = false;
const useMock = true;
const asMock = (data) => ({ data });
@ -11,188 +14,20 @@ const fetchApi = (subPath) => async () =>
export const useCatalogTests = () =>
useMock
? asMock([
{
id: 0,
name: "single",
class: "single.js",
image: "node:latest",
isPipeline: false,
type: "api",
description: "This is a single test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core", "skip_alt"],
path: "tests/assets/suite/single.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 1,
name: "failing",
class: "failing.js",
image: "node:latest",
isPipeline: false,
type: "ui",
description: "This is a failing test",
tags: ["cron_1hour", "reg_us", "env_ci", "proj_core"],
path: "tests/assets/suite/failing.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 2,
name: "primary",
class: "primary.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a primary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"skip_alt",
"pipeline_secondary1",
],
path: "tests/assets/suite/primary.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 3,
name: "secondary1",
class: "secondary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary test",
tags: [
"cron_1hour",
"reg_us",
"proj_core",
"compound_tertiary1",
"compound_tertiary2",
],
path: "tests/assets/suite/secondary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 4,
name: "secondary2",
class: "secondary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a secondary2 test",
tags: ["cron_1hour", "reg_us", "proj_core", "compound_tertiary3"],
path: "tests/assets/suite/secondary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary1",
class: "tertiary1.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary1.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 6,
name: "tertiary2",
class: "tertiary2.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third2 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary2.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
{
id: 5,
name: "tertiary3",
class: "tertiary3.js",
image: "node:latest",
isPipeline: true,
type: "api",
description: "This is a third3 test",
tags: ["cron_1hour", "reg_us", "proj_core"],
path: "tests/assets/suite/tertiary3.js",
created: Date.now(),
mergeRequest: "https://example.com",
},
])
? asMock(testsMock())
: useQuery(["catalogTests"], fetchApi("/catalog/tests"));
export const usePipelineMappings = () =>
useMock
? asMock([
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary1", delay: 0 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary1", delay: 1000 },
{ name: "tertiary2", delay: 8000 },
],
[
{ name: "primary", delay: 0 },
{ name: "secondary2", delay: 20000 },
{ name: "tertiary3", delay: 3000 },
],
])
? asMock(mappingsMock())
: useQuery(["pipelineMappings"], fetchApi("/catalog/pipeline-mappings"));
export const useSilencedAlerts = () =>
useMock
? asMock([
{
name: `failing`,
class: `failing.js`,
method: "FAKEMETHOD",
id: 0,
silencedUntil: new Date().toJSON(),
},
])
? asMock(silencedMock())
: useQuery(["silenced"], fetchApi("/alerting/silenced"));
export const useCurrentlyFailing = () =>
useMock
? asMock([
{
name: "failing",
class: "failing.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 12,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: false,
failedMessage: `Some Test FailureMessage`,
},
{
name: "secondary1",
class: "secondary1.js",
timestamp: new Date().toJSON(),
method: "FAKEMETHOD",
cron: "1hour",
type: "api",
dailyFails: 1,
screenshot: "https://picsum.photos/1920/1080",
recentResults: [1, 0, 0, 1, 0],
isPipeline: true,
failedMessage: `Some Test FailureMessage from Secondary1`,
},
])
? asMock(failingMock())
: useQuery(["failing"], fetchApi("/results/failing"));

View file

@ -8,6 +8,7 @@ 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
@ -46,6 +47,8 @@ const runTests = () => {
return tertiary3(pipeline.testData);
case "single":
return single();
case "single-alt":
return singleAlt();
case "failing":
return failing();
default:

View file

@ -0,0 +1,4 @@
export default function singleAltTest() {
console.log("This came from a single test!");
return { status: 0 };
}

View file

@ -29,6 +29,7 @@ export default () => {
"@qltr/jobs": path.resolve("./src/ctx/JobContext.jsx"),
"@qltr/store": path.resolve("./src/ctx/StoreContext.jsx"),
"@qltr/initiator": path.resolve("./lib/sockets/clients/Initiator.js"),
"@qltr/mocks": path.resolve("./lib/database/mocks/")
},
},
});