Colour agent logs
This commit is contained in:
parent
3471a9c498
commit
1be1764db6
2 changed files with 50 additions and 9 deletions
|
|
@ -1,8 +1,9 @@
|
||||||
import { choose } from "../utils/choose";
|
import { choose } from "../utils/choose";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
import { assert } from "../utils/assert";
|
import { assert } from "../utils/assert";
|
||||||
import { SyncSettings } from "sync-client";
|
import { LogLevel, SyncSettings } from "sync-client";
|
||||||
import { MockClient } from "./mock-client";
|
import { MockClient } from "./mock-client";
|
||||||
|
import chalk from "chalk";
|
||||||
|
|
||||||
export class MockAgent extends MockClient {
|
export class MockAgent extends MockClient {
|
||||||
private writtenContents: Array<string> = [];
|
private writtenContents: Array<string> = [];
|
||||||
|
|
@ -11,11 +12,39 @@ export class MockAgent extends MockClient {
|
||||||
public constructor(
|
public constructor(
|
||||||
globalFiles: Record<string, Uint8Array>,
|
globalFiles: Record<string, Uint8Array>,
|
||||||
initialSettings: Partial<SyncSettings>,
|
initialSettings: Partial<SyncSettings>,
|
||||||
private readonly name: string
|
public readonly name: string,
|
||||||
|
private readonly color: string
|
||||||
) {
|
) {
|
||||||
super(globalFiles, initialSettings);
|
super(globalFiles, initialSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async init(): Promise<void> {
|
||||||
|
await super.init();
|
||||||
|
|
||||||
|
this.client.logger.addOnMessageListener((message) => {
|
||||||
|
const formatted = chalk.hex(this.color)(
|
||||||
|
`[${this.name}] ${message.timestamp.toISOString()} ${message.level} ${message.message}`
|
||||||
|
);
|
||||||
|
|
||||||
|
switch (message.level) {
|
||||||
|
case LogLevel.ERROR:
|
||||||
|
console.error(formatted);
|
||||||
|
break;
|
||||||
|
case LogLevel.WARNING:
|
||||||
|
console.warn(formatted);
|
||||||
|
break;
|
||||||
|
case LogLevel.INFO:
|
||||||
|
console.info(formatted);
|
||||||
|
break;
|
||||||
|
case LogLevel.DEBUG:
|
||||||
|
console.debug(formatted);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.client.logger.info("Agent initialized");
|
||||||
|
}
|
||||||
|
|
||||||
public async act(): Promise<void> {
|
public async act(): Promise<void> {
|
||||||
let options: Array<() => Promise<unknown>> = [
|
let options: Array<() => Promise<unknown>> = [
|
||||||
() =>
|
() =>
|
||||||
|
|
|
||||||
|
|
@ -7,20 +7,21 @@ const globalFiles: Record<string, Uint8Array> = {};
|
||||||
const iterations = 100;
|
const iterations = 100;
|
||||||
|
|
||||||
async function runTest(): Promise<void> {
|
async function runTest(): Promise<void> {
|
||||||
console.info("Starting test...");
|
console.info("Starting test");
|
||||||
|
|
||||||
const initialSettings: Partial<SyncSettings> = {
|
const initialSettings: Partial<SyncSettings> = {
|
||||||
isSyncEnabled: true,
|
isSyncEnabled: true,
|
||||||
token: "token",
|
token: "token",
|
||||||
vaultName: uuidv4()
|
vaultName: uuidv4(),
|
||||||
|
remoteUri: "http://localhost:3030"
|
||||||
};
|
};
|
||||||
|
|
||||||
const clients = [
|
const clients = [
|
||||||
new MockAgent(globalFiles, initialSettings, "agent-1"),
|
new MockAgent(globalFiles, initialSettings, "agent-1", "#ff0000"),
|
||||||
new MockAgent(globalFiles, initialSettings, "agent-2"),
|
new MockAgent(globalFiles, initialSettings, "agent-2", "#00ff00"),
|
||||||
new MockAgent(globalFiles, initialSettings, "agent-3"),
|
new MockAgent(globalFiles, initialSettings, "agent-3", "#0000ff"),
|
||||||
new MockAgent(globalFiles, initialSettings, "agent-4"),
|
new MockAgent(globalFiles, initialSettings, "agent-4", "#ffaa00"),
|
||||||
new MockAgent(globalFiles, initialSettings, "agent-5")
|
new MockAgent(globalFiles, initialSettings, "agent-5", "#00ffaa")
|
||||||
];
|
];
|
||||||
|
|
||||||
await Promise.all(clients.map((client) => client.init()));
|
await Promise.all(clients.map((client) => client.init()));
|
||||||
|
|
@ -32,9 +33,20 @@ async function runTest(): Promise<void> {
|
||||||
|
|
||||||
await Promise.all(clients.map((client) => client.finish()));
|
await Promise.all(clients.map((client) => client.finish()));
|
||||||
|
|
||||||
|
console.info("Agents finished successfully");
|
||||||
|
|
||||||
clients.forEach((client) => {
|
clients.forEach((client) => {
|
||||||
|
console.info(`Checking consistency for ${client.name}`);
|
||||||
client.assertFileSystemIsConsistent();
|
client.assertFileSystemIsConsistent();
|
||||||
|
console.info(`Consistency check for ${client.name} passed`);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.info("File systems found to be consistent");
|
||||||
|
|
||||||
|
clients.forEach((client) => {
|
||||||
|
console.info(`Checking content for ${client.name}`);
|
||||||
client.assertAllContentIsPresentOnce();
|
client.assertAllContentIsPresentOnce();
|
||||||
|
console.info(`Content check for ${client.name} passed`);
|
||||||
});
|
});
|
||||||
|
|
||||||
console.info("Test completed successfully");
|
console.info("Test completed successfully");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue