diff options
author | Florian Dold <florian@dold.me> | 2023-11-13 18:36:30 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-11-13 18:36:37 +0100 |
commit | 7033150c842f998f1f532d7142bdfa636d4576c4 (patch) | |
tree | 38a082fbcba6e4b72cfe20fe8e3f09893c73736a /packages/taler-harness | |
parent | 58c16b2dd500a8999f3d3cd3f1236aabc8ddd2bf (diff) | |
download | wallet-core-7033150c842f998f1f532d7142bdfa636d4576c4.tar.xz |
harness: support tests with multiple exchanges
Diffstat (limited to 'packages/taler-harness')
-rw-r--r-- | packages/taler-harness/src/harness/harness.ts | 27 | ||||
-rw-r--r-- | packages/taler-harness/src/integrationtests/testrunner.ts | 2 |
2 files changed, 24 insertions, 5 deletions
diff --git a/packages/taler-harness/src/harness/harness.ts b/packages/taler-harness/src/harness/harness.ts index 5f90c8daf..5e993b95e 100644 --- a/packages/taler-harness/src/harness/harness.ts +++ b/packages/taler-harness/src/harness/harness.ts @@ -435,8 +435,20 @@ export interface DbInfo { dbname: string; } -export async function setupDb(t: GlobalTestState): Promise<DbInfo> { - const dbname = "taler-integrationtest"; +export interface SetupDbOpts { + nameSuffix?: string; +} + +export async function setupDb( + t: GlobalTestState, + opts: SetupDbOpts = {}, +): Promise<DbInfo> { + let dbname: string; + if (!opts.nameSuffix) { + dbname = "taler-integrationtest"; + } else { + dbname = `taler-integrationtest-${opts.nameSuffix}`; + } try { await runCommand(t, "dropdb", "dropdb", [dbname]); } catch (e: any) { @@ -479,11 +491,15 @@ export interface FakeBankConfig { httpPort: number; } -function setTalerPaths(config: Configuration, home: string) { +/** + * @param name additional component name, needed when launching multiple instances of the same component + */ +function setTalerPaths(config: Configuration, home: string, name?: string) { config.setString("paths", "taler_home", home); // We need to make sure that the path of taler_runtime_dir isn't too long, // as it contains unix domain sockets (108 character limit). - const runDir = fs.mkdtempSync("/tmp/taler-test-"); + const extraName = name != null ? `${name}-` : ""; + const runDir = fs.mkdtempSync(`/tmp/taler-test-${extraName}`); config.setString("paths", "taler_runtime_dir", runDir); config.setString( "paths", @@ -999,7 +1015,7 @@ export class ExchangeService implements ExchangeServiceInterface { static create(gc: GlobalTestState, e: ExchangeConfig) { const testDir = e.overrideTestDir ?? gc.testDir; const config = new Configuration(); - setTalerPaths(config, testDir + "/talerhome"); + setTalerPaths(config, `${testDir}/talerhome-exchange-${e.name}`, e.name); config.setString("taler", "currency", e.currency); // Required by the exchange but not really used yet. config.setString("exchange", "aml_threshold", `${e.currency}:1000000`); @@ -1024,6 +1040,7 @@ export class ExchangeService implements ExchangeServiceInterface { "master_priv_file", "${TALER_DATA_HOME}/exchange/offline-keys/master.priv", ); + config.setString("exchange", "base_url", `http://localhost:${e.httpPort}/`); config.setString("exchange", "serve", "tcp"); config.setString("exchange", "port", `${e.httpPort}`); diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts index cf5691fe3..968204d78 100644 --- a/packages/taler-harness/src/integrationtests/testrunner.ts +++ b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -93,6 +93,7 @@ import { runWithdrawalHugeTest } from "./test-withdrawal-huge.js"; import { runWithdrawalManualTest } from "./test-withdrawal-manual.js"; import { runWalletGenDbTest } from "./test-wallet-gendb.js"; import { runLibeufinBankTest } from "./test-libeufin-bank.js"; +import { runMultiExchangeTest } from "./test-multiexchange.js"; /** * Test runner. @@ -146,6 +147,7 @@ const allTests: TestMainFunction[] = [ runPaymentZeroTest, runPayPaidTest, runPeerRepairTest, + runMultiExchangeTest, runWalletBalanceTest, runPaywallFlowTest, runPeerToPeerPullTest, |