Skip to content

Conversation

@zoybai
Copy link
Contributor

@zoybai zoybai commented Jun 15, 2018

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.

zoybai and others added 5 commits June 8, 2018 18:05
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
@geoffreyblake
Copy link
Contributor

Can one of the admins verify this patch?

@rpgolshan
Copy link
Contributor

Traceback (most recent call last):
File "/var/lib/jenkins/workspace/Build_and_Test_PR-31-JOSCI5ULR755CP4TYEF6YZ65KRMJNW6DBDQA7TRM62VOIMSIHOBA/benchmarks/lockhammer/scripts/test_lockhammer.py", line 307, in
lhConfig = read_config(LH_CFG)
File "/var/lib/jenkins/workspace/Build_and_Test_PR-31-JOSCI5ULR755CP4TYEF6YZ65KRMJNW6DBDQA7TRM62VOIMSIHOBA/benchmarks/lockhammer/scripts/test_lockhammer.py", line 60, in read_config
with open(lhCfgStr, 'r') as fd:
FileNotFoundError: [Errno 2] No such file or directory: 'lh_test_cfg.yaml'

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
@zoybai
Copy link
Contributor Author

zoybai commented Jun 15, 2018

jenkins issue has been fixed in the latest patch

@geoffreyblake
Copy link
Contributor

Log output for failing test:
[Build_and_Test_PR-31-JOSCI5ULR755CP4TYEF6YZ65KRMJNW6DBDQA7TRM62VOIMSIHOBA] Running shell script

  • /var/lib/jenkins/workspace/Build_and_Test_PR-31-JOSCI5ULR755CP4TYEF6YZ65KRMJNW6DBDQA7TRM62VOIMSIHOBA/benchmarks/lockhammer/scripts/test_lockhammer.py
    {'globalcfg': {'execdir': '/root/synchronization-benchmarks/benchmarks/lockhammer/build',
    'logfile': '/root/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]}]}}
    Cannot create or locate logfile.

Copy link
Contributor

@geoffreyblake geoffreyblake left a 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
Copy link
Contributor

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
@zoybai
Copy link
Contributor Author

zoybai commented Jun 18, 2018

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

@zoybai
Copy link
Contributor Author

zoybai commented Jun 18, 2018

Passed on Jenkins test:
Stage Logs (Test)
Shell Script -- git config --get remote.origin.url > .git/remote-url -- (self time 263ms)
Read file from workspace (self time 9ms)
Set GitHub commit status (universal) (self time 174ms)
Shell Script -- /var/lib/jenkins/workspace/Build_and_Test_PR-31-JOSCI5ULR755CP4TYEF6YZ65KRMJNW6DBDQA7TRM62VOIMSIHOBA/benchmarks/lockhammer/scripts/test_lockhammer.py -- (self time 1min 42s)
Shell Script -- git config --get remote.origin.url > .git/remote-url -- (self time 264ms)
Read file from workspace (self time 14ms)
Set GitHub commit status (universal) (self time 480ms)

@zoybai zoybai merged commit 8cc53eb into ARM-software:integration Jun 18, 2018
@zoybai zoybai deleted the lh_unittest branch June 19, 2018 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants