#tendermint #testing #blockchain #data-structures

bin+lib tendermint-testgen

tendermint-testgen is a library and a small binary utility for generating tendermint datastructures from minimal input (for testing purposes only). The library also contains some functionality to simplify running test batches

48 releases (23 breaking)

0.40.0 Oct 23, 2024
0.38.1 Jul 23, 2024
0.35.0 Mar 14, 2024
0.34.0 Oct 2, 2023
0.17.0-rc3 Nov 18, 2020

#11 in #tendermint

Download history 908/week @ 2024-08-09 635/week @ 2024-08-16 970/week @ 2024-08-23 1634/week @ 2024-08-30 2274/week @ 2024-09-06 2045/week @ 2024-09-13 2198/week @ 2024-09-20 1993/week @ 2024-09-27 2610/week @ 2024-10-04 1327/week @ 2024-10-11 808/week @ 2024-10-18 549/week @ 2024-10-25 940/week @ 2024-11-01 577/week @ 2024-11-08 494/week @ 2024-11-15 346/week @ 2024-11-22

2,406 downloads per month
Used in 13 crates (12 directly)

Apache-2.0

630KB
14K SLoC

tendermint-testgen

Crate Docs Build Status Apache 2.0 Licensed Rust Stable

tendermint-testgen is a small utility for producing Tendermint data structures from minimal input (for testing purposes only).

Requirements

  • Latest Rust stable

Usage

# Show usage information for tendermint-testgen
cargo run -- --help

# Show usage about a particular command
cargo run -- --help CMD

As an example, a Tendermint validator can be produced only from an identifier, or a Tendermint header only from a set of validators.

The parameters can be supplied in two ways:

  • via STDIN: in that case they are expected to be a valid JSON object, with each parameter being a field of this object
  • via command line arguments to the specific command.

If a parameter is supplied both via STDIN and CLI, the latter is given preference.

In case a particular data structure can be produced from a single parameter (like validator), there is a shortcut that allows to provide this parameter directly via STDIN, without wrapping it into JSON object. E.g., in the validator case, the following commands are all equivalent:

tendermint-testgen validator --id a --voting-power 3
echo -n '{"id": "a", "voting_power": 3}' | tendermint-testgen --stdin validator
echo -n a | tendermint-testgen --stdin validator --voting-power 3
echo -n '{"id": "a"}' | tendermint-testgen --stdin validator --voting-power 3
echo -n '{"id": "a", "voting_power": 100}' | tendermint-testgen --stdin validator --voting-power 3

The result is:

{
  "address": "730D3D6B2E9F4F0F23879458F2D02E0004F0F241",
  "pub_key": {
    "type": "tendermint/PubKeyEd25519",
    "value": "YnT69eNDaRaNU7teDTcyBedSD0B/Ziqx+sejm0wQba0="
  },
  "voting_power": "3",
  "proposer_priority": null
}

License

Copyright © 2020 Informal Systems

Licensed under the Apache License, Version 2.0 (the "License"); you may not use the files in this repository except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Dependencies

~8–17MB
~265K SLoC