-
Notifications
You must be signed in to change notification settings - Fork 68
Early API Node testing for Leap 5.0.0
Thank you for contributing to Leap Testing to ensure quality and a smooth rollout process. Leap v5.0.0 is packed with features, so we are taking several passes at testing to reduce the risks that such a large release creates.
NOTE: Due to updates Early Access Releases will need to be started from a snapshot Starting from an existing shared_memory.bin
will not work.
For this round of testing our goal is to test read only transactions. Since read only transactions are not relevant to block producer nodes, we can test on API nodes.
We'll be testing the following features:
- Read-only Transactions
- EOS VM OC
- Reduced Chainbase Size
- Prometheus Metrics
- Libary Upgrades (Boost, C++)
- P2P improvements ?? (need to check: sync, connections)
By exercising these features via the following test plan, we hope to confirm the following expectations:
- nodeos is stable (no crashes)
- nodeos has lower overall cpu utilization
- nodeos has smaller resident memory size
- nodeos has smaller chainbase size
- nodeos handles high quantity of simultaneous read only transactions
- OS: ubunutu 22.04
- Snapshot: need to start from snapshot Recommendation for early access; however earlier versions of ubunutu are supported
-
Copy the following Test Report Template:
- pre-5.0.0 version
- release version:
- baseline
- resident memory size:
- chainbase size:
- nodeos cpu utilization:
- Wharfkit & Wharf test suite
- correctness test: Remove mock data and re-run tests on new api node. Expect all tests should pass.
- note: some tests may have assumptions in mock data and fail. Failed tests will need to be reviewed.
- Early Testing Version
- tag name:
API-early-v5.0-b73c28d51
- baseline
- resident memory size:
- chainbase size:
- nodeos cpu utilization:
- Any crashes?
- Wharfkit & Wharf test suite
- correctness test: Remove mock data and re-run tests on new api node. Expect all tests should pass.
- during low read-only thread count test
- nodeos cpu utilization:
- Any crashes?
- during high read-only thread count test
- nodeos cpu utilization
- Any crashes?
- tag name:
- pre-5.0.0 version
-
Pre-5.0.0 version
With an API node with a pre-5.0.0 version:
-
Document the Baseline Scenario
- Ascertain Resident Memory Size
- Ascertain Chainbase Size
- Ascertain CPU utilization
- Document in your Test Report
-
Run the Wharfkit & Wharf test suite
- Run WharfKit + Wharf Antelope Core tests
- Ascertain Resident Memory Size
- Ascertain Chainbase Size
- Ascertain CPU utilization
- Document in your Test Report
-
-
Early Testing Version
With an API node running an Early Testing Version of Leap v5.0.0:
-
Document the Baseline Scenario
- Ascertain Resident Memory Size
- Ascertain Chainbase Size
- Ascertain CPU utilization
- Document in your Test Report
-
Run the Wharfkit & Wharf test suite
- Run WharfKit + Wharf Antelope Core tests
- Ascertain Resident Memory Size
- Ascertain Chainbase Size
- Ascertain CPU utilization
- Document in your Test Report
-
Low read-only thread counts
- set
read-only-threads = 32
- Spam network with read-only transactions (get-block, get-info)
- Ascertain CPU utilization
- Document in your Test Report
- set
-
High read-only thread counts
- set
read-only-threads = 256
- Spam network with read-only transactions (get-block, get-info)
- Ascertain CPU utilization
- Document in your Test Report
- set
-
Custom read-only contracts
- Deploy custom read-only contract (example)
- Spam network with transactions containing your custom read-only actions
- Ascertain CPU utilization
- Document in your Test Report
-
Auto EOS-VM-OC
- set
eos-vm-oc-enable = auto
- Spam network with system contract transactions
- Ascertain CPU utilization
- Document in your Test Report
- set
-
- take a snapshot
- backup your configuration
- build leap from source with tag API-early-v5.0-b73c28d51
- install updated software from build
- set
read-only-threads = 32
confirm settingread-only-read-window-time-us = 165000
confirm settingenable-account-queries = true
- restore from snapshot
At this time only unpinned builds are tested. Follow the instructions on the Leap Readme, with the following modifications to pull the specified tag.
-
Step 1.
git clone https://github.com/antelopeIO/leap.git --branch API-early-v5.0-b73c28d51 --single-branch
-
Step 2. Follow instructions. Do not checkout any tags. Do run
git submodule update --init --recursive
- Step 3. Follow unpinned build instructions
- Step 4. Follow instructions for testing
- Step 5. Follow instructions for installation
- RSS: Resident Memory Size
- VSZ: Virtual Set Size
> ps -o pid,user,vsz,rss,comm,args -p 1831038 1831042 1831045
PID USER VSZ RSS COMMAND COMMAND
1831038 eric 4515168016 36008 nodeos nodeos
1831042 eric 1113320 2360 oc-monitor nodeos
1831045 eric 64744 2360 oc-trampoline nodeos
-
Ensure the following plugins are activated:
- eosio::http_plugin
- eosio::chain_plugin
- eosio::db_size_api_plugin
-
Make a call to
db_size
to find the current utilized space
http://api.example.com:8888/v1/db_size/get
Note: Many tests will fail. Not recommended to run this test suit.
- Node and NPM https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
- Classic Yarn https://classic.yarnpkg.com/lang/en/docs/install/
- Make
sudo apt install cmake
- Get the code
git clone https://github.com/wharfkit/antelope
- Remove the mock data
rm test/data/*.json
- Build by running
make
- Update endpoints for testing. Change line 14 in
test/utils/mock-provider.ts
to match desired endpoint - set env
export MOCK_PROVIDER=overwrite
- run tests
make test