|
1 #!/usr/bin/perl |
|
2 # |
|
3 # This Source Code Form is subject to the terms of the Mozilla Public |
|
4 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
6 use Time::HiRes qw(gettimeofday tv_interval); |
|
7 |
|
8 sub encodeHiResTime { |
|
9 my $timeref = shift; |
|
10 return unless ref($timeref); |
|
11 my $time = $$timeref[0] . "-" . $$timeref[1]; |
|
12 return $time; |
|
13 } |
|
14 |
|
15 my $time = encodeHiResTime([gettimeofday()]); |
|
16 |
|
17 print "Content-type: text/html\n\n"; |
|
18 print <<"ENDOFHTML"; |
|
19 <html> |
|
20 <head> |
|
21 <script> |
|
22 |
|
23 var gServerTime = '$time'; |
|
24 |
|
25 function tokenizeQuery() { |
|
26 var query = {}; |
|
27 var pairs = document.location.search.substring(1).split('&'); |
|
28 for (var i=0; i < pairs.length; i++) { |
|
29 var pair = pairs[i].split('='); |
|
30 query[pair[0]] = unescape(pair[1]); |
|
31 } |
|
32 return query; |
|
33 } |
|
34 |
|
35 function setLocationHref(aHref, aReplace) { |
|
36 if (aReplace) |
|
37 document.location.replace(aHref); |
|
38 else |
|
39 document.location.href = aHref; |
|
40 } |
|
41 |
|
42 var gHref; |
|
43 function doNextRequest(aTime) { |
|
44 function getValue(arg,def) { |
|
45 return !isNaN(arg) ? parseInt(Number(arg)) : def; |
|
46 } |
|
47 var q = tokenizeQuery(); |
|
48 var delay = getValue(q['delay'], 0); |
|
49 |
|
50 var now = (new Date()).getTime(); |
|
51 var c_intvl = now - c_ts; |
|
52 var c_ts = now + delay; // adjust for delay time |
|
53 // Now make the request ... |
|
54 if (q['url']) { |
|
55 gHref = q['url'] + |
|
56 "?c_part=" + -1 + // bogo request is not recorded |
|
57 "&index=" + 0 + |
|
58 "&id=" + q['id'] + |
|
59 "&maxcyc=" + q['maxcyc'] + |
|
60 "&replace=" + q['replace'] + |
|
61 "&nocache=" + q['nocache'] + |
|
62 "&delay=" + delay + |
|
63 "&timeout=" + q['timeout'] + |
|
64 "&c_intvl=" + c_intvl + |
|
65 "&s_ts=" + gServerTime + |
|
66 "&c_ts=" + c_ts; |
|
67 window.setTimeout("setLocationHref(gHref,false);", delay); |
|
68 return true; |
|
69 } |
|
70 } |
|
71 |
|
72 function startTest() { |
|
73 if (window.innerHeight && window.innerWidth) { |
|
74 // force a consistent region for layout and painting. |
|
75 window.innerWidth=820; |
|
76 window.innerHeight=620; |
|
77 } |
|
78 doNextRequest(0); |
|
79 } |
|
80 |
|
81 window.setTimeout("startTest()", 1000); |
|
82 |
|
83 </script> |
|
84 </head> |
|
85 <body> |
|
86 <p> |
|
87 This page starts the test. |
|
88 </p> |
|
89 <p> |
|
90 dummy page dummy page dummy page dummy page dummy page dummy page |
|
91 dummy page dummy page dummy page dummy page dummy page dummy page |
|
92 dummy page dummy page dummy page dummy page dummy page dummy page |
|
93 dummy page dummy page dummy page dummy page dummy page dummy page |
|
94 </p> |
|
95 <p> |
|
96 dummy page dummy page dummy page dummy page dummy page dummy page |
|
97 dummy page dummy page dummy page dummy page dummy page dummy page |
|
98 dummy page dummy page dummy page dummy page dummy page dummy page |
|
99 dummy page dummy page dummy page dummy page dummy page dummy page |
|
100 </p> |
|
101 <p> |
|
102 dummy page dummy page dummy page dummy page dummy page dummy page |
|
103 dummy page dummy page dummy page dummy page dummy page dummy page |
|
104 dummy page dummy page dummy page dummy page dummy page dummy page |
|
105 dummy page dummy page dummy page dummy page dummy page dummy page |
|
106 </p> |
|
107 </body> |
|
108 </html> |
|
109 |
|
110 ENDOFHTML |
|
111 |
|
112 exit 0; |