-
Notifications
You must be signed in to change notification settings - Fork 43
Lockhammer unittest and sweeptest #31
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
Conversation
Merge osq_lock from integration to master
"sh it" ran "it" as a java File object instead of passing the string to a shell. This commit fixes that.
Jenkins: Fixed executing test scripts
Sync local master with remove ARM-software master
|
Can one of the admins verify this patch? |
|
Traceback (most recent call last): |
1. Refactoring and simplifying unittest param generation 2. Fix some minor bugs which may generate invalid parameters for sweeptest 3. Verified on both aarch64 and x86_64 systems
|
jenkins issue has been fixed in the latest patch |
|
Log output for failing test:
|
geoffreyblake
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to fix up path handling in the unit-tests.
| globalcfg: | ||
| execdir: /tmp/synchronization-benchmarks/benchmarks/lockhammer/build | ||
| logfile: /tmp/lockhammer.csv | ||
| execdir: /root/synchronization-benchmarks/benchmarks/lockhammer/build |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You cannot hard-code the paths for the unit-tests. These paths need to be automatically generated in the code to be relative to wherever the code is being run from, either in Jenkins or someone's workstation.
The corrent default unittest output:
$ ./test_lockhammer.py
{'globalcfg': {'execdir': '../build', 'logfile': 'lockhammer.csv'},
'sweeptest': {'argulist': [{'a': 5000, 'c': '0ns', 'p': '0ns'},
{'a': 5000, 'c': '1000ns', 'p': '0ns'},
{'a': 5000, 'c': '200ns', 'p': '1000ns'},
{'a': 5000, 'c': '1000ns', 'p': '5000ns'}],
'argumax': 0,
'cmd': ['lh_cas_event_mutex',
'lh_cas_lockref',
'lh_cas_rw_lock',
'lh_empty',
'lh_event_mutex',
'lh_incdec_refcount',
'lh_jvm_objectmonitor',
'lh_osq_lock',
'lh_queued_spinlock',
'lh_swap_mutex',
'lh_tbb_spin_rw_mutex',
'lh_ticket_spinlock'],
'cmd_aarch64': ['lh_hybrid_spinlock',
'lh_hybrid_spinlock_fastdequeue'],
'cmd_x86_64': None,
'enabled': False,
'repeat': 9,
'safemode': False,
'skipsince': 48,
'skipstep': 8,
'sweepargu': 't'},
'unittest': {'enabled': True,
'safemode': True,
'testcase': [{'a': 100,
'c': ['0ns', '50ns'],
'cmd': ['lh_cas_event_mutex',
'lh_cas_lockref',
'lh_cas_rw_lock',
'lh_empty',
'lh_event_mutex',
'lh_incdec_refcount',
'lh_jvm_objectmonitor',
'lh_osq_lock',
'lh_queued_spinlock',
'lh_swap_mutex',
'lh_tbb_spin_rw_mutex',
'lh_ticket_spinlock'],
'cmd_aarch64': ['lh_hybrid_spinlock',
'lh_hybrid_spinlock_fastdequeue'],
'cmd_x86_64': None,
'p': ['0ns', '50ns'],
't': [1, 0]},
{'a': 100,
'c': '50ns',
'cmd': 'lh_osq_lock',
'extra': {'s': 2, 'u': 10},
'p': '0ns',
't': [1, 0]},
{'a': 100,
'c': '50ns',
'cmd': 'lh_tbb_spin_rw_mutex',
'extra': {'m': 1, 'r': 4},
'p': '0ns',
't': [1, 0]}]}}
test_lh_cas_event_mutex-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_event_mutex-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_lockref-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_cas_rw_lock-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_empty-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_event_mutex-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_incdec_refcount-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_jvm_objectmonitor-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t1-a100-c50ns-p0ns-s---u10-s2 (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t64-a100-c50ns-p0ns-s---u10-s2 (__main__.TestLockHammer) ... ok
test_lh_osq_lock-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_queued_spinlock-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_swap_mutex-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t1-a100-c50ns-p0ns-s---r4-m1 (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t64-a100-c50ns-p0ns-s---r4-m1 (__main__.TestLockHammer) ... ok
test_lh_tbb_spin_rw_mutex-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t1-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t1-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t1-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t1-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t64-a100-c0ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t64-a100-c0ns-p50ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t64-a100-c50ns-p0ns-s (__main__.TestLockHammer) ... ok
test_lh_ticket_spinlock-t64-a100-c50ns-p50ns-s (__main__.TestLockHammer) ... ok
----------------------------------------------------------------------
Ran 100 tests in 44.287s
OK
|
Fixed path handling code: Now by default the output lockhammer.csv file is a relative directory. It will be created in the working directory where lockhammer test script is executed. The execute binary directory is also relative to where the unittest script is installed, just like config yaml file directory. We will prefix the absolute address of unittest python script file to the binary relative directory ../build |
|
Passed on Jenkins test: |
By default, test_lockhammer.py will run unittest specified by lh_test_cfg.yaml
If all tests have been passed, test_lockhammer.py will return 0. Otherwise any failed test will trigger a non-zero return value.