Permalink
Fetching contributors…
Cannot retrieve contributors at this time
167 lines (154 sloc) 4.84 KB
#!/usr/local/bin/perl
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This just runs one load regression session and writes everything to
# the screen.
# use /usr/ucb/rsh, not /usr/sbin/rsh...
$ENV{PATH} = "/usr/ucb:$ENV{PATH}";
require 'hostname.pl';
require 'ctime.pl';
########################################
# CONFIG
########################################
#$myserverportbase controls which range of ports are used on the ptest
# cluster. It is a good idea to leave a gap of 20 ports between starting
# port #s.
$myserverportbase{'foo'} = 10140;
chomp($ARCH=`arch`);
$test_bindir = "/net/granite/qa/ts/share/bin";
#$test_bindir = "/net/proxydev/export/crawlspace/workareas/clarsen/q/quality/sqe/ts_test";
# $users controls the 'load'.
$users = 10;
$testlength=180; # 3 minutes per test
$one_at_a_time = 1;
$version = "2.0"; # temp hack until multi-version support
########################################
# END of CONFIG
########################################
args:
while ($x = $ARGV[0]) {
if ($x eq "-h") {
shift(@ARGV);
$myhost = shift(@ARGV);
} elsif ($x eq "-p") {
shift(@ARGV);
$myport = shift(@ARGV);
} elsif ($x eq "-u") {
shift(@ARGV);
$users = shift(@ARGV);
} elsif ($x eq "-version") {
shift(@ARGV);
$version = shift(@ARGV);
} elsif ($x eq "-l") {
shift(@ARGV);
$testlength = shift(@ARGV);
} elsif ($x eq "-v") {
$verbose = "-verbose";
shift(@ARGV);
} elsif ($x eq "-all") {
$one_at_a_time = 0;
shift(@ARGV);
} elsif ($x eq "-t") {
shift(@ARGV);
@tests = split(',',shift(@ARGV));
} else {
last args;
}
}
$|=1; # unbuffer I/O
if (!defined($myhost)) {
$myhost = &hostname;
}
open(ID,"id|");
while(<ID>) {
chomp;
if (/uid=\d+\(([^\)]*)/) {
$mylogin = "$1";
}
}
close(ID);
if (! defined($mylogin)) {
die "Couldn't determine login from the id command.";
}
if (!defined($myport)) {
if (! (-e "etc/trafficserver/records.config.shadow") && ! ( -e "etc/trafficserver/records.config")) {
die "This must be run from traffic/proxy, and you must have etc/trafficserver/records.config.shadow set up.";
}
open(S,"<etc/trafficserver/records.config.shadow") || open(S,"<etc/trafficserver/records.config");
while (<S>) {
if (/proxy.config.http.server_port\s/) {
($x,$y,$z,$myport) = split(/\s+/);
}
}
close(S);
if (!defined($myport)) {
die "Couldn't determine your server port number";
} else {
print "Using proxy on $myhost:$myport\n";
}
}
$baseport = $myserverportbase{$mylogin};
if (!defined($baseport)) {
die "You must set \$myserverportbase{'$mylogin'}";
}
if ( ! (-d $test_bindir)) {
die "$test_bindir doesn't exist? Maybe /net/granite isn't available.";
}
$SIG{'TERM'} = sub {
print "caught TERM\n";
kill 'TERM', 0;
exit;
};
$SIG{'INT'} = sub {
print "caught INT\n";
kill 'INT', 0;
exit;
};
$SIG{'QUIT'} = sub {
print "caught QUIT\n";
kill 'QUIT', 0;
exit;
};
sub test_maybe_exit {
my ($rc) = @_;
$rc = $rc & 0xffff;
if ($rc > 0x80) {
print "---- failed\n";
}
if ($rc != 0) { # caught a signal
print &ctime(time);
die "Caught a signal";
}
}
if ($one_at_a_time) {
if (!defined(@tests)) {
#@tests = ('bad-header', 'garbage-1' 'garbage-2', 'cache', 'inkbench', 'garbage-1' );
@tests = ('jtest', 'cache', 'inkbench', 'bad-header', 'garbage-2', 'garbage-1' );
}
foreach $i (@tests) {
print "---- Running '$i' test on $myhost:$myport for $testlength seconds with $users users load\n";
print &ctime(time);
&test_maybe_exit(system("$test_bindir/run_all.pl $myhost $myport -hostpool inktomi -version $version -users $users -baseport $baseport -testlength $testlength -only $i $verbose"));
print &ctime(time);
print "---- Done with $i test\n";
}
} else {
@except = ('http11');
$excepts = join(',',@except);
print "Running all tests (except $excepts) on $myhost:$myport for $testlength seconds with $users users total load\n";
&test_maybe_exit(system("$test_bindir/run_all.pl $myhost $myport -hostpool inktomi -version $version -users $users -baseport $baseport -testlength $testlength -except $excepts $verbose"));
}