Tests

Included in the monetd distribution are numerous tests. There are unit tests, which test individual components, and end to end tests.

Unit Tests

These can be run as follows:

[...]/monetd$ make test

Monetd Tests

?       .../monetd/cmd/giverny  [no test files]
?       .../monetd/cmd/giverny/commands [no test files]
?       .../monetd/cmd/giverny/commands/keys    [no test files]
?       .../monetd/cmd/giverny/commands/network [no test files]
?       .../monetd/cmd/giverny/commands/server  [no test files]
?       .../monetd/cmd/giverny/commands/transactions    [no test files]
?       .../monetd/cmd/giverny/configuration    [no test files]
?       .../monetd/cmd/monetd   [no test files]
?       .../monetd/cmd/monetd/commands  [no test files]
?       .../monetd/cmd/monetd/commands/config   [no test files]
?       .../monetd/cmd/monetd/commands/keys     [no test files]
ok      .../monetd/src/babble   0.077s
ok      .../monetd/src/common   0.003s
?       .../monetd/src/config   [no test files]
?       .../monetd/src/configuration    [no test files]
?       .../monetd/src/contract [no test files]
?       .../monetd/src/crypto   [no test files]
?       .../monetd/src/docker   [no test files]
?       .../monetd/src/files    [no test files]
?       .../monetd/src/peers    [no test files]
?       .../monetd/src/types    [no test files]
?       .../monetd/src/version  [no test files]

EVM-Lite Tests

?       .../vendor/.../evm-lite/src/common      [no test files]
?       .../vendor/.../evm-lite/src/config      [no test files]
?       .../vendor/.../evm-lite/src/consensus   [no test files]
?       .../vendor/.../evm-lite/src/consensus/solo      [no test files]
ok      .../vendor/.../evm-lite/src/currency    0.003s
?       .../vendor/.../evm-lite/src/engine      [no test files]
?       .../vendor/.../evm-lite/src/service     [no test files]
ok      .../vendor/.../evm-lite/src/state       3.148s
?       .../vendor/.../evm-lite/src/version     [no test files]

Babble Tests

ok      .../vendor/.../babble/src/babble        0.149s
ok      .../vendor/.../babble/src/common        0.024s
?       .../vendor/.../babble/src/config        [no test files]
?       .../vendor/.../babble/src/crypto        [no test files]
ok      .../vendor/.../babble/src/crypto/keys   0.097s
ok      .../vendor/.../babble/src/hashgraph     11.385s
?       .../vendor/.../babble/src/mobile        [no test files]
ok      .../vendor/.../babble/src/net   0.092s
ok      .../vendor/.../babble/src/node  36.339s
ok      .../vendor/.../babble/src/peers 0.082s
?       .../vendor/.../babble/src/proxy [no test files]
ok      .../vendor/.../babble/src/proxy/dummy   0.038s
ok      .../vendor/.../babble/src/proxy/inmem   0.037s
ok      .../vendor/.../babble/src/proxy/socket  0.043s
?       .../vendor/.../babble/src/proxy/socket/app      [no test files]
?       .../vendor/.../babble/src/proxy/socket/babble   [no test files]
?       .../vendor/.../babble/src/service       [no test files]
?       .../vendor/.../babble/src/version       [no test files]

They will take some seconds to run. If any test fails an error message will be displayed.

End to End Tests

End to end tests are in the subfolder e2e of the repository. All tests can be run using either of the commands below. Note the different paths:

[...]/monetd/e2e$ make tests
[...]/monetd$ make e2e

An individual test can be run as follows:

[...]/monetd/e2e$ make test TEST=crowdfundnet

To prevent the test net being destroyed on completion, add NOSTOP=nostop. This allows you to interrogate the network after the test has completed:

[...]/monetd/e2e$ make test TEST=transfer_03_10 NOSTOP=nostop

Tests output logs to ...monetd/e2e/tests/<TESTNAME>.out

Transfer Tests

As well as standalone tests, the transaction generation tools can be used against extant networks.

You can get the list of options (and defaults) by using the --help or -h option:

$ e2e/tools/build-trans.sh -h
e2e/tools/build-trans.sh [-v] [--accounts=10] [--transactions=200] [--faucet="Faucet"] [--faucet-config-dir=] [--prefix=Test] [--node-name=Node] [--node-host=172.77.5.11] [--node-port=8080] [--config-dir=/home/jon/.monettest] [--temp-dir=/tmp] [-h|--help]
  • -v turns on verbose output
  • –accounts=10 sets the number of accounts to transfer tokens between
  • –transactions=200 sets the number of transactions to generate
  • –faucet=”Faucet” sets the account to fund the transfers
  • –faucet-config-dir= where the faucet account is stored. $HOME/.monet/keystore or $HOME/.giverny/networks/<net name>/keystore are the likely values
  • –prefix=Test is the prefix for the moniker of the accounts for transfers
  • –node-name=Node is the Node Name
  • –node-host=172.77.5.11 is the Node address
  • –node-port=8080 is the port for EVM-Lite endpoints
  • –config-dir=/home/user/.monettest is the config directory to use