1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/tools/page-loader/echo.pl Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,112 @@ 1.4 +#!/usr/bin/perl 1.5 +# 1.6 +# This Source Code Form is subject to the terms of the Mozilla Public 1.7 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.9 +use Time::HiRes qw(gettimeofday tv_interval); 1.10 + 1.11 +sub encodeHiResTime { 1.12 + my $timeref = shift; 1.13 + return unless ref($timeref); 1.14 + my $time = $$timeref[0] . "-" . $$timeref[1]; 1.15 + return $time; 1.16 +} 1.17 + 1.18 +my $time = encodeHiResTime([gettimeofday()]); 1.19 + 1.20 +print "Content-type: text/html\n\n"; 1.21 +print <<"ENDOFHTML"; 1.22 +<html> 1.23 +<head> 1.24 +<script> 1.25 + 1.26 +var gServerTime = '$time'; 1.27 + 1.28 +function tokenizeQuery() { 1.29 + var query = {}; 1.30 + var pairs = document.location.search.substring(1).split('&'); 1.31 + for (var i=0; i < pairs.length; i++) { 1.32 + var pair = pairs[i].split('='); 1.33 + query[pair[0]] = unescape(pair[1]); 1.34 + } 1.35 + return query; 1.36 +} 1.37 + 1.38 +function setLocationHref(aHref, aReplace) { 1.39 + if (aReplace) 1.40 + document.location.replace(aHref); 1.41 + else 1.42 + document.location.href = aHref; 1.43 +} 1.44 + 1.45 +var gHref; 1.46 +function doNextRequest(aTime) { 1.47 + function getValue(arg,def) { 1.48 + return !isNaN(arg) ? parseInt(Number(arg)) : def; 1.49 + } 1.50 + var q = tokenizeQuery(); 1.51 + var delay = getValue(q['delay'], 0); 1.52 + 1.53 + var now = (new Date()).getTime(); 1.54 + var c_intvl = now - c_ts; 1.55 + var c_ts = now + delay; // adjust for delay time 1.56 + // Now make the request ... 1.57 + if (q['url']) { 1.58 + gHref = q['url'] + 1.59 + "?c_part=" + -1 + // bogo request is not recorded 1.60 + "&index=" + 0 + 1.61 + "&id=" + q['id'] + 1.62 + "&maxcyc=" + q['maxcyc'] + 1.63 + "&replace=" + q['replace'] + 1.64 + "&nocache=" + q['nocache'] + 1.65 + "&delay=" + delay + 1.66 + "&timeout=" + q['timeout'] + 1.67 + "&c_intvl=" + c_intvl + 1.68 + "&s_ts=" + gServerTime + 1.69 + "&c_ts=" + c_ts; 1.70 + window.setTimeout("setLocationHref(gHref,false);", delay); 1.71 + return true; 1.72 + } 1.73 +} 1.74 + 1.75 +function startTest() { 1.76 + if (window.innerHeight && window.innerWidth) { 1.77 + // force a consistent region for layout and painting. 1.78 + window.innerWidth=820; 1.79 + window.innerHeight=620; 1.80 + } 1.81 + doNextRequest(0); 1.82 +} 1.83 + 1.84 +window.setTimeout("startTest()", 1000); 1.85 + 1.86 +</script> 1.87 +</head> 1.88 +<body> 1.89 + <p> 1.90 + This page starts the test. 1.91 + </p> 1.92 + <p> 1.93 + dummy page dummy page dummy page dummy page dummy page dummy page 1.94 + dummy page dummy page dummy page dummy page dummy page dummy page 1.95 + dummy page dummy page dummy page dummy page dummy page dummy page 1.96 + dummy page dummy page dummy page dummy page dummy page dummy page 1.97 + </p> 1.98 + <p> 1.99 + dummy page dummy page dummy page dummy page dummy page dummy page 1.100 + dummy page dummy page dummy page dummy page dummy page dummy page 1.101 + dummy page dummy page dummy page dummy page dummy page dummy page 1.102 + dummy page dummy page dummy page dummy page dummy page dummy page 1.103 + </p> 1.104 + <p> 1.105 + dummy page dummy page dummy page dummy page dummy page dummy page 1.106 + dummy page dummy page dummy page dummy page dummy page dummy page 1.107 + dummy page dummy page dummy page dummy page dummy page dummy page 1.108 + dummy page dummy page dummy page dummy page dummy page dummy page 1.109 + </p> 1.110 +</body> 1.111 +</html> 1.112 + 1.113 +ENDOFHTML 1.114 + 1.115 +exit 0;