Common tests for Kaia clients.
You can build the documents html under docs directory:
$ make html
Since this test suite is ported from https://github.com/ethereum/tests, you can also refer to Ethereum's documentation http://ethereum-tests.readthedocs.io/ although the content may not be the same.
Test files in the folders below are currently used for testing:
- BlockchainTests
- GeneralStateTests
- RLPTests
- TransactionTests
- VMTests
NOTE: Originally BlockchainTests, GeneralStateTests, TransactionTests, and VMTests were created by the testFillers which could be found at https://github.com/ethereum/cpp-ethereum/tree/develop/test/tools/jsontests at src folder. However, Kaia tests currently cannot use the testFillers. We will make our own filler specification and testFillers.
To use this test set, you need to clone this repository or make a symbolic link
inside tests of https://github.com/kaiachain/kaia/ as testdata.
For details, see https://github.com/kaiachain/kaia/blob/main/tests/README.md.
NOTE: The content in this section may not be valid.
All files should be of the form:
{
"test1name":
{
"test1property1": ...,
"test1property2": ...,
...
},
"test2name":
{
"test2property1": ...,
"test2property2": ...,
...
}
}
Arrays are allowed, but don't use them for sets of properties - only use them for data that is clearly a continuous contiguous sequence of values.
Several basic checks against the test-set are performed to ensure that they have been filled and are formatted correctly. Currently, there are three types of checks that we can perform:
make TEST_PREFIX.format: check that the JSON is formatted correctly.make TEST_PREFIX.valid: check that the JSON files are valid against the JSON schemas in./JSONSchema.make TEST_PREFIX.filled: check that the JSON tests are filled with the correct source hashes against the fillers.
The constant TEST_PREFIX is a path prefix to the test-set you're interested
in performing the checks on. For instance:
make ./src/VMTestsFiller/vmArithmeticTest.formatwill check that all JSON files in./src/VMTestsFiller/vmArithmeticTestare formatted correctly.make ./src.validwill check that all the JSON files in./srcare valid against the JSON schemas in./JSONSchema.make ./BlockchainTests.filledwill check that the source hashes in the JSON tests in./BlockchainTestsare the same as the hashes of the fillers in./src/BlockchainTestsFiller.
These checks are all performed by the file ./test.py, which can be invoked on
individual files as well. Run ./test.py with no arguments for help.
The above checkers are packaged together into sanitizers for each test-suite,
marking which testsuites are passing which testers.
See the TODOs in the Makefile to see which checkers are enabled for which test-suites.
-
make sani: will run all passing sanitizers on all passing testsuites. -
make sani-TESTNAME: will run just the passing sanitizers for the given testsuite.TESTNAMEcan be one of:vm: VMTests and VMTestsFillergs: GeneralStateTests and GeneralStateTestsFillerbc: BlockchainTests and BlockchainTestsFillertx: TransactionTests and TransactionTestsFiller