Merge pull request #862 from cosmos/speedup-tests

Speed up Stargate tests
This commit is contained in:
Simon Warta 2021-07-28 18:32:12 +02:00 committed by GitHub
commit d4be3b0d79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 121 additions and 22 deletions

View File

@ -7,7 +7,14 @@ import { MsgDelegate } from "cosmjs-types/cosmos/staking/v1beta1/tx";
import { MsgDelegateEncodeObject } from "../encodeobjects";
import { SigningStargateClient } from "../signingstargateclient";
import { assertIsBroadcastTxSuccess } from "../stargateclient";
import { faucet, pendingWithoutSimapp, simapp, simappEnabled, validator } from "../testutils.spec";
import {
defaultSigningClientOptions,
faucet,
pendingWithoutSimapp,
simapp,
simappEnabled,
validator,
} from "../testutils.spec";
import { DistributionExtension, setupDistributionExtension } from "./distribution";
import { QueryClient } from "./queryclient";
@ -27,7 +34,11 @@ describe("DistributionExtension", () => {
beforeAll(async () => {
if (simappEnabled()) {
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg: MsgDelegate = {
delegatorAddress: faucet.address0,

View File

@ -7,7 +7,14 @@ import { MsgDelegate, MsgUndelegate } from "cosmjs-types/cosmos/staking/v1beta1/
import { MsgDelegateEncodeObject, MsgUndelegateEncodeObject } from "../encodeobjects";
import { SigningStargateClient } from "../signingstargateclient";
import { assertIsBroadcastTxSuccess } from "../stargateclient";
import { faucet, pendingWithoutSimapp, simapp, simappEnabled, validator } from "../testutils.spec";
import {
defaultSigningClientOptions,
faucet,
pendingWithoutSimapp,
simapp,
simappEnabled,
validator,
} from "../testutils.spec";
import { QueryClient } from "./queryclient";
import { setupStakingExtension, StakingExtension } from "./staking";
@ -27,7 +34,11 @@ describe("StakingExtension", () => {
beforeAll(async () => {
if (simappEnabled()) {
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
{
const msg: MsgDelegate = {

View File

@ -17,6 +17,7 @@ import { PrivateSigningStargateClient, SigningStargateClient } from "./signingst
import { assertIsBroadcastTxSuccess, isBroadcastTxFailure } from "./stargateclient";
import {
defaultSendFee,
defaultSigningClientOptions,
faucet,
makeRandomAddress,
ModifyingDirectSecp256k1HdWallet,
@ -33,7 +34,7 @@ describe("SigningStargateClient", () => {
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const registry = new Registry();
registry.register("/custom.MsgCustom", MsgSend);
const options = { registry: registry };
const options = { ...defaultSigningClientOptions, registry: registry };
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet, options);
const openedClient = client as unknown as PrivateSigningStargateClient;
expect(openedClient.registry.lookupType("/custom.MsgCustom")).toEqual(MsgSend);
@ -44,7 +45,11 @@ describe("SigningStargateClient", () => {
it("works with direct signer", async () => {
pendingWithoutSimapp();
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const amount = coins(7890, "ucosm");
const beneficiaryAddress = makeRandomAddress();
@ -76,7 +81,11 @@ describe("SigningStargateClient", () => {
it("works with legacy Amino signer", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const amount = coins(7890, "ucosm");
const beneficiaryAddress = makeRandomAddress();
@ -110,7 +119,11 @@ describe("SigningStargateClient", () => {
it("works with direct signing", async () => {
pendingWithoutSimapp();
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const memo = "Cross-chain fun";
const fee = {
amount: coins(2000, "ucosm"),
@ -155,7 +168,11 @@ describe("SigningStargateClient", () => {
it("works with Amino signing", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const memo = "Cross-chain fun";
const fee = {
amount: coins(2000, "ucosm"),
@ -203,7 +220,11 @@ describe("SigningStargateClient", () => {
it("works", async () => {
pendingWithoutSimapp();
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg = MsgDelegate.fromPartial({
delegatorAddress: faucet.address0,
@ -226,7 +247,11 @@ describe("SigningStargateClient", () => {
it("works with a modifying signer", async () => {
pendingWithoutSimapp();
const wallet = await ModifyingDirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg = MsgDelegate.fromPartial({
delegatorAddress: faucet.address0,
@ -261,7 +286,11 @@ describe("SigningStargateClient", () => {
it("works with bank MsgSend", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msgSend: MsgSend = {
fromAddress: faucet.address0,
@ -284,7 +313,11 @@ describe("SigningStargateClient", () => {
it("works with staking MsgDelegate", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msgDelegate: MsgDelegate = {
delegatorAddress: faucet.address0,
@ -399,7 +432,11 @@ describe("SigningStargateClient", () => {
},
},
});
const options = { registry: customRegistry, aminoTypes: customAminoTypes };
const options = {
...defaultSigningClientOptions,
registry: customRegistry,
aminoTypes: customAminoTypes,
};
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet, options);
const msg: CustomMsgDelegate = {
@ -423,7 +460,11 @@ describe("SigningStargateClient", () => {
it("works with a modifying signer", async () => {
pendingWithoutSimapp();
const wallet = await ModifyingSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg: MsgDelegate = {
delegatorAddress: faucet.address0,
@ -460,7 +501,11 @@ describe("SigningStargateClient", () => {
it("works", async () => {
pendingWithoutSimapp();
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg = MsgDelegate.fromPartial({
delegatorAddress: faucet.address0,
@ -486,7 +531,11 @@ describe("SigningStargateClient", () => {
it("works with a modifying signer", async () => {
pendingWithoutSimapp();
const wallet = await ModifyingDirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg = MsgDelegate.fromPartial({
delegatorAddress: faucet.address0,
@ -521,7 +570,11 @@ describe("SigningStargateClient", () => {
it("works with bank MsgSend", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msgSend: MsgSend = {
fromAddress: faucet.address0,
@ -547,7 +600,11 @@ describe("SigningStargateClient", () => {
it("works with staking MsgDelegate", async () => {
pendingWithoutSimapp();
const wallet = await Secp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msgDelegate: MsgDelegate = {
delegatorAddress: faucet.address0,
@ -665,7 +722,11 @@ describe("SigningStargateClient", () => {
},
},
});
const options = { registry: customRegistry, aminoTypes: customAminoTypes };
const options = {
...defaultSigningClientOptions,
registry: customRegistry,
aminoTypes: customAminoTypes,
};
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet, options);
const msg: CustomMsgDelegate = {
@ -692,7 +753,11 @@ describe("SigningStargateClient", () => {
it("works with a modifying signer", async () => {
pendingWithoutSimapp();
const wallet = await ModifyingSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(simapp.tendermintUrl, wallet);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrl,
wallet,
defaultSigningClientOptions,
);
const msg: MsgDelegate = {
delegatorAddress: faucet.address0,

View File

@ -21,6 +21,7 @@ import {
StargateClient,
} from "./stargateclient";
import {
defaultSigningClientOptions,
faucet,
fromOneElementArray,
makeRandomAddress,
@ -89,7 +90,11 @@ async function sendTokens(
signatures: [fromBase64(signature.signature)],
});
const txRawBytes = Uint8Array.from(TxRaw.encode(txRaw).finish());
const broadcastResponse = await client.broadcastTx(txRawBytes);
const broadcastResponse = await client.broadcastTx(
txRawBytes,
defaultSigningClientOptions.broadcastTimeoutMs,
defaultSigningClientOptions.broadcastPollIntervalMs,
);
return {
broadcastResponse: broadcastResponse,
tx: txRawBytes,

View File

@ -13,6 +13,7 @@ import { SignMode } from "cosmjs-types/cosmos/tx/signing/v1beta1/signing";
import { AuthInfo, SignDoc, TxBody } from "cosmjs-types/cosmos/tx/v1beta1/tx";
import { calculateFee, GasPrice } from "./fee";
import { SigningStargateClientOptions } from "./signingstargateclient";
export function simappEnabled(): boolean {
return !!process.env.SIMAPP_ENABLED;
@ -73,6 +74,12 @@ export const slowSimapp = {
totalSupply: 21000000000, // ucosm
};
/** Setting to speed up testing */
export const defaultSigningClientOptions: SigningStargateClientOptions = {
broadcastPollIntervalMs: 300,
broadcastTimeoutMs: 8_000,
};
export const faucet = {
mnemonic:
"economy stock theory fatal elder harbor betray wasp final emotion task crumble siren bottom lizard educate guess current outdoor pair theory focus wife stone",