-missing file, internal benchmark

This commit is contained in:
Florian Dold 2022-12-08 15:01:59 +01:00
parent c54476c40e
commit 68811cc5f5
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
4 changed files with 133 additions and 2 deletions

View File

@ -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!");
}

View File

@ -48,6 +48,7 @@ import {
import {
CryptoDispatcher,
getDefaultNodeWallet,
getDefaultNodeWallet2,
getErrorDetailFromException,
nativeCrypto,
NodeHttpLib,
@ -865,6 +866,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",

View File

@ -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`));

View File

@ -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