btcd/integration/rpctest
Oliver Gugger dd5f3bd513
rpctest: make test TCP ports unique per process
This commit adds a new NextAvailablePortForProcess function that takes a
process ID and then assures unique (non-occupied) port numbers are
returned per process.
This uses a temporary file that contains the latest used port and a
secondary temporary lock file to assure only a single goroutine can
request a new port at a time.

The GenerateProcessUniqueListenerAddresses is intened to be used as a
package-level override for the ListenAddressGenerator variable. We don't
use it by default to make sure we don't break any existing assumptions.
2023-12-21 09:42:09 +01:00
..
blockgen.go blockchain, rpctest, mining, main: replace usage of BuildMerkleTreeStore with CalcMerkleRoot 2023-08-04 00:02:26 +09:00
btcd.go integration/rpctest: make exec path compatible with modules 2018-11-29 15:13:37 +01:00
doc.go rpctest: Make subpackage of integration. 2017-05-11 15:17:29 -05:00
memwallet.go multi: switch project over to using btcec/v2 2022-01-26 16:10:17 -08:00
node.go rpctest: fix test node directory 2023-12-21 08:20:28 +01:00
README.md docs: update shields 2021-03-05 07:45:19 -05:00
rpc_harness.go rpctest: make test TCP ports unique per process 2023-12-21 09:42:09 +01:00
rpc_harness_test.go multi: Run gofmt on the entire repository 2023-06-21 22:31:09 +09:00
utils.go Add Batch JSON-RPC support (rpc client & server) 2021-02-09 09:47:46 -05:00

rpctest

Build Status ISC License GoDoc

Package rpctest provides a btcd-specific RPC testing harness crafting and executing integration tests by driving a btcd instance via the RPC interface. Each instance of an active harness comes equipped with a simple in-memory HD wallet capable of properly syncing to the generated chain, creating new addresses, and crafting fully signed transactions paying to an arbitrary set of outputs.

This package was designed specifically to act as an RPC testing harness for btcd. However, the constructs presented are general enough to be adapted to any project wishing to programmatically drive a btcd instance of its systems/integration tests.

Installation and Updating

$ go get -u github.com/btcsuite/btcd/integration/rpctest

License

Package rpctest is licensed under the copyfree ISC License.