From 22cb8adaa6d9584ad7638b9019b6d0c3eb7158bf Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 13 Feb 2023 13:15:47 +0100 Subject: wallet-core,harness: introduce reserveIsReady flag, test tx lifeycle --- packages/taler-harness/src/harness/harness.ts | 47 +++++++++++++++++++++------ packages/taler-harness/src/harness/helpers.ts | 25 +++++++++++--- 2 files changed, 58 insertions(+), 14 deletions(-) (limited to 'packages/taler-harness/src/harness') diff --git a/packages/taler-harness/src/harness/harness.ts b/packages/taler-harness/src/harness/harness.ts index 275592091..0b7ba14cf 100644 --- a/packages/taler-harness/src/harness/harness.ts +++ b/packages/taler-harness/src/harness/harness.ts @@ -1169,6 +1169,29 @@ export class ExchangeService implements ExchangeServiceInterface { return !!this.exchangeWirewatchProc || !!this.exchangeHttpProc; } + /** + * Stop the wirewatch service (which runs by default). + * + * Useful for some tests. + */ + async stopWirewatch(): Promise { + const wirewatch = this.exchangeWirewatchProc; + if (wirewatch) { + wirewatch.proc.kill("SIGTERM"); + await wirewatch.wait(); + this.exchangeWirewatchProc = undefined; + } + } + + async startWirewatch(): Promise { + const wirewatch = this.exchangeWirewatchProc; + if (wirewatch) { + logger.warn("wirewatch already running"); + } else { + this.internalCreateWirewatchProc(); + } + } + async stop(): Promise { const wirewatch = this.exchangeWirewatchProc; if (wirewatch) { @@ -1332,6 +1355,19 @@ export class ExchangeService implements ExchangeServiceInterface { ); } + private internalCreateWirewatchProc() { + this.exchangeWirewatchProc = this.globalState.spawnService( + "taler-exchange-wirewatch", + [ + "-c", + this.configFilename, + "--longpoll-timeout=5s", + ...this.timetravelArgArr, + ], + `exchange-wirewatch-${this.name}`, + ); + } + async start(): Promise { if (this.isRunning()) { throw Error("exchange is already running"); @@ -1360,16 +1396,7 @@ export class ExchangeService implements ExchangeServiceInterface { `exchange-crypto-rsa-${this.name}`, ); - this.exchangeWirewatchProc = this.globalState.spawnService( - "taler-exchange-wirewatch", - [ - "-c", - this.configFilename, - "--longpoll-timeout=5s", - ...this.timetravelArgArr, - ], - `exchange-wirewatch-${this.name}`, - ); + this.internalCreateWirewatchProc(); this.exchangeHttpProc = this.globalState.spawnService( "taler-exchange-httpd", diff --git a/packages/taler-harness/src/harness/helpers.ts b/packages/taler-harness/src/harness/helpers.ts index 4c2ca80a7..ad77ce6ca 100644 --- a/packages/taler-harness/src/harness/helpers.ts +++ b/packages/taler-harness/src/harness/helpers.ts @@ -209,7 +209,7 @@ export async function createSimpleTestkudosEnvironmentV2( t: GlobalTestState, coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS")), opts: EnvOptions = {}, -): Promise { +): Promise { const db = await setupDb(t); const bank = await BankService.create(t, { @@ -293,15 +293,32 @@ export async function createSimpleTestkudosEnvironmentV2( ), }); - console.log("setup done!"); + const walletService = new WalletService(t, { + name: "wallet", + useInMemoryDb: true, + }); + await walletService.start(); + await walletService.pingUntilAvailable(); - const wallet = new WalletCli(t); + const walletClient = new WalletClient({ + unixPath: walletService.socketPath, + onNotification(n) { + console.log("got notification", n); + }, + }); + await walletClient.connect(); + await walletClient.client.call(WalletApiOperation.InitWallet, { + skipDefaults: true, + }); + + console.log("setup done!"); return { commonDb: db, exchange, merchant, - wallet, + walletClient, + walletService, bank, exchangeBankAccount, }; -- cgit v1.2.3