gecko-dev/testing/tinderbox-standalone-tests/Tests/RenderPerformanceTest.pm

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;