summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.apps/xulrunner.exp
blob: be2db0c72858d913844691f5cc9ba33d48bd6f4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
set test "xulrunner"

# Test sdt support in xulrunner.

global env

if {! [info exists env(SYSTEMTAP_TEST_SDT)]} {
    unsupported "xulrunner (\"SYSTEMTAP_TEST_SDT\" not in env)"
    return
}

########## Create /tmp/stap-xul.stp ########## 
set xulrelease "1.9.1.3"
set xuldir "[pwd]/xul/"
set testsuite "[pwd]"

set fp [open "$testsuite/stap-xul.stp" "w"]
puts $fp "
global funcinfo
global objinfo

probe process(@1).mark(\"function__info\")
{
  file = user_string (\$arg1)
  func = user_string (\$arg3)
  funcinfo\[file,func\] <<< 1
}

probe process(@1).mark(\"object__create\")
{
  file = user_string (\$arg1)
  class = user_string (\$arg2)
  objinfo\[file,class\] <<< 1
}

probe end
{
  foreach (\[i,j\] in funcinfo+)
  {
     printf (\"probes: %-20s %-25s %d\\n\", substr(i,strlen(i)-20,strlen(i)), j, @count(funcinfo\[i,j\]))
  }
  foreach (\[i,j\] in objinfo+)
  {
     printf (\"probes: %-20s %-25s %d\\n\", substr(i,strlen(i)-20,strlen(i)), j, @count(funcinfo\[i,j\]))
  }
}
"
close $fp

########## Begin /tmp/stap-xul.sh ########## 
set fp [open "$testsuite/stap-xul.sh" "w"]
puts $fp "
##### begin run_tests #####
function run_tests \{
cd $testsuite/xul/bld/js/src
pwd
for i in call trace-test math-trace-tests ; do 
$env(SYSTEMTAP_PATH)/stap -c \"./js $xuldir/src/js/src/\$i.js\" $testsuite/stap-xul.stp ./js
done | tee $testsuite/stap-xul-markers.log
PROBES=\$(grep 'probes: ' $testsuite/stap-xul-markers.log | wc -l)
TESTS=\$(grep '-FAIL' $testsuite/stap-xul-markers.log)
echo PROBES=\$PROBES TESTS=\$TESTS

if \[ \$PROBES -gt 400 \] ; then
   echo PASS: xulrunner javascript markers \$1
else
   echo FAIL: xulrunner javascript markers \$1
fi

if \[ -z \$TESTS \] ; then
   echo PASS: xulrunner javascript testsuite \$1
else
   echo FAIL: xulrunner javascript testsuite \$1
fi

\}
##### end run_tests #####

if \[ ! -r xulrunner-$xulrelease-source.tar \] ; then
wget ftp://ftp.mozilla.org/pub/mozilla.org/xul/releases/$xulrelease/source/xulrunner-$xulrelease-source.tar.bz2
bunzip2 xulrunner-$xulrelease-source.tar.bz2
fi

if \[ ! -d xul/src \] ; then
tar -x -f xulrunner-$xulrelease-source.tar
mkdir xul
xulrelease=$xulrelease
mv mozilla-\${xulrelease%.\[0-9\]} xul/src
fi

if \[ ! -f xul/bld/js/src/js \] ; then
mkdir xul/bld
cd xul/bld
if rpm -q java-1.6.0-openjdk ; then :
else 
   echo FAIL: Need java-1.6.0-openjdk-devel
   exit
fi
JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 \
CXXFLAGS='-g -I$env(SYSTEMTAP_INCLUDES)' \
CFLAGS='-g -I$env(SYSTEMTAP_INCLUDES)' \
PATH=$env(SYSTEMTAP_PATH)/:\$PATH \
../src/configure --prefix=$xuldir --enable-dtrace --enable-application=xulrunner
J=\$(getconf _NPROCESSORS_CONF)
make -j \$J
fi

run_tests uprobe
"
########## End /tmp/stap-xul.sh ########## 
close $fp

########## /tmp/stap-xul.sh does most of the work ########## 
verbose -log Running xul testsuite
spawn sh stap-xul.sh 2>&1
expect {
    -timeout 10000
    -re {FAIL: [a-z_ ]+} { regexp " .*$" $expect_out(0,string) s; 
	fail "$s"; exp_continue }
    -re {PASS: [a-z_ ]+} { regexp " .*$" $expect_out(0,string) s; 
	pass "$s"; exp_continue }
    -re {UNSUPPORTED: [a-zA-Z_/: ]+} { regexp " .*$" $expect_out(0,string) s; 
	verbose -log "$s"
	unsupported "$s"; exp_continue }
    timeout { fail "$test (timeout)" }
    eof { }
}

if { $verbose == 0 } {
catch {exec rm -rf $testsuite/stap-xul.stp xulrunner-$xulrelease-source.tar \
	   $testsuite/stap-xul-markers.log $testsuite/stap-xul.sh }
catch {exec rm -rf xul}
}