diff -r 7333d7932ef7 -r 8b7f4e561641 installationservices/swcomponentregistry/test/tscr/scripts/performance_log_parser.pl --- a/installationservices/swcomponentregistry/test/tscr/scripts/performance_log_parser.pl Tue Aug 31 15:21:33 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -# -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# Script: performance_log_parser.pl -# - -use strict; -use FileHandle; - -my $Test_Case_Start_Tag = "START_TESTCASE"; -my $Test_Case_End_Tag = "END_TESTCASE"; -my $Event_print = "PERFORMANCE_LOG_INFORMATION"; -my $Test_Case_Max_Duration = "TEST_CASE_MAXIMUM_ALLOWED_DURATION"; -my $ScrEventCode = 1; - -my $defInputFile = "/epoc32/winscw/c/logs/testexecute/tscr_performance.htm"; -my $defOutputFile = "/epoc32/winscw/c/logs/scr_performance.txt"; - -sub millisec - { - no warnings 'uninitialized'; - my ($mytime) = @_ ; - $mytime =~ /([0-9]*):([0-9]*):([0-9]*):([0-9]*)$/; - my $milisec = $4; - my $sec = $3; - my $min = $2; - my $hour = $1; - - my $msecs = ($milisec / 1000) + ($sec *1000) + ($min * 60000) + ($hour * 3600000); - return $msecs; - } - -sub process_log_file - { - my ($data_file, $output_FH) = @_; - print $output_FH "#Test Case Name,Maximum Duration(ms),Actual Duration(ms),Result\n"; - - # enable reading whole file as one chunk - my $SAVE_RS = $/; - undef $/; - - # open and read the log file in a single line - open(DAT, $data_file) || die("Could not open file $data_file!"); - my $raw_data=; - close(DAT); - $raw_data=~ s/\n/ /g; - - # restore previous record separator - $/ = $SAVE_RS; - - my $num_passed = 0; - my $num_failed = 0; - - while ($raw_data && $raw_data =~ /$Test_Case_Start_Tag\s+(\S+)/) - { - # step through the file in chunks delimited by the start/end test case tags. - - my $test_case_name = $1; - my ($test_case_data) = ($raw_data =~ /$Test_Case_Start_Tag(.*?)$Test_Case_End_Tag/); - - if (not $test_case_data) - { - print STDERR "Error: Test case: $test_case_name: Suspected missing END_TESTCASE tag.\n"; - } - - ($raw_data) = ($raw_data =~ /$Test_Case_End_Tag(.*)/); - ($raw_data) = ($raw_data =~ /($Test_Case_Start_Tag.*)/) if $raw_data; - - my ($max_duration) = ($test_case_data =~ /$Test_Case_Max_Duration,([0-9]+)/); - if (!defined $max_duration) - { - $max_duration = 0; - } - - my $start_time = "0"; - my $end_time = "0"; - my $first = 1; - - while ($test_case_data and ($test_case_data =~ /$Event_print(.*)/) ) - { - # get the event time. if this is the first time value in the chunk, it is the start time of the event. - #otherwise, continue until reaching the last time value. - my $start_log_msg = $1; - - $start_log_msg =~ /,(.+?)\s(.*)/; - - if($first == 1) - { - $start_time = $1; - $first = 0; - } - else - { - $end_time = $1; - } - - $test_case_data = $2; - } - - if(!($start_time eq "0") && !($end_time eq "0")) - { - my $actual_duration = millisec($end_time) - millisec($start_time); - my $result; - if( $actual_duration <= $max_duration) - { - $result = "Passed"; - $num_passed += 1; - } - else - { - $result = "Failed"; - $num_failed += 1; - } - - print $output_FH "$test_case_name,$max_duration,$actual_duration,$result\n"; - } - } - print $output_FH (sprintf "\n\n%d tests failed out of %d\n", $num_failed, $num_passed+$num_failed); - } - - -sub usage - { - print < - - : A log file to process - (default- $defInputFile) - - : Final output file name - (default- $defOutputFile) -USAGE - } - - -sub Main - { - my @argv = @_; - # if input and output files are not provided, default ones will be used - my $input_file = $defInputFile; - my $output_file = $defOutputFile; - - if(@argv > 2) - { - usage; - exit; - } - elsif(@argv == 2) - {# input and output files are provided, don't use default ones - $input_file = shift @argv; - $output_file = shift @argv; - } - - my $outputFH = \*STDOUT; # results to STDOUT by default - - if (defined $output_file) - { - $outputFH = FileHandle->new; - $outputFH->open("> $output_file") or die "Error: File $output_file: $!"; - } - process_log_file($input_file,$outputFH); - - $outputFH->close; -} - -Main(@ARGV); \ No newline at end of file