зеркало из https://github.com/mozilla/gecko-dev.git
92 строки
3.0 KiB
Perl
92 строки
3.0 KiB
Perl
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
#
|
|
# Trender test
|
|
#
|
|
|
|
sub RenderPerformanceTest {
|
|
my ($test_name, $build_dir, $binary_dir, $args) = @_;
|
|
my $render_test_result;
|
|
my $render_time;
|
|
my $render_gfx_time;
|
|
my $render_details;
|
|
my $binary_log = "$build_dir/$test_name.log";
|
|
my $url;
|
|
|
|
# Find Trender.xml
|
|
if (-f "/cygdrive/c/builds/tinderbox/Trender/Trender.xml") {
|
|
$url = "file:///C:/builds/tinderbox/Trender/Trender.xml#tinderbox=1";
|
|
} elsif (-f "/builds/tinderbox/Trender/Trender.xml") {
|
|
$url = "file:///builds/tinderbox/Trender/Trender.xml#tinderbox=1";
|
|
} else {
|
|
Util::print_log("TinderboxPrint:Trender:[NOTFOUND]\n");
|
|
return 'testfailed';
|
|
}
|
|
|
|
# Settle OS.
|
|
system('/bin/sh -c "sync; sleep 5"');
|
|
|
|
$render_test_result = FileBasedTest($test_name, $build_dir, $binary_dir,
|
|
[@$args, $url],
|
|
$Settings::RenderTestTimeout,
|
|
"_x_x_mozilla_trender", 1, 1);
|
|
|
|
# double check to make sure the test didn't really succeed
|
|
# even though the scripts think it failed. Prevents various breakage
|
|
# (e.g. when a timeout happens on the mac, killing the process returns
|
|
# a bogus result code). FileBasedTest checks the status code
|
|
# before the token
|
|
my $found_token = file_has_token($binary_log, "_x_x_mozilla_trender");
|
|
if ($found_token) {
|
|
$render_test_result = 'success';
|
|
}
|
|
|
|
if ($render_test_result eq 'testfailed') {
|
|
Util::print_log("TinderboxPrint:Trender:[FAILED]\n");
|
|
return 'testfailed';
|
|
}
|
|
|
|
$render_time = Util::extract_token_from_file($binary_log, "_x_x_mozilla_trender", ",");
|
|
if ($render_time) {
|
|
chomp($render_time);
|
|
my @times = split(',', $render_time);
|
|
$render_time = $times[0];
|
|
}
|
|
$render_time =~ s/[\r\n]//g;
|
|
|
|
$render_gfx_time = Util::extract_token_from_file($binary_log, "_x_x_mozilla_trender_gfx", ",");
|
|
if ($render_gfx_time) {
|
|
chomp($render_gfx_time);
|
|
my @times = split(',', $render_gfx_time);
|
|
$render_gfx_time = $times[0];
|
|
}
|
|
$render_gfx_time =~ s/[\r\n]//g;
|
|
|
|
if (!$render_time || !$render_gfx_time) {
|
|
Util::print_log("TinderboxPrint:Trender:[FAILED]\n");
|
|
return 'testfailed';
|
|
}
|
|
|
|
Util::print_log_test_result_ms('render', 'Avg page render time in ms',
|
|
$render_time, 'Tr');
|
|
|
|
Util::print_log_test_result_ms('rendergfx', 'Avg gfx render time in ms',
|
|
$render_gfx_time, 'Tgfx');
|
|
|
|
if($Settings::TestsPhoneHome) {
|
|
# Pull out detail data from log; this includes results for all sets
|
|
my $raw_data = Util::extract_token_from_file($binary_log, "_x_x_mozilla_trender_details", ",");
|
|
chomp($raw_data);
|
|
|
|
Util::send_results_to_server($render_time, $raw_data, "render");
|
|
Util::send_results_to_server($render_gfx_time, $raw_data, "rendergfx");
|
|
}
|
|
|
|
return 'success';
|
|
}
|
|
|
|
1;
|