Colour agent logs

This commit is contained in:
Andras Schmelczer 2025-02-22 15:12:17 +00:00
parent 3471a9c498
commit 1be1764db6
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 50 additions and 9 deletions

View file

@ -1,8 +1,9 @@
import { choose } from "../utils/choose";
import { v4 as uuidv4 } from "uuid";
import { assert } from "../utils/assert";
import { SyncSettings } from "sync-client";
import { LogLevel, SyncSettings } from "sync-client";
import { MockClient } from "./mock-client";
import chalk from "chalk";
export class MockAgent extends MockClient {
private writtenContents: Array<string> = [];
@ -11,11 +12,39 @@ export class MockAgent extends MockClient {
public constructor(
globalFiles: Record<string, Uint8Array>,
initialSettings: Partial<SyncSettings>,
private readonly name: string
public readonly name: string,
private readonly color: string
) {
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> {
let options: Array<() => Promise<unknown>> = [
() =>

View file

@ -7,20 +7,21 @@ const globalFiles: Record<string, Uint8Array> = {};
const iterations = 100;
async function runTest(): Promise<void> {
console.info("Starting test...");
console.info("Starting test");
const initialSettings: Partial<SyncSettings> = {
isSyncEnabled: true,
token: "token",
vaultName: uuidv4()
vaultName: uuidv4(),
remoteUri: "http://localhost:3030"
};
const clients = [
new MockAgent(globalFiles, initialSettings, "agent-1"),
new MockAgent(globalFiles, initialSettings, "agent-2"),
new MockAgent(globalFiles, initialSettings, "agent-3"),
new MockAgent(globalFiles, initialSettings, "agent-4"),
new MockAgent(globalFiles, initialSettings, "agent-5")
new MockAgent(globalFiles, initialSettings, "agent-1", "#ff0000"),
new MockAgent(globalFiles, initialSettings, "agent-2", "#00ff00"),
new MockAgent(globalFiles, initialSettings, "agent-3", "#0000ff"),
new MockAgent(globalFiles, initialSettings, "agent-4", "#ffaa00"),
new MockAgent(globalFiles, initialSettings, "agent-5", "#00ffaa")
];
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()));
console.info("Agents finished successfully");
clients.forEach((client) => {
console.info(`Checking consistency for ${client.name}`);
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();
console.info(`Content check for ${client.name} passed`);
});
console.info("Test completed successfully");