X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fprofiler%2Fptestrunner.pl;h=0f2f5edf5aae83383aa6a9ce5aaca50c682136d0;hb=HEAD;hp=42946608efb263103d2e66368fcabd2c3b76c1ee;hpb=e2a31b612868ee44b269f517ee37d12c06ed9151;p=mono.git diff --git a/mono/profiler/ptestrunner.pl b/mono/profiler/ptestrunner.pl index 42946608efb..0f2f5edf5aa 100755 --- a/mono/profiler/ptestrunner.pl +++ b/mono/profiler/ptestrunner.pl @@ -6,7 +6,8 @@ use strict; my $builddir = shift || die "Usage: ptestrunner.pl mono_build_dir\n"; my @errors = (); -my $total_errors = 0; +my $total_errors = 0; # this is reset before each test +my $global_errors = 0; my $report; my $profbuilddir = $builddir . "/mono/profiler"; @@ -14,27 +15,25 @@ my $minibuilddir = $builddir . "/mono/mini"; # Setup the execution environment # for the profiler module -append_path ("LD_LIBRARY_PATH", $profbuilddir . "/.libs"); -append_path ("DYLD_LIBRARY_PATH", $profbuilddir . "/.libs"); append_path ("DYLD_LIBRARY_PATH", $minibuilddir . "/.libs"); # for mprof-report append_path ("PATH", $profbuilddir); # first a basic test -$report = run_test ("test-alloc.exe"); +$report = run_test ("test-alloc.exe", "report,legacy,calls,alloc"); check_report_basics ($report); check_report_calls ($report, "T:Main (string[])" => 1); check_report_allocation ($report, "System.Object" => 1000000); report_errors (); # test additional named threads and method calls -$report = run_test ("test-busy.exe"); +$report = run_test ("test-busy.exe", "report,legacy,calls,alloc"); check_report_basics ($report); check_report_calls ($report, "T:Main (string[])" => 1); check_report_threads ($report, "BusyHelper"); check_report_calls ($report, "T:test ()" => 10, "T:test3 ()" => 10, "T:test2 ()" => 1); report_errors (); # test with the sampling profiler -$report = run_test ("test-busy.exe", "report,sample"); +$report = run_test ("test-busy.exe", "report,legacy,sample"); check_report_basics ($report); check_report_threads ($report, "BusyHelper"); # at least 40% of the samples should hit each of the two busy methods @@ -42,20 +41,20 @@ check_report_threads ($report, "BusyHelper"); #check_report_samples ($report, "T:test ()" => 40, "T:test3 ()" => 40); report_errors (); # test lock events -$report = run_test ("test-monitor.exe"); +$report = run_test ("test-monitor.exe", "report,legacy,calls,alloc"); check_report_basics ($report); check_report_calls ($report, "T:Main (string[])" => 1); # we hope for at least some contention, this is not entirely reliable check_report_locks ($report, 1, 1); report_errors (); # test exceptions -$report = run_test ("test-excleave.exe"); +$report = run_test ("test-excleave.exe", "report,legacy,calls"); check_report_basics ($report); check_report_calls ($report, "T:Main (string[])" => 1, "T:throw_ex ()" => 1000); check_report_exceptions ($report, 1000, 1000, 1000); report_errors (); # test heapshot -$report = run_test_sgen ("test-heapshot.exe", "report,heapshot"); +$report = run_test_sgen ("test-heapshot.exe", "report,heapshot,legacy"); if ($report ne "missing binary") { check_report_basics ($report); check_report_heapshot ($report, 0, {"T" => 5000}); @@ -63,7 +62,7 @@ if ($report ne "missing binary") { report_errors (); } # test heapshot traces -$report = run_test_sgen ("test-heapshot.exe", "heapshot,output=-traces.mlpd", "--traces traces.mlpd"); +$report = run_test_sgen ("test-heapshot.exe", "heapshot,output=traces.mlpd,legacy", "--traces traces.mlpd"); if ($report ne "missing binary") { check_report_basics ($report); check_report_heapshot ($report, 0, {"T" => 5000}); @@ -77,7 +76,7 @@ if ($report ne "missing binary") { report_errors (); } # test traces -$report = run_test ("test-traces.exe", "output=-traces.mlpd", "--traces traces.mlpd"); +$report = run_test ("test-traces.exe", "legacy,calls,alloc,output=traces.mlpd", "--maxframes=7 --traces traces.mlpd"); check_report_basics ($report); check_call_traces ($report, "T:level3 (int)" => [2020, "T:Main (string[])"], @@ -93,7 +92,7 @@ check_alloc_traces ($report, ); report_errors (); # test traces without enter/leave events -$report = run_test ("test-traces.exe", "nocalls,output=-traces.mlpd", "--traces traces.mlpd"); +$report = run_test ("test-traces.exe", "legacy,alloc,output=traces.mlpd", "--traces traces.mlpd"); check_report_basics ($report); # this has been broken recently check_exception_traces ($report, @@ -106,7 +105,7 @@ report_errors (); emit_nunit_report(); -exit ($total_errors? 1: 0); +exit ($global_errors ? 1 : 0); # utility functions sub append_path { @@ -156,6 +155,7 @@ sub report_errors foreach my $e (@errors) { print "Error: $e\n"; $total_errors++; + $global_errors++; } print "Total errors: $total_errors\n" if $total_errors; #print $report; @@ -168,7 +168,7 @@ sub emit_nunit_report use Net::Domain qw(hostname hostfqdn); use locale; - my $failed = $total_errors ? 1 : 0; + my $failed = $global_errors ? 1 : 0; my $successbool; my $total = 1; my $mylocale = setlocale (LC_CTYPE); @@ -180,7 +180,7 @@ sub emit_nunit_report } else { $successbool = "True"; } - open (my $nunitxml, '>', 'TestResults_profiler.xml') or die "Could not write to 'TestResults_profiler.xml' $!"; + open (my $nunitxml, '>', 'TestResult-profiler.xml') or die "Could not write to 'TestResult-profiler.xml' $!"; print $nunitxml "\n"; print $nunitxml "\n"; print $nunitxml "\n"; @@ -317,8 +317,10 @@ sub check_alloc_traces while (@desc) { my $dm = pop @desc; my $fm = pop @frames; - $fm = pop @frames if $fm =~ /wrapper/; - push @errors, "Wrong frame $fm for alloc of $type." unless $dm eq $fm; + while ($fm =~ /wrapper/) { + $fm = pop @frames; + } + push @errors, "Wrong frame $fm for alloc of $type (expected $dm)." unless $dm eq $fm; } } else { push @errors, "No alloc frames for $type.";