mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Daniel Santos <daniel.santos@pobox.com>
To: LKML <linux-kernel@vger.kernel.org>,
	Akinobu Mita <akinobu.mita@gmail.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Daniel Santos <daniel.santos@pobox.com>,
	David Woodhouse <David.Woodhouse@intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
	John Stultz <john.stultz@linaro.org>,
	linux-doc@vger.kernel.org, Michel Lespinasse <walken@google.com>,
	"Paul E. McKenney" <paul.mckenney@linaro.org>,
	Paul Gortmaker <paul.gortmaker@windriver.com>,
	Pavel Pisa <pisa@cmp.felk.cvut.cz>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Rik van Riel <riel@redhat.com>, Rob Landley <rob@landley.net>
Subject: [PATCH v6 8/10] selftest: Add script to compile & run userspace test program
Date: Fri, 28 Sep 2012 18:48:44 -0500	[thread overview]
Message-ID: <1348876126-28792-3-git-send-email-daniel.santos@pobox.com> (raw)
In-Reply-To: <1348875625-28669-1-git-send-email-daniel.santos@pobox.com>

This is a basic script is designed to automate the testing process (for
a single compiler) and generate delimited text output suitable for later
processing. All test parameters can be supplied via the environment, or
defaults will be used for them. The following variables affect the
script and if not supplied, will have the these default values:

CC		"gcc"
KERNELDIR	"../../../../.."
CFLAGS		"-O2 -pipe -march=k8"
key_type	"u64"
payload		0
use_leftmost	0
use_rightmost	0
use_count	0
unique_keys	0
insert_replaces	0
test_num	0

reps		0x20000
count		0x800
keymask		0xfff

logfile		runtest.log
datafile	runtest.out

Signed-off-by: Daniel Santos <daniel.santos@pobox.com>
---
 tools/testing/selftests/grbtree/user/runtest.sh |  122 +++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)
 create mode 100755 tools/testing/selftests/grbtree/user/runtest.sh

diff --git a/tools/testing/selftests/grbtree/user/runtest.sh b/tools/testing/selftests/grbtree/user/runtest.sh
new file mode 100755
index 0000000..b481ad3
--- /dev/null
+++ b/tools/testing/selftests/grbtree/user/runtest.sh
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+# runtest.sh - script to compile and run userspace tests of gerneric red-black
+#              tree implementation for a single compiler.
+#
+# Copyright (C) 2012  Daniel Santos <daniel.santos@pobox.com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# 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.
+
+die() {
+	echo "ERROR${@:+": "}$@" 1>&2
+	exit -1
+}
+
+set_var_default() {
+	(($# == 2)) || die "set_var_default takes two parameters, got $#: $@"
+
+	var="$1"
+	default_val="$2"
+	cur_val=$(eval echo "\$${var}")
+
+	if [[ -z "${cur_val}" ]]; then
+		eval ${var}=\"${default_val}\"
+	fi
+}
+
+# Variables affecting code generation
+set_var_default CC		gcc
+set_var_default KERNELDIR	"../../../../.."
+set_var_default CFLAGS		"-O2 -pipe -march=k8"
+# CONFIG parameters:
+set_var_default key_type	u64
+set_var_default payload		0
+set_var_default use_leftmost	0
+set_var_default use_rightmost	0
+set_var_default use_count	0
+set_var_default unique_keys	0
+set_var_default insert_replaces	0
+# For test_num, see grbtest -h
+set_var_default test_num	0
+
+# Variables passed to grbtest program
+set_var_default reps		0x20000
+set_var_default count		0x800
+set_var_default keymask		0xfff
+
+# Output files
+set_var_default logfile		runtest.log
+set_var_default datafile	runtest.out
+
+
+build_desc[0]="hand-coded"
+build_desc[1]="generic"
+
+. /etc/profile || die
+
+do_cpp() {
+	echo "$1" > /tmp/gnucver.$$.c || die
+	${CC} -E /tmp/gnucver.$$.c | grep -v '^#' | tr -d ' '
+	rm /tmp/gnucver.$$.c
+}
+
+gccverstr=$(do_cpp "__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__") || die
+
+execute_tests() {
+	for build_generic in 1 0; do
+		CONFIG=$(echo						\
+			-DGRBTEST_KEY_TYPE=${key_type}			\
+			-DGRBTEST_PAYLOAD=${payload}			\
+			-DGRBTEST_BUILD_GENERIC=${build_generic}	\
+			-DGRBTEST_USE_LEFTMOST=${use_leftmost}		\
+			-DGRBTEST_USE_RIGHTMOST=${use_rightmost}	\
+			-DGRBTEST_USE_COUNT=${use_count}		\
+			-DGRBTEST_UNIQUE_KEYS=${unique_keys}		\
+			-DGRBTEST_INSERT_REPLACES=${insert_replaces}
+		)
+
+		echo "********************************************************"
+		echo "Starting build at $(date '+%Y-%m-%d %H:%M:%S')..."
+		echo "  build_type = ${build_desc[${build_generic}]}"
+		echo "  compiler   = ${gccverstr}"
+		echo "  CFLAGS     = ${CFLAGS}"
+		echo "  KERNELDIR  = ${KERNELDIR}"
+		echo
+
+		#set -x
+		CC="${CC}"			\
+		CFLAGS="${CFLAGS}"		\
+		CONFIG="${CONFIG}"		\
+		KERNELDIR="${KERNELDIR}"	\
+		make clean all || die
+		set +x
+
+		echo
+		echo "Executing test..."
+		echo
+cp common.o prof/common-${build_desc[${build_generic}]}.o
+		./grbtest --seed 1		\
+			  --reps ${reps}	\
+			  --count ${count}	\
+			  --keymask ${keymask}	\
+			  --delim "|"		\
+			  --quote ""		\
+			  --test ${test_num} | tee -a "${datafile}"
+		echo
+		echo
+	done
+}
+
+execute_tests | tee -a ${logfile}
-- 
1.7.3.4


  parent reply	other threads:[~2012-09-28 23:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-28 23:40 [PATCH v6 0/10] Generic Red-Black Trees Daniel Santos
2012-09-28 23:40 ` [PATCH v6 1/10] rbtree.h: " Daniel Santos
2012-09-28 23:40 ` [PATCH v6 2/10] rbtree.h: include kconfig.h Daniel Santos
2012-09-28 23:40 ` [PATCH v6 3/10] Generate doc comments for rbtree.h in Kernel-API Daniel Santos
2012-09-28 23:40 ` [PATCH v6 4/10] rbtree.h: Add test & validation framework Daniel Santos
2012-09-28 23:40 ` [PATCH v6 5/10] rbtree.h: add doc comments for struct rb_node Daniel Santos
2012-09-28 23:48 ` [PATCH v6 6/10] selftest: Add generic tree self-test common code Daniel Santos
2012-09-28 23:48 ` [PATCH v6 7/10] selftest: Add userspace test program Daniel Santos
2012-09-28 23:48 ` Daniel Santos [this message]
2012-09-28 23:48 ` [PATCH v6 9/10] selftest: Add basic compiler iterator test script Daniel Santos
2012-09-28 23:48 ` [PATCH v6 10/10] selftest: report generation script for test results Daniel Santos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1348876126-28792-3-git-send-email-daniel.santos@pobox.com \
    --to=daniel.santos@pobox.com \
    --cc=David.Woodhouse@intel.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=aarcange@redhat.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=john.stultz@linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paul.gortmaker@windriver.com \
    --cc=paul.mckenney@linaro.org \
    --cc=pisa@cmp.felk.cvut.cz \
    --cc=riel@redhat.com \
    --cc=rob@landley.net \
    --cc=walken@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®