aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/taler-wallet-cli/src/env-full.ts101
-rw-r--r--packages/taler-wallet-cli/src/index.ts29
-rw-r--r--packages/taler-wallet-core/src/crypto/workers/cryptoDispatcher.ts2
-rw-r--r--packages/taler-wallet-embedded/src/wallet-qjs.ts3
4 files changed, 133 insertions, 2 deletions
diff --git a/packages/taler-wallet-cli/src/env-full.ts b/packages/taler-wallet-cli/src/env-full.ts
new file mode 100644
index 000000000..3a684db0b
--- /dev/null
+++ b/packages/taler-wallet-cli/src/env-full.ts
@@ -0,0 +1,101 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ * Imports.
+ */
+import { Duration, j2s, URL } from "@gnu-taler/taler-util";
+import { CoinConfig, defaultCoinConfig } from "./harness/denomStructures.js";
+import {
+ GlobalTestState,
+ setupDb,
+ ExchangeService,
+ FakebankService,
+ MerchantService,
+ getPayto,
+} from "./harness/harness.js";
+
+/**
+ * Entry point for the full Taler test environment.
+ */
+export async function runEnvFull(t: GlobalTestState): Promise<void> {
+ const db = await setupDb(t);
+
+ const bank = await FakebankService.create(t, {
+ allowRegistrations: true,
+ currency: "TESTKUDOS",
+ database: db.connStr,
+ httpPort: 8082,
+ });
+
+ const exchange = ExchangeService.create(t, {
+ name: "testexchange-1",
+ currency: "TESTKUDOS",
+ httpPort: 8081,
+ database: db.connStr,
+ });
+
+ const merchant = await MerchantService.create(t, {
+ name: "testmerchant-1",
+ currency: "TESTKUDOS",
+ httpPort: 8083,
+ database: db.connStr,
+ });
+
+ const exchangeBankAccount = await bank.createExchangeAccount(
+ "myexchange",
+ "x",
+ );
+ console.log("exchange bank account", j2s(exchangeBankAccount));
+ exchange.addBankAccount("1", exchangeBankAccount);
+
+ bank.setSuggestedExchange(exchange, exchangeBankAccount.accountPaytoUri);
+
+ await bank.start();
+
+ await bank.pingUntilAvailable();
+
+ const coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS"));
+ exchange.addCoinConfigList(coinConfig);
+
+ await exchange.start();
+ await exchange.pingUntilAvailable();
+
+ merchant.addExchange(exchange);
+
+ await merchant.start();
+ await merchant.pingUntilAvailable();
+
+ await merchant.addInstance({
+ id: "default",
+ name: "Default Instance",
+ paytoUris: [getPayto("merchant-default")],
+ defaultWireTransferDelay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ minutes: 1 }),
+ ),
+ });
+
+ await merchant.addInstance({
+ id: "minst1",
+ name: "minst1",
+ paytoUris: [getPayto("minst1")],
+ defaultWireTransferDelay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ minutes: 1 }),
+ ),
+ });
+
+ console.log("setup done!");
+}
diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts
index 40f2273a7..8fad3bdbf 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -48,6 +48,7 @@ import {
import {
CryptoDispatcher,
getDefaultNodeWallet,
+ getDefaultNodeWallet2,
getErrorDetailFromException,
nativeCrypto,
NodeHttpLib,
@@ -866,6 +867,34 @@ advancedCli
});
advancedCli
+ .subcommand("benchInternal", "bench-internal", {
+ help: "Run the 'bench-internal' benchmark",
+ })
+ .action(async (args) => {
+ const myHttpLib = new NodeHttpLib();
+ myHttpLib.setThrottling(false);
+ const res = await getDefaultNodeWallet2({
+ // No persistent DB storage.
+ persistentStoragePath: undefined,
+ httpLib: myHttpLib,
+ });
+ const wallet = res.wallet;
+ await wallet.client.call(WalletApiOperation.InitWallet, {});
+ await wallet.client.call(WalletApiOperation.RunIntegrationTest, {
+ amountToSpend: "TESTKUDOS:1",
+ amountToWithdraw: "TESTKUDOS:3",
+ bankBaseUrl: "http://localhost:8082/",
+ bankAccessApiBaseUrl: "http://localhost:8082/taler-bank-access/",
+ exchangeBaseUrl: "http://localhost:8081/",
+ merchantBaseUrl: "http://localhost:8083/",
+ });
+ await wallet.runTaskLoop({
+ stopWhenDone: true,
+ });
+ wallet.stop();
+ });
+
+advancedCli
.subcommand("bench1", "bench1", {
help: "Run the 'bench1' benchmark",
})
diff --git a/packages/taler-wallet-core/src/crypto/workers/cryptoDispatcher.ts b/packages/taler-wallet-core/src/crypto/workers/cryptoDispatcher.ts
index 1c0d509e6..88aea71b9 100644
--- a/packages/taler-wallet-core/src/crypto/workers/cryptoDispatcher.ts
+++ b/packages/taler-wallet-core/src/crypto/workers/cryptoDispatcher.ts
@@ -356,7 +356,7 @@ export class CryptoDispatcher {
// it to make sure it doesn't keep us alive if there is no work.)
return new Promise<T>((resolve, reject) => {
let timedOut = false;
- const timeout = timer.after(5000, () => {
+ const timeout = timer.after(10000, () => {
logger.warn(`crypto RPC call ('${operation}') timed out`);
timedOut = true;
reject(new Error(`crypto RPC call ('${operation}') timed out`));
diff --git a/packages/taler-wallet-embedded/src/wallet-qjs.ts b/packages/taler-wallet-embedded/src/wallet-qjs.ts
index 8cad653a8..889cbd83a 100644
--- a/packages/taler-wallet-embedded/src/wallet-qjs.ts
+++ b/packages/taler-wallet-embedded/src/wallet-qjs.ts
@@ -431,11 +431,12 @@ export async function testWithLocal() {
bankBaseUrl: "http://localhost:8082/",
bankAccessApiBaseUrl: "http://localhost:8082/taler-bank-access/",
exchangeBaseUrl: "http://localhost:8081/",
- merchantBaseUrl: "http://backend.demo.taler.net:8083/",
+ merchantBaseUrl: "http://localhost:8083/",
});
await w.wallet.runTaskLoop({
stopWhenDone: true,
});
+ w.wallet.stop();
}
// @ts-ignore