Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PH -> main] Performance Harness MVP [PH] #350

Merged
merged 319 commits into from
Dec 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
319 commits
Select commit Hold shift + click to select a range
cace23e
Merge pull request #45 from AntelopeIO/ph_add_tps_tester
ndcgundlach Aug 26, 2022
c2e02ac
address PR comments about fstrings and type conversion
ClaytonCalabrese Aug 26, 2022
8c3c89f
change blockId variable to better reflect what it actually is.
ClaytonCalabrese Aug 26, 2022
8495376
rename trxResult to actually fit what is is a result of, a block
ClaytonCalabrese Aug 26, 2022
b84603a
update regex parsing in performance_test_basic to handle the old vers…
ClaytonCalabrese Aug 26, 2022
5af29f7
Merge pull request #40 from AntelopeIO/performance_harness_create_dat…
ClaytonCalabrese Aug 29, 2022
55f1fe4
use from_variant to determine logging_level in less code
ClaytonCalabrese Aug 29, 2022
cb0107c
added trx_generator to cmake
ndcgundlach Aug 30, 2022
53b8f6d
added check for null monitor
ndcgundlach Aug 30, 2022
89bc704
removed code from main and put in trx_generator
ndcgundlach Aug 30, 2022
6ad75b6
fixed member variable being hidden by local variable
ndcgundlach Aug 31, 2022
99b9b47
modified rate test to look at return value from generate and send call
ndcgundlach Aug 31, 2022
97a6a96
Merge pull request #50 from AntelopeIO/performance_harness_cluster_co…
ClaytonCalabrese Aug 31, 2022
ede1177
Merge pull request #81 from AntelopeIO/ph_main_refactor
ndcgundlach Aug 31, 2022
ec4ff67
Merge branch 'main' into update_to_test_harness_python_package
oschwaldp-oci Sep 1, 2022
8dee4b1
Update import for new TestHarness package
oschwaldp-oci Sep 1, 2022
d4bb984
add script to scrap data from nodeos logs. Separate out helper functi…
ClaytonCalabrese Sep 1, 2022
c866641
added tps_performance_monitor
ndcgundlach Sep 6, 2022
dbf4089
added tests for tps_performance_monitor
ndcgundlach Sep 6, 2022
c10b971
Merge branch 'feature_performance_harness' into ph_txn_performance_mo…
ndcgundlach Sep 6, 2022
d5c0aeb
Rename some functions and move waitForEmptyBlocks back to test where …
ClaytonCalabrese Sep 6, 2022
c49a7fa
added case to check for lag start resetting
ndcgundlach Sep 6, 2022
bd250c6
Merge pull request #110 from AntelopeIO/ph_txn_performance_monitor
ndcgundlach Sep 7, 2022
73dcde5
added option to pass ceaseBlock to read_log_data
ClaytonCalabrese Sep 7, 2022
f6b1c2d
Change from checking == to is for None comparison
ClaytonCalabrese Sep 7, 2022
fe38c8a
Merge pull request #92 from AntelopeIO/update_to_test_harness_python_…
oschwaldp-oci Sep 7, 2022
bad58ad
merge from parent
ClaytonCalabrese Sep 7, 2022
1aebbbf
Merge pull request #100 from AntelopeIO/performance_harness_separate_…
ClaytonCalabrese Sep 7, 2022
1f2d832
Create a test to ensure Nodeos log scraping works as expected.
ClaytonCalabrese Sep 8, 2022
036d1cf
Rework nodeos_log_scraping_test and add old logging form to test.
ClaytonCalabrese Sep 9, 2022
86a4a50
name nodeos logs after their patch number. Add explicit defaults in t…
ClaytonCalabrese Sep 9, 2022
7623065
added creation of and parameters for tps_performance_monitor
ndcgundlach Sep 12, 2022
fb297c1
Merge branch 'feature_performance_harness' into ph_integrate_performa…
ndcgundlach Sep 12, 2022
14ae5df
fixes to trx_generator param and added validation
ndcgundlach Sep 12, 2022
658ce50
Merge pull request #129 from AntelopeIO/nodeos_log_scraping_test
ClaytonCalabrese Sep 12, 2022
bcab396
Merge pull request #140 from AntelopeIO/ph_integrate_performance_monitor
ndcgundlach Sep 12, 2022
8931260
Add TPS scoring including min, max, average, and standard deviation u…
oschwaldp-oci Sep 12, 2022
3c6bc1d
Update to better use python idioms and libraries. Add minor inline do…
oschwaldp-oci Sep 13, 2022
c92cb04
Some whitespace cleanup.
oschwaldp-oci Sep 13, 2022
708ef81
Some addl whitespace cleanup.
oschwaldp-oci Sep 13, 2022
366fa37
Merge pull request #147 from AntelopeIO/implement-tps-scoring
oschwaldp-oci Sep 13, 2022
fafa357
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Sep 14, 2022
77f84d2
improved logging on test failure
ndcgundlach Sep 14, 2022
55455cb
Merge branch 'feature_performance_harness' into ph_improved_logging
ndcgundlach Sep 14, 2022
2b5b06a
Make duration and tps configurable to python test script.
oschwaldp-oci Sep 14, 2022
ace914e
Add numpy dependency installation to Dockerfile for ubuntu20
oschwaldp-oci Sep 14, 2022
22446a0
Need to install python3-pip first.
oschwaldp-oci Sep 14, 2022
2a5dd76
Merge pull request #161 from AntelopeIO/fix_numpy_dependency_ubuntu20
oschwaldp-oci Sep 14, 2022
7abb8b6
Merge branch 'feature_performance_harness' into update_test_config
oschwaldp-oci Sep 14, 2022
b568684
Merge branch 'feature_performance_harness' into ph_improved_logging
ndcgundlach Sep 14, 2022
abac6b7
allow exporting of data from numpy analysis to json for later consump…
ClaytonCalabrese Sep 14, 2022
b2996c6
Provide genesis.json file for performance harness
oschwaldp-oci Sep 14, 2022
d159aaf
Update max-transaction-cpu-usage per peer review.
oschwaldp-oci Sep 14, 2022
fefbc5a
rewrite exportAsJSON to use a json object rather than string. Get nod…
ClaytonCalabrese Sep 14, 2022
57d7331
don't assume location of nodeos in exportAsJSON
ClaytonCalabrese Sep 14, 2022
d4c60a0
Increase max block net usage.
oschwaldp-oci Sep 15, 2022
fbb0f5d
Clean up argument.
oschwaldp-oci Sep 15, 2022
7617245
Merge pull request #159 from AntelopeIO/ph_improved_logging
ndcgundlach Sep 15, 2022
b8cddd0
Have help display defaults by default.
oschwaldp-oci Sep 15, 2022
48537e6
Merge pull request #160 from AntelopeIO/update_test_config
oschwaldp-oci Sep 15, 2022
f5e1261
added early termination status
ndcgundlach Sep 16, 2022
071e359
address PR comments concerning how nodeos version is obtained and add…
ClaytonCalabrese Sep 16, 2022
7e5c3f4
performance stats json: provide default path and make path settable r…
ClaytonCalabrese Sep 16, 2022
6c58ca3
Add testing around TPS scoring implementation.
oschwaldp-oci Sep 16, 2022
926964f
allow both the option to save logs and the path
ClaytonCalabrese Sep 16, 2022
55acfd1
fix format of arguments
ClaytonCalabrese Sep 16, 2022
7bbf911
added error code handling for python script
ndcgundlach Sep 19, 2022
f5953b8
Merge pull request #177 from AntelopeIO/ph_early_termination_status
ndcgundlach Sep 19, 2022
bef7f34
Merge pull request #181 from AntelopeIO/ph_tps_scoring_test
oschwaldp-oci Sep 19, 2022
8f0a22e
merge from origin and resolve conflict
ClaytonCalabrese Sep 19, 2022
a4dcb35
merge again from origin branch and resolve conflicts.
ClaytonCalabrese Sep 19, 2022
93fb1f7
Break out chain data section knowledge into chainGuide.
oschwaldp-oci Sep 20, 2022
6039acd
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Sep 20, 2022
eff8cf3
Merge branch 'feature_performance_harness' into ph-blocks-data-sep
oschwaldp-oci Sep 20, 2022
7bc7c4d
Update ubuntu22 to install numpy
oschwaldp-oci Sep 20, 2022
a3795d7
Update ubuntu18 to install numpy
oschwaldp-oci Sep 20, 2022
ba38c3f
Update ubuntu18 to install numpy
oschwaldp-oci Sep 20, 2022
6db64d5
Update ubuntu18 to install python3 dataclasses
oschwaldp-oci Sep 20, 2022
9210f04
Use float for avg and std deviation for additional needed procision.
oschwaldp-oci Sep 20, 2022
7e36408
Install numpy and dataclasses where necessary in docker builds.
oschwaldp-oci Sep 20, 2022
338fd61
Fix whitespace.
oschwaldp-oci Sep 20, 2022
0de1447
Fix whitespace.
oschwaldp-oci Sep 20, 2022
2b9c201
Merge pull request #164 from AntelopeIO/performance_harness_export_json
oschwaldp-oci Sep 21, 2022
53324fc
Merge branch 'feature_performance_harness' into ph-blocks-data-sep
oschwaldp-oci Sep 21, 2022
0bcb481
Update report format. Allow report creation separate from writing to …
oschwaldp-oci Sep 22, 2022
6d20226
Merge pull request #193 from AntelopeIO/ph-blocks-data-sep
oschwaldp-oci Sep 22, 2022
609fadc
initial changes to setup multiple transaction generators.
ClaytonCalabrese Sep 22, 2022
ef6000c
Improve performance_test_basic. Solve failure. Add seperate script fo…
ClaytonCalabrese Sep 23, 2022
3178edf
code review to address formatting of code.
ClaytonCalabrese Sep 23, 2022
dd755d8
adopt a indentation style for python involving multiple line function…
ClaytonCalabrese Sep 23, 2022
2ff87c6
Add calculating and reporting on block size over time during test.
oschwaldp-oci Sep 26, 2022
2907e20
Use Ubuntu python3-numpy package instead of installing through pip
oschwaldp-oci Sep 26, 2022
21b3152
Merge pull request #233 from AntelopeIO/migrate-numpy-ubuntu-pkg
oschwaldp-oci Sep 26, 2022
8c0fc29
cause trx_generators to exit upon sigint, handle log checking inside …
ClaytonCalabrese Sep 26, 2022
1c6030e
Update tests/performance_tests/log_reader.py
oschwaldp-oci Sep 27, 2022
aa13c29
Merge pull request #237 from AntelopeIO/performance_harness_graceful_…
ClaytonCalabrese Sep 27, 2022
acc5ca7
Merge branch 'feature_performance_harness' into ph-block-size
oschwaldp-oci Sep 27, 2022
4b28484
Merge branch 'ph-block-size' of https://github.com/AntelopeIO/leap in…
oschwaldp-oci Sep 27, 2022
ebfb739
Add space for formatting in launch_transaction_generators.py
ClaytonCalabrese Sep 27, 2022
5b1f23e
Merge pull request #232 from AntelopeIO/ph-block-size
oschwaldp-oci Sep 27, 2022
c0c85a7
lower expectations for performance_test_basic in CI
ClaytonCalabrese Sep 27, 2022
43555bd
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Sep 27, 2022
da66222
Merge branch 'feature_performance_harness' into performance_harness_m…
oschwaldp-oci Sep 28, 2022
b172da3
Merge pull request #213 from AntelopeIO/performance_harness_multiple_…
ClaytonCalabrese Sep 28, 2022
b5d1914
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Sep 28, 2022
bb50177
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Sep 29, 2022
c5b07a3
allow node specific customization of logging levels via cluster
ClaytonCalabrese Sep 29, 2022
4835a04
Merge branch 'feature_performance_harness' into performance_harness_p…
ClaytonCalabrese Sep 29, 2022
1488693
adjust test expectations until missing transactions are resolved.
ClaytonCalabrese Sep 30, 2022
682ad39
revert expectations change due for performance_test_basic, as it was …
ClaytonCalabrese Sep 30, 2022
3595e22
Log trx provider's sent transactions and timestamps to new log direct…
oschwaldp-oci Sep 30, 2022
e19956d
Calculate trx latency stats.
oschwaldp-oci Sep 30, 2022
f7d5ec9
Address peer review comments.
oschwaldp-oci Oct 3, 2022
40305a5
Peer review comments.
oschwaldp-oci Oct 3, 2022
fa2c414
Don't log all the transactions if not found. Simply notify of total.
oschwaldp-oci Oct 3, 2022
5046384
Log total trx sent when reporting number lost
oschwaldp-oci Oct 3, 2022
260bfa9
adress pr comments to change how space stripping works, and give an e…
ClaytonCalabrese Oct 3, 2022
e873a07
Updates to better structure log dirs and make compatible with read_lo…
oschwaldp-oci Oct 4, 2022
344a30f
Remove sleep. Vestige of earlier dev testing.
oschwaldp-oci Oct 5, 2022
05024c3
Move canonical handling of logs to calculate stats and create a perfo…
oschwaldp-oci Oct 5, 2022
23fc3b7
Calculatue trx cpu and net stats and add to report.
oschwaldp-oci Oct 5, 2022
0f51325
Merge pull request #261 from AntelopeIO/performance_harness_per_node_…
ClaytonCalabrese Oct 5, 2022
384efd1
Merge branch 'feature_performance_harness' into ph-trx-latency
oschwaldp-oci Oct 5, 2022
2eb7b36
Merge pull request #267 from AntelopeIO/ph-trx-latency
oschwaldp-oci Oct 5, 2022
ee30a68
Merge pull request #285 from AntelopeIO/ph-addl-trx-stats
oschwaldp-oci Oct 5, 2022
94c6fd6
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Oct 5, 2022
cb4e466
Rework performance_test_basic.py to work as an import module and as a…
oschwaldp-oci Oct 6, 2022
286ef41
print some additional parameters in performance harness
ClaytonCalabrese Oct 7, 2022
11179c7
Fix up formatting to break up long lines.
oschwaldp-oci Oct 7, 2022
021307f
Add performance_test.py to run performance basic test scenarios to de…
oschwaldp-oci Oct 11, 2022
8a832b0
Add function that takes a list of transactions and examines a number …
ClaytonCalabrese Oct 12, 2022
35ff309
Updates from peer review.
oschwaldp-oci Oct 12, 2022
9d5e0f2
Fix log dir cleanup to honor save json reports.
oschwaldp-oci Oct 12, 2022
73e4b84
Fix edge case in search algorithm causing infinite test loop.
oschwaldp-oci Oct 13, 2022
b78f465
Report env and nodeos version.
oschwaldp-oci Oct 13, 2022
4c7ca03
remove uncessecary imports from log_reader.py
ClaytonCalabrese Oct 13, 2022
4ea4f5c
update waitOnBlockTransactions based off PR feedback. Fix a number of…
ClaytonCalabrese Oct 13, 2022
7e9117e
Cleanup & Organized imports and from imports.
oschwaldp-oci Oct 14, 2022
deb1fe1
Merge pull request #304 from AntelopeIO/performance_harness_additiona…
ClaytonCalabrese Oct 17, 2022
84c2732
Merge branch 'feature_performance_harness' into ph-runner
oschwaldp-oci Oct 17, 2022
8471ed7
rename some variables so that waitForTransactionsInBlockRange reads e…
ClaytonCalabrese Oct 17, 2022
d45d5b0
Address peer review comments. Use local helper functions to alleviate…
oschwaldp-oci Oct 18, 2022
dab4422
Address peer review comment. Use dictionary comprehension.
oschwaldp-oci Oct 18, 2022
c0ddbf9
refactor maxFutureBlocks in waitForTransactionsInBlockRange
ClaytonCalabrese Oct 18, 2022
97711cb
Simplify loop condition as well as fixup binary search algorithm a bit.
oschwaldp-oci Oct 18, 2022
01589aa
Merge pull request #314 from AntelopeIO/performance_harness_waitOnBlo…
ClaytonCalabrese Oct 18, 2022
fc5a91e
Use standard library function to same effect.
oschwaldp-oci Oct 19, 2022
c080290
Merge pull request #302 from AntelopeIO/ph-runner
oschwaldp-oci Oct 19, 2022
9a28459
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Oct 19, 2022
c4120f1
Begin to document Performance Harness in README
oschwaldp-oci Oct 19, 2022
2de701f
Additional details and clarifications.
oschwaldp-oci Oct 19, 2022
e96ea2a
Added Transaction Generator README
oschwaldp-oci Oct 19, 2022
b641304
Addressing peer review comments.
oschwaldp-oci Oct 19, 2022
f7aff36
Addressing peer review comments.
oschwaldp-oci Oct 19, 2022
1ffe1cc
Update build and test instructions in README for additional python de…
oschwaldp-oci Oct 19, 2022
7a11caa
Addressing additional peer review comments.
oschwaldp-oci Oct 20, 2022
7dc550c
Add start and end times to test reports.
oschwaldp-oci Oct 20, 2022
df911b7
Add option to quiet reporting from performance tests.
oschwaldp-oci Oct 20, 2022
395516e
Merge pull request #352 from AntelopeIO/ph-docs
oschwaldp-oci Oct 20, 2022
705d030
Add feature to enable/disable trace_api_plugin on producer nodes.
oschwaldp-oci Oct 25, 2022
0bcd49e
Fix spelling.
oschwaldp-oci Oct 25, 2022
35e689d
Fix loggingDict to be an instance field.
oschwaldp-oci Oct 25, 2022
458e2a1
Update boolean command line arguments to use add_bool.
oschwaldp-oci Oct 25, 2022
8ade49c
Use dict (report) and datetime (testStart, testFinish) types as long …
oschwaldp-oci Oct 25, 2022
38f4076
Define the node id for the validation node in the test to reuse throu…
oschwaldp-oci Oct 26, 2022
5ffdb64
Use same time for testStart and timestamp for test logs dir.
oschwaldp-oci Oct 26, 2022
34e5857
Use same time for testStart and timestamp for test logs dir.
oschwaldp-oci Oct 26, 2022
bd95fbc
Fix initialization of node ids to be earlier for use in create accounts.
oschwaldp-oci Oct 26, 2022
59a7a16
Update docs for new feature arguments.
oschwaldp-oci Oct 26, 2022
fe596e7
Merge pull request #360 from AntelopeIO/ph-report-start-end-times
oschwaldp-oci Oct 26, 2022
2da71f4
Merge branch 'feature_performance_harness' into ph-quiet-reporting
oschwaldp-oci Oct 26, 2022
68ee2ea
Update to dynamically calculate validation node id.
oschwaldp-oci Oct 26, 2022
3e902f4
Merge pull request #361 from AntelopeIO/ph-quiet-reporting
oschwaldp-oci Oct 26, 2022
097e64e
Correct documentation on transfers.
oschwaldp-oci Oct 26, 2022
f4b7ab2
Correct documentation and help strings to correctly identify keosd.
oschwaldp-oci Oct 26, 2022
d72cd0c
Update default test durations to something higher for more reasonable…
oschwaldp-oci Oct 26, 2022
f2e88d4
Include testAnalysisBlockCnt in search scenario summary.
oschwaldp-oci Oct 26, 2022
f2cbb7a
Merge pull request #385 from AntelopeIO/ph-config-prod-trace-api
oschwaldp-oci Oct 26, 2022
8943e61
Merge pull request #387 from AntelopeIO/ph-test-updates
oschwaldp-oci Oct 26, 2022
a925c90
Performance Test Long Duration Tests now use linearly decrementing se…
oschwaldp-oci Oct 26, 2022
f50a1f4
For initial binary search, try a short run using ceiling tps first.
oschwaldp-oci Oct 26, 2022
9913824
Re-order items in report to be more in line with how one would read t…
oschwaldp-oci Oct 26, 2022
987134a
Merge pull request #391 from AntelopeIO/ph-long-running-use-linear-se…
oschwaldp-oci Oct 26, 2022
d7116c0
Add argument --del-perf-logs to control perf harness log lifetime.
oschwaldp-oci Oct 26, 2022
27e1e07
Dynamically determine the location of the validation node's log file.
oschwaldp-oci Oct 27, 2022
905c685
Capture low level artifacts into performance test log directories.
oschwaldp-oci Oct 27, 2022
57b9465
Default to saving test reports.
oschwaldp-oci Oct 27, 2022
257fa0d
change from wait for empty blocks to waiting for generated transactio…
ClaytonCalabrese Oct 27, 2022
9be93bf
fix a bug in waitForTransactionsInBlockRange when None is the wait
ClaytonCalabrese Oct 27, 2022
cf19cac
Fix conflicting needs for low level logs.
oschwaldp-oci Oct 27, 2022
14fa915
Begin refactoring launch_transaction_generators.py into an import mod…
oschwaldp-oci Oct 27, 2022
ddd7c7a
Make use of import module to launch trx generators.
oschwaldp-oci Oct 27, 2022
60bbd3a
address peer feedback on performance test wait for trx
ClaytonCalabrese Oct 27, 2022
a902785
Merge pull request #398 from AntelopeIO/perf_harness_wait_transaction…
ClaytonCalabrese Oct 28, 2022
a0cb06e
Remove unused function.
oschwaldp-oci Oct 28, 2022
8e7cf9c
Factor out TpsTrxGensConfig to allow numGenerators and list of each g…
oschwaldp-oci Oct 28, 2022
abc5c41
Address peer review comments.
oschwaldp-oci Oct 28, 2022
dab2d3b
Merge pull request #393 from AntelopeIO/ph-default-keep-logs
oschwaldp-oci Nov 3, 2022
e4b9690
Merge branch 'feature_performance_harness' into ph-launch-trx-gens-up…
oschwaldp-oci Nov 3, 2022
218e27e
Merge pull request #402 from AntelopeIO/ph-launch-trx-gens-updates
oschwaldp-oci Nov 3, 2022
c8501e7
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Nov 4, 2022
17218ec
Merge pull request #445 from AntelopeIO/ph-merge-main
oschwaldp-oci Nov 4, 2022
695f9e1
Add support for additional producer configuration.
oschwaldp-oci Nov 4, 2022
1b3ef36
Update documentation for updates to launch transaction generators scr…
oschwaldp-oci Nov 4, 2022
2fcd2f1
Consolidate some of the arguments to log_reader.py's calcAndReport
oschwaldp-oci Nov 4, 2022
2982ba9
Update to use disable-subjective-billing.
oschwaldp-oci Nov 7, 2022
4495867
Merge pull request #446 from AntelopeIO/ph-prod-node-config-updates
oschwaldp-oci Nov 7, 2022
05d107b
Merge pull request #447 from AntelopeIO/ph-consolidate-args
oschwaldp-oci Nov 7, 2022
3151be3
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Nov 7, 2022
080aefd
Remove --dump-error-detail option now that logs are automatically col…
oschwaldp-oci Nov 9, 2022
113fcdb
Fix links to test report sections.
oschwaldp-oci Nov 9, 2022
8b36f61
Merge pull request #453 from AntelopeIO/ph-rm-err-det-dump
oschwaldp-oci Nov 9, 2022
a2ace63
Merge pull request #454 from AntelopeIO/ph-fix-readme-links
oschwaldp-oci Nov 9, 2022
4d421ef
Fix links to Build and Install From Source directions.
oschwaldp-oci Nov 9, 2022
27f8039
Merge pull request #455 from AntelopeIO/ph-fix-readme-links
oschwaldp-oci Nov 9, 2022
b438106
Fix indentation.
oschwaldp-oci Nov 9, 2022
ad06833
Merge pull request #456 from AntelopeIO/ph-readme-updates
oschwaldp-oci Nov 9, 2022
cb690cf
Collapse example directory structure.
oschwaldp-oci Nov 9, 2022
bbacf24
Merge pull request #457 from AntelopeIO/ph-readme-updates
oschwaldp-oci Nov 9, 2022
68d3b15
Merge branch 'main' into ph-merge-main
oschwaldp-oci Nov 10, 2022
6430f70
Merge pull request #460 from AntelopeIO/ph-merge-main
oschwaldp-oci Nov 10, 2022
4ba4548
Add argument to configure --chain-state-db-size-mb and default to 10GB
oschwaldp-oci Nov 16, 2022
8206a6d
Update docs for new argument.
oschwaldp-oci Nov 16, 2022
ce9b26f
Merge pull request #474 from AntelopeIO/ph-chain-state-db-size
oschwaldp-oci Nov 16, 2022
54931b6
merge from main to include curl replacement.
ClaytonCalabrese Nov 16, 2022
4530c51
Merge pull request #476 from AntelopeIO/perf_harness_curl_replacement
oschwaldp-oci Nov 17, 2022
65c13bd
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Nov 17, 2022
a1e4799
Fix detection of trx generator failing.
oschwaldp-oci Nov 17, 2022
e2746eb
Attempt to lower trx gen limit for cicd ubuntu 18 machine.
oschwaldp-oci Nov 17, 2022
93d33db
Merge pull request #489 from AntelopeIO/ph-fix-trx-gen-err-detection
oschwaldp-oci Nov 17, 2022
2576877
Remove argument to disable resmon shutdown.
oschwaldp-oci Nov 18, 2022
8d25f21
Merge pull request #496 from AntelopeIO/ph-remove-res-mon-argument
oschwaldp-oci Nov 18, 2022
7a90c93
Remove try catch which aren't doing anything besides throwing
ClaytonCalabrese Nov 28, 2022
c00d71f
Merge pull request #514 from AntelopeIO/performance_harness_remove_th…
ClaytonCalabrese Nov 28, 2022
b239f06
Merge branch 'main' into ph-main-merge
oschwaldp-oci Nov 29, 2022
8d1e967
Merge pull request #519 from AntelopeIO/ph-main-merge
oschwaldp-oci Nov 29, 2022
8b9a98c
Update response order and truncate when printing.
oschwaldp-oci Nov 30, 2022
6bbc91b
Merge pull request #522 from AntelopeIO/ph-truncate-verbose-response
oschwaldp-oci Nov 30, 2022
f89e6a1
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Nov 30, 2022
a4061cb
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Dec 1, 2022
14cf0bf
Decrease tps-limit-per-generator for lower performance vms in CI/CD
oschwaldp-oci Dec 1, 2022
7562f07
Decrease perf expectations for lower performing vms in CI/CD
oschwaldp-oci Dec 1, 2022
72a6c1b
Decrease perf expectations for lower performing vms in CI/CD
oschwaldp-oci Dec 1, 2022
0d2ce63
Merge pull request #527 from AntelopeIO/ph-test-tweaking
oschwaldp-oci Dec 1, 2022
46366ce
Decrease perf expectations for lower performing vms in CI/CD
oschwaldp-oci Dec 1, 2022
7df5fc7
Decrease tps-limit-per-generator for lower performance vms in CI/CD
oschwaldp-oci Dec 1, 2022
756bfe9
Decrease target tps for lower performance vms in CI/CD
oschwaldp-oci Dec 1, 2022
94167d1
Merge pull request #528 from AntelopeIO/ph-test-tweaking
oschwaldp-oci Dec 1, 2022
94cc5a9
Merge branch 'main' into feature_performance_harness
oschwaldp-oci Dec 7, 2022
be7640e
Make CI/CD performance_test_basic run less perfomance and more unit t…
oschwaldp-oci Dec 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .cicd/platforms/ubuntu18.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@ RUN apt-get update && apt-get upgrade -y && \
llvm-7-dev \
ninja-build \
python3 \
python3-numpy \
python3-pip \
software-properties-common \
zlib1g-dev \
zstd

RUN python3 -m pip install dataclasses

# GitHub's actions/checkout requires git 2.18+ but Ubuntu 18 only provides 2.17
RUN add-apt-repository ppa:git-core/ppa && apt update && apt install -y git

Expand Down
1 change: 1 addition & 0 deletions .cicd/platforms/ubuntu20.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ RUN apt-get update && apt-get upgrade -y && \
libssl-dev \
llvm-11-dev \
ninja-build \
python3-numpy \
zstd
1 change: 1 addition & 0 deletions .cicd/platforms/ubuntu22.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ RUN apt-get update && apt-get upgrade -y && \
libssl-dev \
llvm-11-dev \
ninja-build \
python3-numpy \
zstd
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ sudo apt-get install -y \
libcurl4-openssl-dev \
libgmp-dev \
libssl-dev \
llvm-11-dev
llvm-11-dev \
python3-numpy
```
To build, make sure you are in the root of the `leap` repo, then run the following command:
```bash
Expand All @@ -165,7 +166,11 @@ sudo apt-get install -y \
libssl-dev \
llvm-7-dev \
python3 \
python3-numpy \
python3-pip \
zlib1g-dev

python3 -m pip install dataclasses
```
You need to build Boost from source on this distribution:
```bash
Expand Down
59 changes: 49 additions & 10 deletions programs/eosio-launcher/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ class eosd_def {
uint16_t http_port;
uint16_t file_size;
string name;
string dex;
tn_node_def* node;
string host;
string p2p_endpoint;
Expand Down Expand Up @@ -425,6 +426,8 @@ struct launcher_def {
string start_script;
std::optional<uint32_t> max_block_cpu_usage;
std::optional<uint32_t> max_transaction_cpu_usage;
std::string logging_level;
std::map<string,fc::log_level> logging_level_map;
eosio::chain::genesis_state genesis_from_file;

void assign_name (eosd_def &node, bool is_bios);
Expand Down Expand Up @@ -505,6 +508,8 @@ launcher_def::set_options (bpo::options_description &cfg) {
("script",bpo::value<string>(&start_script)->default_value("bios_boot.sh"),"the generated startup script name")
("max-block-cpu-usage",bpo::value<uint32_t>(),"Provide the \"max-block-cpu-usage\" value to use in the genesis.json file")
("max-transaction-cpu-usage",bpo::value<uint32_t>(),"Provide the \"max-transaction-cpu-usage\" value to use in the genesis.json file")
("logging-level",bpo::value<string>(),"Provide the \"level\" value to use in the logging.json file ")
("logging-level-map",bpo::value<string>(),"String of a dict which specifies \"level\" value to use in the logging.json file for specific nodes, matching based on node number. Ex: {\"bios\":\"off\",\"00\":\"info\"}")
;
}

Expand Down Expand Up @@ -566,6 +571,21 @@ launcher_def::initialize (const variables_map &vmap) {
max_transaction_cpu_usage = vmap["max-transaction-cpu-usage"].as<uint32_t>();
}

if (vmap.count("logging-level")) {
logging_level = vmap["logging-level"].as<string>();
}
if (vmap.count("logging-level-map")) {
string llm_str = vmap["logging-level-map"].as<string>();
auto const regex = std::regex("\"(.*?)\":\"(.*?)\"");
for (auto it = std::sregex_iterator(llm_str.begin(), llm_str.end(), regex); it != std::sregex_iterator(); it++) {
std::smatch sm = *it;
fc::log_level ll;
fc::variant v(sm.str(2));
fc::from_variant(v, ll);
logging_level_map[sm.str(1)] = ll;
}
}

genesis = vmap["genesis"].as<string>();
if (vmap.count("host-map")) {
host_map_file = vmap["host-map"].as<string>();
Expand Down Expand Up @@ -703,12 +723,14 @@ launcher_def::assign_name (eosd_def &node, bool is_bios) {
if (is_bios) {
node.name = "bios";
node_cfg_name = "node_bios";
node.dex = "bios";
}
else {
string dex = next_node < 10 ? "0":"";
dex += boost::lexical_cast<string,int>(next_node++);
node.name = network.name + dex;
node_cfg_name = "node_" + dex;
node.dex = dex;
}
node.config_dir_name = (config_dir_base / node_cfg_name).string();
node.data_dir_name = (data_dir_base / node_cfg_name).string();
Expand Down Expand Up @@ -1146,13 +1168,25 @@ launcher_def::write_logging_config_file(tn_node_def &node) {
if (!bfs::exists(dd)) {
bfs::create_directories(dd);
}
fc::log_level ll = fc::log_level::debug;
if (logging_level != "") {
fc::variant v(logging_level);
fc::from_variant(v, ll);
}

filename = dd / "logging.json";

if (!logging_level_map.empty()) {
auto it = logging_level_map.find(instance.dex);
if (it != logging_level_map.end()) {
ll = it->second;
}
}

bfs::ofstream cfg(filename);
if (!cfg.good()) {
cerr << "unable to open " << filename << " " << strerror(errno) << "\n";
exit (9);
cerr << "unable to open " << filename << " " << strerror(errno) << "\n";
exit (9);
}

auto log_config = fc::logging_config::default_config();
Expand All @@ -1167,49 +1201,49 @@ launcher_def::write_logging_config_file(tn_node_def &node) {
}

fc::logger_config p2p( "net_plugin_impl" );
p2p.level = fc::log_level::debug;
p2p.level = ll;
p2p.appenders.push_back( "stderr" );
if( gelf_enabled ) p2p.appenders.push_back( "net" );
log_config.loggers.emplace_back( p2p );

fc::logger_config http( "http_plugin" );
http.level = fc::log_level::debug;
http.level = ll;
http.appenders.push_back( "stderr" );
if( gelf_enabled ) http.appenders.push_back( "net" );
log_config.loggers.emplace_back( http );

fc::logger_config pp( "producer_plugin" );
pp.level = fc::log_level::debug;
pp.level = ll;
pp.appenders.push_back( "stderr" );
if( gelf_enabled ) pp.appenders.push_back( "net" );
log_config.loggers.emplace_back( pp );

fc::logger_config tt( "transaction_success_tracing" );
tt.level = fc::log_level::debug;
tt.level = ll;
tt.appenders.push_back( "stderr" );
if( gelf_enabled ) tt.appenders.push_back( "net" );
log_config.loggers.emplace_back( tt );

fc::logger_config tft( "transaction_failure_tracing" );
tft.level = fc::log_level::debug;
tft.level = ll;
tft.appenders.push_back( "stderr" );
if( gelf_enabled ) tft.appenders.push_back( "net" );
log_config.loggers.emplace_back( tft );

fc::logger_config tts( "transaction_trace_success" );
tts.level = fc::log_level::debug;
tts.level = ll;
tts.appenders.push_back( "stderr" );
if( gelf_enabled ) tts.appenders.push_back( "net" );
log_config.loggers.emplace_back( tts );

fc::logger_config ttf( "transaction_trace_failure" );
ttf.level = fc::log_level::debug;
ttf.level = ll;
ttf.appenders.push_back( "stderr" );
if( gelf_enabled ) ttf.appenders.push_back( "net" );
log_config.loggers.emplace_back( ttf );

fc::logger_config ta( "trace_api" );
ta.level = fc::log_level::debug;
ta.level = ll;
ta.appenders.push_back( "stderr" );
if( gelf_enabled ) ta.appenders.push_back( "net" );
log_config.loggers.emplace_back( ta );
Expand Down Expand Up @@ -1603,6 +1637,11 @@ launcher_def::launch (eosd_def &instance, string &gts) {
}
}

//Always enable the trace_api_plugin on the bios node
if (instance.name == "bios") {
eosdcmd += "--plugin eosio::trace_api_plugin ";
}

if( add_enable_stale_production ) {
eosdcmd += "--enable-stale-production true ";
add_enable_stale_production = false;
Expand Down
2 changes: 2 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ else()
endif()

add_subdirectory( TestHarness )
add_subdirectory( trx_generator )
add_subdirectory( performance_tests )

find_package(Threads)
add_executable(ship_client ship_client.cpp)
Expand Down
44 changes: 30 additions & 14 deletions tests/TestHarness/Cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class Cluster(object):
# pylint: disable=too-many-arguments
# walletd [True|False] Is keosd running. If not load the wallet plugin
def __init__(self, walletd=False, localCluster=True, host="localhost", port=8888, walletHost="localhost", walletPort=9899
, defproduceraPrvtKey=None, defproducerbPrvtKey=None, staging=False):
, defproduceraPrvtKey=None, defproducerbPrvtKey=None, staging=False, loggingLevel="debug", loggingLevelDict={}):
"""Cluster container.
walletd [True|False] Is wallet keosd running. If not load the wallet plugin
localCluster [True|False] Is cluster local to host.
Expand All @@ -105,6 +105,8 @@ def __init__(self, walletd=False, localCluster=True, host="localhost", port=8888
self.walletHost=walletHost
self.walletPort=walletPort
self.staging=staging
self.loggingLevel=loggingLevel
self.loggingLevelDict=loggingLevelDict
# init accounts
self.defProducerAccounts={}
self.defproduceraAccount=self.defProducerAccounts["defproducera"]= Account("defproducera")
Expand Down Expand Up @@ -166,7 +168,8 @@ def setAlternateVersionLabels(self, file):
# pylint: disable=too-many-statements
def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="mesh", delay=1, onlyBios=False, dontBootstrap=False,
totalProducers=None, sharedProducers=0, extraNodeosArgs="", useBiosBootFile=True, specificExtraNodeosArgs=None, onlySetProds=False,
pfSetupPolicy=PFSetupPolicy.FULL, alternateVersionLabelsFile=None, associatedNodeLabels=None, loadSystemContract=True):
pfSetupPolicy=PFSetupPolicy.FULL, alternateVersionLabelsFile=None, associatedNodeLabels=None, loadSystemContract=True, genesisPath=None,
maximumP2pPerHost=0, maximumClients=25, prodsEnableTraceApi=True):
"""Launch cluster.
pnodes: producer nodes count
unstartedNodes: non-producer nodes that are configured into the launch, but not started. Should be included in totalNodes.
Expand All @@ -177,7 +180,7 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="me
delay 0 exposes a bootstrap bug where producer handover may have a large gap confusing nodes and bringing system to a halt.
onlyBios: When true, only loads the bios contract (and not more full bootstrapping).
dontBootstrap: When true, don't do any bootstrapping at all. (even bios is not uploaded)
extraNodeosArgs: string of arguments to pass through to each nodoes instance (via --nodeos flag on launcher)
extraNodeosArgs: string of arguments to pass through to each nodeos instance (via --nodeos flag on launcher)
useBiosBootFile: determines which of two bootstrap methods is used (when both dontBootstrap and onlyBios are false).
The default value of true uses the bios_boot.sh file generated by the launcher.
A value of false uses manual bootstrapping in this script, which does not do things like stake votes for producers.
Expand All @@ -188,6 +191,10 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="me
alternateVersionLabelsFile: Supply an alternate version labels file to use with associatedNodeLabels.
associatedNodeLabels: Supply a dictionary of node numbers to use an alternate label for a specific node.
loadSystemContract: indicate whether the eosio.system contract should be loaded (setting this to False causes useBiosBootFile to be treated as False)
genesisPath: set the path to a specific genesis.json to use
maximumP2pPerHost: Maximum number of client nodes from any single IP address. Defaults to totalNodes if not set.
maximumClients: Maximum number of clients from which connections are accepted, use 0 for no limit. Defaults to 25.
prodsEnableTraceApi: Determines whether producer nodes should have eosio::trace_api_plugin enabled. Defaults to True.
"""
assert(isinstance(topo, str))
assert PFSetupPolicy.isValid(pfSetupPolicy)
Expand Down Expand Up @@ -224,6 +231,10 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="me
if sharedProducers > 0:
producerFlag += (" --shared-producers %d" % (sharedProducers))

if maximumP2pPerHost <= 0:
maximumP2pPerHost = totalNodes


self.setAlternateVersionLabels(alternateVersionLabelsFile)

tries = 30
Expand All @@ -233,22 +244,23 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="me
return False
tries = tries - 1
time.sleep(2)

cmd="%s -p %s -n %s -d %s -i %s -f %s --unstarted-nodes %s" % (
loggingLevelDictString = json.dumps(self.loggingLevelDict, separators=(',', ':'))
cmd="%s -p %s -n %s -d %s -i %s -f %s --unstarted-nodes %s --logging-level %s --logging-level-map %s" % (
Utils.EosLauncherPath, pnodes, totalNodes, delay, datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3],
producerFlag, unstartedNodes)
producerFlag, unstartedNodes, self.loggingLevel, loggingLevelDictString)
cmdArr=cmd.split()
if self.staging:
cmdArr.append("--nogen")

nodeosArgs="--resource-monitor-not-shutdown-on-threshold-exceeded --max-transaction-time -1 --abi-serializer-max-time-ms 990000 --p2p-max-nodes-per-host %d" % (totalNodes)
nodeosArgs="--max-transaction-time -1 --abi-serializer-max-time-ms 990000 --p2p-max-nodes-per-host %d --max-clients %d" % (maximumP2pPerHost, maximumClients)
if not self.walletd:
nodeosArgs += " --plugin eosio::wallet_api_plugin"
if Utils.Debug:
nodeosArgs += " --contracts-console"
if PFSetupPolicy.hasPreactivateFeature(pfSetupPolicy):
nodeosArgs += " --plugin eosio::producer_api_plugin"
nodeosArgs += " --plugin eosio::trace_api_plugin "
if prodsEnableTraceApi:
nodeosArgs += " --plugin eosio::trace_api_plugin "
if extraNodeosArgs.find("--trace-rpc-abi") == -1:
nodeosArgs += " --trace-no-abis "
httpMaxResponseTimeSet = False
Expand All @@ -275,10 +287,14 @@ def launch(self, pnodes=1, unstartedNodes=0, totalNodes=1, prodCount=1, topo="me
cmdArr.append("--nodeos")
cmdArr.append(nodeosArgs)

cmdArr.append("--max-block-cpu-usage")
cmdArr.append(str(160000000))
cmdArr.append("--max-transaction-cpu-usage")
cmdArr.append(str(150000000))
if genesisPath is None:
cmdArr.append("--max-block-cpu-usage")
cmdArr.append(str(500000))
cmdArr.append("--max-transaction-cpu-usage")
cmdArr.append(str(475000))
else:
cmdArr.append("--genesis")
cmdArr.append(str(genesisPath))

if associatedNodeLabels is not None:
for nodeNum,label in associatedNodeLabels.items():
Expand Down Expand Up @@ -1549,7 +1565,7 @@ def cleanup(self):


# Create accounts and validates that the last transaction is received on root node
def createAccounts(self, creator, waitForTransBlock=True, stakedDeposit=1000):
def createAccounts(self, creator, waitForTransBlock=True, stakedDeposit=1000, validationNodeIndex=0):
if self.accounts is None:
return True

Expand All @@ -1564,7 +1580,7 @@ def createAccounts(self, creator, waitForTransBlock=True, stakedDeposit=1000):
transId=Node.getTransId(trans)

if waitForTransBlock and transId is not None:
node=self.nodes[0]
node=self.nodes[validationNodeIndex]
if Utils.Debug: Utils.Print("Wait for transaction id %s on server port %d." % ( transId, node.port))
if node.waitForTransactionInBlock(transId) is False:
Utils.Print("ERROR: Failed to validate transaction %s got rolled into a block on server port %d." % (transId, node.port))
Expand Down
Loading