From 6531dfaee935d9de1a305d4c7f97a83b842c2a77 Mon Sep 17 00:00:00 2001 From: Michal Piotrowski Date: Fri, 30 Mar 2007 20:00:11 +0000 Subject: [PATCH] A few useful programs for Linux -RT testing. From: michal.k.k.piotrowski@gmail.com Signed-off-by: Martin J. Bligh --- rtlinuxtests/control | 1 + rtlinuxtests/path-fix.patch | 136 +++++++++++++++++++++++++++++++++++ rtlinuxtests/rtlinuxtests.py | 28 ++++++++ rtlinuxtests/tests.tar.bz2 | Bin 0 -> 34010 bytes 4 files changed, 165 insertions(+) create mode 100644 rtlinuxtests/control create mode 100644 rtlinuxtests/path-fix.patch create mode 100644 rtlinuxtests/rtlinuxtests.py create mode 100644 rtlinuxtests/tests.tar.bz2 diff --git a/rtlinuxtests/control b/rtlinuxtests/control new file mode 100644 index 000000000..3fa7c66ba --- /dev/null +++ b/rtlinuxtests/control @@ -0,0 +1 @@ +job.run_test('rtlinuxtests') diff --git a/rtlinuxtests/path-fix.patch b/rtlinuxtests/path-fix.patch new file mode 100644 index 000000000..7a1399307 --- /dev/null +++ b/rtlinuxtests/path-fix.patch @@ -0,0 +1,136 @@ +diff -uprN tests/func/pi-tests/run_auto.sh src/func/pi-tests/run_auto.sh +--- tests/func/pi-tests/run_auto.sh 2007-03-09 16:44:31.000000000 +0100 ++++ src/func/pi-tests/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "testpi-0" "testpi-1" "testpi-2" "testpi-4 ""testpi-5" "testpi-6" "testpi-7" "sbrk_mutex" + +diff -uprN tests/func/prio-preempt/run_auto.sh src/func/prio-preempt/run_auto.sh +--- tests/func/prio-preempt/run_auto.sh 2007-03-09 16:44:31.000000000 +0100 ++++ src/func/prio-preempt/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "prio-preempt" + +diff -uprN tests/func/prio-wake/run_auto.sh src/func/prio-wake/run_auto.sh +--- tests/func/prio-wake/run_auto.sh 2007-03-09 16:44:32.000000000 +0100 ++++ src/func/prio-wake/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "prio-wake" + +diff -uprN tests/func/pthread_kill_latency/run_auto.sh src/func/pthread_kill_latency/run_auto.sh +--- tests/func/pthread_kill_latency/run_auto.sh 2007-03-09 16:44:31.000000000 +0100 ++++ src/func/pthread_kill_latency/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "pthread_kill_latency" + +diff -uprN tests/func/sched_football/run_auto.sh src/func/sched_football/run_auto.sh +--- tests/func/sched_football/run_auto.sh 2007-03-09 16:44:32.000000000 +0100 ++++ src/func/sched_football/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "sched_football" + +diff -uprN tests/func/sched_latency/run_auto.sh src/func/sched_latency/run_auto.sh +--- tests/func/sched_latency/run_auto.sh 2007-03-09 16:44:31.000000000 +0100 ++++ src/func/sched_latency/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -3,7 +3,7 @@ + # + # + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + $SCRIPTS_DIR/run_c_files.sh "sched_latency" + +diff -uprN tests/perf/latency/run_auto.sh src/perf/latency/run_auto.sh +--- tests/perf/latency/run_auto.sh 2007-03-09 16:53:21.000000000 +0100 ++++ src/perf/latency/run_auto.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -1,6 +1,6 @@ + + export CUR_DIR=`pwd` +-export TESTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/ ++export TESTS_DIR=${CUR_DIR%src*}src/ + export SCRIPTS_DIR=$TESTS_DIR/scripts/ + + log="$LOG_DIR/$LOG_FORMAT-pthread_cond_many.log" +diff -uprN tests/run.sh src/run.sh +--- tests/run.sh 2007-03-09 16:53:21.000000000 +0100 ++++ src/run.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -8,7 +8,7 @@ + #============================================================================== + + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + + source $SCRIPTS_DIR/setenv.sh + +diff -uprN tests/scripts/run_c_files.sh src/scripts/run_c_files.sh +--- tests/scripts/run_c_files.sh 2007-03-09 16:44:30.000000000 +0100 ++++ src/scripts/run_c_files.sh 2007-03-29 23:47:05.000000000 +0200 +@@ -8,7 +8,7 @@ + #============================================================================== + + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + source $SCRIPTS_DIR/setenv.sh + # COMPILE THE TESTCASES + +diff -uprN tests/scripts/setenv.sh src/scripts/setenv.sh +--- tests/scripts/setenv.sh 2007-03-09 16:44:30.000000000 +0100 ++++ src/scripts/setenv.sh 2007-03-29 23:48:01.000000000 +0200 +@@ -6,8 +6,8 @@ + # most of the test-cases + #============================================================================== + export CUR_DIR=`pwd` +-export RTLINUX_DIR=${CUR_DIR%rtlinux-tests*} +-export TESTS_DIR=$RTLINUX_DIR/rtlinux-tests ++export RTLINUX_DIR=${CUR_DIR%src*} ++export TESTS_DIR=$RTLINUX_DIR/src + export SCRIPTS_DIR=$TESTS_DIR/scripts + export LOG_DIR=$TESTS_DIR/logs + export ARGUMENTS_INPUT_ERROR=25 +diff -uprN tests/scripts/ssh-keygen.sh src/scripts/ssh-keygen.sh +--- tests/scripts/ssh-keygen.sh 2007-03-09 16:44:30.000000000 +0100 ++++ src/scripts/ssh-keygen.sh 2007-03-29 23:48:16.000000000 +0200 +@@ -14,9 +14,9 @@ + #============================================================================== + + CUR_DIR=`pwd` +-export SCRIPTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/scripts ++export SCRIPTS_DIR=${CUR_DIR%src*}src/scripts + source $SCRIPTS_DIR/setenv.sh +-TESTS_DIR=${CUR_DIR%rtlinux-tests*}rtlinux-tests/ ++TESTS_DIR=${CUR_DIR%src*}src/ + + if [ -z "$1" ]; then + echo " Useage : ssh-keygen.sh server-name " diff --git a/rtlinuxtests/rtlinuxtests.py b/rtlinuxtests/rtlinuxtests.py new file mode 100644 index 000000000..41ade38a9 --- /dev/null +++ b/rtlinuxtests/rtlinuxtests.py @@ -0,0 +1,28 @@ +import test +from autotest_utils import * + +# tests is a simple array of "cmd" "arguments" +tests = [["./run.sh", "tests=func"], + ["./run.sh", "tests=pi-tests"], + ] +name = 0 +arglist = 1 + +class rtlinuxtests(test.test): + version = 1 + preserve_srcdir = True + + # http://www.kernel.org/pub/linux/kernel/people/dvhart/realtime/tests/tests.tar.bz2 + + def setup(self, tarball = 'tests.tar.bz2'): + check_glibc_ver('2.5') + self.tarball = unmap_url(self.bindir, tarball, self.tmpdir) + extract_tarball_to_dir(self.tarball, self.srcdir) + os.chdir(self.srcdir) + system('patch -p1 < ../path-fix.patch') + + def execute(self, args = ''): + os.chdir(self.srcdir) + for test in tests: + cmd = 'echo y | ' + test[name] + ' ' + args + ' ' + test[arglist] + system(cmd) diff --git a/rtlinuxtests/tests.tar.bz2 b/rtlinuxtests/tests.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0575606e064e8dd181613bfdf8415d200fcd3df6 GIT binary patch literal 34010 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 `_+0W?+Ggl@QCGPW!^9H)gr`zuFP25?0IQjk^- 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

?elRvP8)Ww7SU^IP|_6}Q zyG**QPTejLyz$2KDR2#YHqH*DZFh{%&QrL}D3!MP+4w zHEA{55d)FMA*mn(7>6wLz%81NC$GG1@$ouL+49!gWvwI?EseO2JxU%6;^Osb#MtdwbB z=J~M~#Qt5MOn@)SzW#A6XFgM0AW#X%uHB^l6bkMy7c-OVeZaeDl9+-Z>n+WCP7q5o z_lqi%c78Xy|7;lzey$tk^6&Z*0c5J>=^p6dSQ`Lj}g*YTVjQz!BL zb#9ZJ(2h8jIs;q5hbUB?Y+a4G6ZV;U{8fOq;O+Pq3?TOFs1G^JS$3`egkVtfzGReN zP(`k7Ho}L)8umzR7|A7>xk44KGD~aH0h!m9jvoIQ;-N_lQ{ELk= zl6PgXb>b6*wHZEop)C9xAxqX@4Y6~ev?7G6^~N1RC*YQIH*k{h_~3V~==YB%3Bf+{ zBb2>t!RRaZTV-<;+BUv3E2*)4nhU_|X5_6P96Bu@SKjQT_&DQ&Mwajt{5Uf9@L=HT zD_H@2lpiy1*G?H~n*1qoMc^Z|0*o*IAxMYO+*Y3(;aeW9+lCg;SsgD{wZ+))_0dut70{ zqe6ydZur|BhVP^I)ZiF{GDzobxoPLy0S}-hueWiCgCP-8eOgoY^fFT~M|Lnmh<7-{ z`wp|Hqms=&%TgvsO1WjVp|b`Ix)=AZU&=atg0>T?RS;1S1~LHO6|D!KQzc6GX&IXr>{!e$+d z5@S=1zC!h9YeEL?s*PV)F4-TlKR*h*d&m)na_&1haDuf3QM^ceLuvH2Opj=|T%*lt z-+EWeGrd@dsX18nU%9bWW7o9hT5#1EL_>PXD=8v)1E?`*`{a$L8Zc_lrqs@GiI*l* zCsruRu5Gn>Kqn*g$X^4XVSUGW9aBWYJBb`q33T$@C}fg_Q`;`cH$6%Cs%mgw9U%1D z3L*#u*03c~leOz^)a{6j1cz87LZWt`YLPsR-xUjLu7M=Aveuh8(>#uD%} z(a$LJ7^(9up>X?5&kwC$>dRR_60y6uhVN8bv=8OF2ai0oRUu6}5i)j<2^lpwE*n`= z?pF8=$;MLngWHunlamTbimR@Yp1ey~S|5=$+}!iVDm%lEY{B2%T#Mq=I0mDPU7;ZL zuO3NwZa1hwraP8sd-)Jao0n9>2zTl=0hd&W(3@bcqTJC){QN1&Y zCGcsPCosT5D&9~aZxp)31ts~R-b?kr)h5$N6qhISl*t^g$_b@J1}9~)1fom-n#3J& zvE45xhCRXW8g-zpMH+#lix2TzL%CQM7EB+`GI;3WWB1`BJ?`(?pD040Z<2Vq&z#>< z2_Ve7`hqK43E9RAwf(=pfReT_0cZub5%ty-_}ZOcPis_T{^RC?9dDeI(c6Tvy|^6I z<1uPk?vhOj_o{q)4meG)a(W*vLxU6y|Ffw(+zfn^RFrXo%B zw>}2FAB)M1Jn+cNnUHu5FE|WpMK2@T-qv~-(dtWQ@vHGc!ZjqKH34R#WvMwbOc588 zBzc`%IaWoR-p!Kyo?l>iM{tI%Mup^Rd4&h@+-N1pdq(2z@PC;xHvPBlWI3Nj&dZb) zBsV^OE%jVM>^0<{P6Y3_b4`7vl-md%wz0O8WD?89ta#bmZ3<%+O*9n9bf>w^WI77v z=-(=6a}~EOb+2Kn`P40MXgoD6yo5-Q$_(VTlC2#H_1Ue&Ta4OE6asuOa2~?wENwsk z4e70i|I#c_eoGIAj*L>(Kt%{;+22oe+RkpyBe}&KdaH%p6}B^=Th!CynU`~0Zy(uD zzrUpddN#X4PN>823$!q1Tg;q%YBK%edK{H|N6mrS*ZgNeh~nhyM(R2qma##je;Tq! z3SED=|4|=d4GPVs*2-(w{poa{orHYQ?C4%&lHxpoBEmJ+;t|>bR0sU}5kJg#cq)ip z(Z<`T@V!W@oH?{qna9V1@pL%>Mmpi(Y*K5ETO9R0z{!`ns#LR6S?xGF9~~LE3l9vH zbZ5B#SA|r;ci;VVyc^2U4@*vvKOHis)P$Cp<;Q{mIQo8NWHgFRo};fKmMuNbqzv&A zO-hN=h8D%)Vk@!$mh=JFZwl(J(f`z`9agl9-*i8sx*T|y>cbv5c^JSSrp;B3uTsmJ z_0knPdJ&d1Eh+Y17ilIl=>{|i(Eg~x`Jt$S`y-0FeoaL3aQVO-o%@DEb1WwscJ;e% zI)WCcWsBwIoK3n5{NV1zMHY-Rq5o}7?wXc`R%4dfJ{LN7Ram#pAZ-;Rs%o@E8;`ITFNN^*mR zbTsMO!?m9-ayHlh@tJ<-_XArNu4J=>Gm)}Ft~{T!>a;nK&THOLh9HykBtxHWJ7-Y1 zMOwAvK;}QJ7*2sv;+O~bc(0m{z%mfjgIBF!lem4JJAj)P9bpR+YR7VPwfm zEqe)|C^9&woQd)*Uq{6~5qK@ojjke*Q@nYe{`z8xJ|%~Hf=7fAnfCzCXDi)*{g;N+ z3Yz6iC@NBX8(*I~y5TC%F87jPF)NqOsXz-NxC$h}G_R@KCfrHo)`5QPvGpSCNC;0( zloCW4$;{Mo(esRH0_wvOw~yAd-QC1HnkqYgC7qhG@hVYR-y@jC2s%Y(KWCUnU}DkP ztb{y6+Da}~T0z8v2el=J_793!YlRzGHQO3PriAz&;Q!5XfRk=hhuH@e(F(Zrws@~Q z=lx`Jvmo3HTeS6oEL>V~tK_5q$6aYAQSL4^=!n%cPQXxYs{jfhaN*

Z2m~dE?(~ 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