From 60ee32fb0e65e8325194a8798dd8cde093a141d3 Mon Sep 17 00:00:00 2001 From: Peter Somogyvari Date: Thu, 15 Apr 2021 02:52:56 -0700 Subject: [PATCH] feat(test-tooling): add besu test ledger log level constructor arg Also adding a logger object so that the test ledger can be a little more chatty while starting up. Related to #780 (but does not solve it completely) Signed-off-by: Peter Somogyvari --- .../main/typescript/besu/besu-test-ledger.ts | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/cactus-test-tooling/src/main/typescript/besu/besu-test-ledger.ts b/packages/cactus-test-tooling/src/main/typescript/besu/besu-test-ledger.ts index aabc44d898..2d94c404ad 100644 --- a/packages/cactus-test-tooling/src/main/typescript/besu/besu-test-ledger.ts +++ b/packages/cactus-test-tooling/src/main/typescript/besu/besu-test-ledger.ts @@ -6,6 +6,11 @@ import tar from "tar-stream"; import { EventEmitter } from "events"; import Web3 from "web3"; import { Account } from "web3-core"; +import { + LogLevelDesc, + Logger, + LoggerProvider, +} from "@hyperledger/cactus-common"; import { ITestLedger } from "../i-test-ledger"; import { Streams } from "../common/streams"; import { IKeyPair } from "../i-key-pair"; @@ -15,6 +20,7 @@ export interface IBesuTestLedgerConstructorOptions { containerImageName?: string; rpcApiHttpPort?: number; envVars?: string[]; + logLevel?: LogLevelDesc; } export const BESU_TEST_LEDGER_DEFAULT_OPTIONS = Object.freeze({ @@ -44,6 +50,7 @@ export class BesuTestLedger implements ITestLedger { public readonly rpcApiHttpPort: number; public readonly envVars: string[]; + private readonly log: Logger; private container: Container | undefined; private containerId: string | undefined; @@ -62,6 +69,9 @@ export class BesuTestLedger implements ITestLedger { this.envVars = options.envVars || BESU_TEST_LEDGER_DEFAULT_OPTIONS.envVars; this.validateConstructorOptions(); + const label = "besu-test-ledger"; + const level = options.logLevel || "INFO"; + this.log = LoggerProvider.getOrCreate({ level, label }); } public getContainer(): Container { @@ -176,7 +186,7 @@ export class BesuTestLedger implements ITestLedger { } public async start(): Promise { - const containerNameAndTag = this.getContainerImageName(); + const imageFqn = this.getContainerImageName(); if (this.container) { await this.container.stop(); @@ -184,11 +194,13 @@ export class BesuTestLedger implements ITestLedger { } const docker = new Docker(); - await this.pullContainerImage(containerNameAndTag); + this.log.debug(`Pulling container image ${imageFqn} ...`); + await this.pullContainerImage(imageFqn); + this.log.debug(`Pulled ${imageFqn} OK. Starting container...`); return new Promise((resolve, reject) => { const eventEmitter: EventEmitter = docker.run( - containerNameAndTag, + imageFqn, [], [], { @@ -215,10 +227,12 @@ export class BesuTestLedger implements ITestLedger { ); eventEmitter.once("start", async (container: Container) => { + this.log.debug(`Started container OK. Waiting for healthcheck...`); this.container = container; this.containerId = container.id; try { await this.waitForHealthCheck(); + this.log.debug(`Healthcheck passing OK.`); resolve(container); } catch (ex) { reject(ex);