From: Mathieu Desnoyers Date: Sun, 16 Nov 2014 19:58:28 +0000 (+0100) Subject: Add many typealias stress test X-Git-Url: https://git.efficios.com/?p=ctf-testsuite.git;a=commitdiff_plain;h=66ef3c636f429b9371edda9e636dceb5015a89df Add many typealias stress test Signed-off-by: Mathieu Desnoyers --- diff --git a/tests/1.8/stress/metadata/pass/many-typealias/param-list.txt b/tests/1.8/stress/metadata/pass/many-typealias/param-list.txt new file mode 100644 index 0000000..ecb7532 --- /dev/null +++ b/tests/1.8/stress/metadata/pass/many-typealias/param-list.txt @@ -0,0 +1,6 @@ +524288 +1048576 +2097152 +4194304 +8388608 +16777216 diff --git a/tests/1.8/stress/metadata/pass/many-typealias/test.py b/tests/1.8/stress/metadata/pass/many-typealias/test.py new file mode 100755 index 0000000..43821c7 --- /dev/null +++ b/tests/1.8/stress/metadata/pass/many-typealias/test.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +# Expects either "prepare" or "clean" argument + +import sys +import os +import struct + +def arg_err(): + print('Please specify "prepare " or "clean " as first argument.') + sys.exit(-1) + +if (len(sys.argv) <= 1): + arg_err() +mode = sys.argv[1] +if (len(sys.argv) <= 2): + arg_err() +array_len = int(sys.argv[2]) + +tracedir_name = './trace-' + str(array_len) + '/' +output_metadata = tracedir_name + 'metadata' +output_stream = tracedir_name + 'stream' + + +def write_binary(f, arr): + f.write(bytes(arr)) + +def generate_metadata(array_len): + # Generate metadata + metadata_str = \ + ( '/* CTF 1.8 */\n' + '\n' + 'typealias integer {{ size = 8; align = 8; signed = false; base = 10; }} := uint8_t;\n' + 'typealias integer {{ size = 32; align = 8; signed = false; base = hex; }} := uint32_t;\n' + '\n' + 'trace {{\n' + ' major = 0;\n' + ' minor = 0;\n' + ' uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";\n' + ' byte_order = le;\n' + ' packet.header := struct {{\n' + ' uint32_t magic;\n' + ' uint8_t uuid[16];\n' + ' }};\n' + '}};\n' + '\n').format() + + metadata_typealias = \ + ('typealias integer {{ size = 8; align = 8; signed = false; base = 10; }} := t{};\n') + + metadata_f = open(output_metadata, 'w') + metadata_f.write(metadata_str) + for i in range(array_len): + metadata_f.write(metadata_typealias.format(i)) + metadata_f.close() + +def test_prepare(): + print('Preparing test for ' + str(array_len) + ' typealias') + os.mkdir(tracedir_name) + generate_metadata(array_len) + +def test_clean(): + print('Cleaning up test for ' + str(array_len) + ' typealias') + try: + os.remove(output_metadata) + except: + pass + try: + os.rmdir(tracedir_name) + except: + pass + +if (mode == "prepare"): + test_clean() + test_prepare() +elif (mode == "clean"): + test_clean() +else: + arg_err() diff --git a/tests/1.8/stress/metadata/pass/run.sh b/tests/1.8/stress/metadata/pass/run.sh new file mode 100755 index 0000000..f23416c --- /dev/null +++ b/tests/1.8/stress/metadata/pass/run.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +. ../../../../../utils/run.sh diff --git a/tests/1.8/stress/metadata/pass/test.sh b/tests/1.8/stress/metadata/pass/test.sh new file mode 100755 index 0000000..5909477 --- /dev/null +++ b/tests/1.8/stress/metadata/pass/test.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Copyright (C) - 2013 Christian Babeux +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License, version 2 only, as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +CURDIR=$(dirname $0) +UTILS_DIR=$CURDIR/../../../../../utils/ + +source $UTILS_DIR/tap/tap.sh + +NUM_TESTS=0 + +for param in $(cat $1/param-list.txt); do + NUM_TESTS=$((${NUM_TESTS} + 3)) +done + +plan_tests $NUM_TESTS + +if [ "x${CTF_READER_BIN}" == "x" ]; then + echo "Bail out! No CTF_READER_BIN specified" + exit 1 +fi + +for param in $(cat $1/param-list.txt); do + cd $1 && ./test.py prepare ${param} + result=$? + is $result 0 $1 + cd .. + + $CTF_READER_BIN $CTF_READER_OPTS $1/trace-${param} >/dev/null 2>&1 + result=$? + is $result 0 $1 # expect pass + + cd $1 && ./test.py clean ${param} + result=$? + is $result 0 $1 + cd .. +done diff --git a/tests/1.8/stress/metadata/run.sh b/tests/1.8/stress/metadata/run.sh new file mode 100755 index 0000000..78e3be0 --- /dev/null +++ b/tests/1.8/stress/metadata/run.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +for dir in */; do + echo "Running ${dir} tests" + cd ${dir} + ./run.sh + cd .. +done