aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-harness/src/harness/harness.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-11-13 18:36:30 +0100
committerFlorian Dold <florian@dold.me>2023-11-13 18:36:37 +0100
commit7033150c842f998f1f532d7142bdfa636d4576c4 (patch)
tree38a082fbcba6e4b72cfe20fe8e3f09893c73736a /packages/taler-harness/src/harness/harness.ts
parent58c16b2dd500a8999f3d3cd3f1236aabc8ddd2bf (diff)
downloadwallet-core-7033150c842f998f1f532d7142bdfa636d4576c4.tar.xz
harness: support tests with multiple exchanges
Diffstat (limited to 'packages/taler-harness/src/harness/harness.ts')
-rw-r--r--packages/taler-harness/src/harness/harness.ts27
1 files changed, 22 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}`);