From 1be1764db6ca227ebde43e99d42b179cf99e7ba0 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 22 Feb 2025 15:12:17 +0000 Subject: [PATCH] Colour agent logs --- frontend/test-client/src/agent/mock-agent.ts | 33 ++++++++++++++++++-- frontend/test-client/src/cli.ts | 26 ++++++++++----- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/frontend/test-client/src/agent/mock-agent.ts b/frontend/test-client/src/agent/mock-agent.ts index c597430a..31524207 100644 --- a/frontend/test-client/src/agent/mock-agent.ts +++ b/frontend/test-client/src/agent/mock-agent.ts @@ -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 = []; @@ -11,11 +12,39 @@ export class MockAgent extends MockClient { public constructor( globalFiles: Record, initialSettings: Partial, - private readonly name: string + public readonly name: string, + private readonly color: string ) { super(globalFiles, initialSettings); } + public async init(): Promise { + 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 { let options: Array<() => Promise> = [ () => diff --git a/frontend/test-client/src/cli.ts b/frontend/test-client/src/cli.ts index 80ea3f33..7bb952cb 100644 --- a/frontend/test-client/src/cli.ts +++ b/frontend/test-client/src/cli.ts @@ -7,20 +7,21 @@ const globalFiles: Record = {}; const iterations = 100; async function runTest(): Promise { - console.info("Starting test..."); + console.info("Starting test"); const initialSettings: Partial = { 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 { 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");