- ulimit -c unlimited
- mkdir -p coredump
- echo "$(pwd)/coredump/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
+params:
+ ROUND_NB: 0
run:
steps:
- cd ci/
- - lava-test-case run-fuzzing --shell "python3 ./scripts/system-tests/run-kprobe-fuzzing.py /root/instr_points.txt.gz"
+ - lava-test-case run-fuzzing --shell "python3 ./scripts/system-tests/run-kprobe-fuzzing.py /root/instr_points.txt.gz $ROUND_NB"
- cd ..
- tar czf coredump.tar.gz coredump
- lava-test-case-attach run-fuzzing coredump.tar.gz
})
return command
-def get_kprobes_test_cmd():
+def get_kprobes_test_cmd(round_nb):
command = OrderedDict({
'command': 'lava_test_shell',
'parameters': {
{
'git-repo': 'https://github.com/lttng/lttng-ci.git',
'revision': 'master',
- 'testdef': 'lava/system-tests/kprobe-fuzzing-tests.yml'
+ 'testdef': 'lava/system-tests/kprobe-fuzzing-tests.yml',
+ 'parameters': { 'ROUND_NB': str(round_nb) }
}
- ],
- 'timeout': 7200
+ ],
+ 'timeout': 1000
}
})
return command
return -1
j['actions'].append(get_config_cmd('kvm'))
j['actions'].append(get_kprobes_generate_data_cmd())
- j['actions'].append(get_kprobes_test_cmd())
+ for i in range(10):
+ j['actions'].append(get_kprobes_test_cmd(round_nb=i))
j['actions'].append(get_results_cmd(stream_name='tests-kernel'))
else:
assert False, 'Unknown test type'
import sys
NB_KPROBES_PER_ITER=500
+NB_KPROBES_PER_ROUND=20000
def load_instr_points(instr_points_archive):
print('Reading instrumentation points from \'{}\'.'.format(instr_points_archive), end='')
print('-'*100)
def main():
- assert(len(sys.argv) == 2)
+ assert(len(sys.argv) == 3)
instr_point_archive = sys.argv[1]
+ round_nb = int(sys.argv[2])
# Load instrumentation points to disk and attach it to lava test run.
instrumentation_points = load_instr_points(instr_point_archive)
+ # We are past the end of the instrumentation point list.
+ if len(instrumentation_points)/NB_KPROBES_PER_ROUND <= round_nb:
+ print('No instrumentation point for round {}.'.format(round_nb))
+ return
+
mount_tracingfs()
# Loop over the list by enabling ranges of NB_KPROBES_PER_ITER kprobes.
- for i in range(int(len(instrumentation_points)/NB_KPROBES_PER_ITER)):
+ for i in range(int(NB_KPROBES_PER_ROUND/NB_KPROBES_PER_ITER)):
print_dashed_line()
- print('Time now: {}, {} to {}'.format(datetime.datetime.now(), i*NB_KPROBES_PER_ITER, (i+1)*NB_KPROBES_PER_ITER))
- set_kprobe_tracing_state(0)
- enable_kprobe_events(instrumentation_points[i*NB_KPROBES_PER_ITER:(i+1)*NB_KPROBES_PER_ITER])
+ lower_bound = (round_nb * NB_KPROBES_PER_ROUND) + (i * NB_KPROBES_PER_ITER)
+ upper_bound = lower_bound + NB_KPROBES_PER_ITER
+ print('Time now: {}, {} to {}'.format(datetime.datetime.now(), lower_bound , upper_bound))
+ enable_kprobe_events(instrumentation_points[lower_bound:upper_bound])
set_kprobe_tracing_state(1)
run_workload()
print('\n')
+ set_kprobe_tracing_state(0)
if __name__ == "__main__":
main()