blob: 405c88b407a72859fda4407328d8936a33fc91fe [file] [log] [blame]
#!/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.
# Compare PerfSuite lines in one file against those in another...
$argOne = shift( @ARGV );
$argTwo = shift( @ARGV );
$argOne =~ s/\\/\//g;
$argTwo =~ s/\\/\//g;
# Read baseline
if ( ! -f "$argOne" ) {
print "Error: No baseline file to for host, checkin appropriate testPutGetPerf.out as file $argOne\n";
exit( 1 );
}
open( FILONE, "grep PerfSuite $argOne|" ) || die( "Error: No baseline file to for host, checkin appropriate testPutGetPerf.out as file $argOne" );
while( $line = <FILONE> ) {
$line =~ m/PerfSuite\] (\w+) -- (\d+) ops/;
$key = $1;
$value = $2;
$dataone{"${key}"} = $value;
}
close( FILONE );
@tmp = keys( %dataone );
if ( $#tmp == -1 ) {
print "Error: No data found in $argOne\n";
exit( 1 );
}
# Read new results
if ( ! -f "$argTwo" ) {
print "Error: No result file from test to compare, expected $argTwo\n";
exit( 1 );
}
open( FILTWO, "grep PerfSuite $argTwo|" ) || die( "No file $argTwo" );
while( $line = <FILTWO> ) {
$line =~ m/PerfSuite\] (\w+) -- (\d+) ops/;
$key = $1;
$value = $2;
$datatwo{"${key}"} = $value;
}
close( FILTWO );
$code = 0;
@tmp = keys( %datatwo );
if ( $#tmp == -1 ) {
print "Error: No data found in $argTwo\n";
exit( 1 );
}
# display comparisons
format top =
%CHANGE TESTCASE BASELINE CURRENT
======== ============================ ======== ================
.
format STDOUT =
( @##% ) @<<<<<<<<<<<<<<<<<<<<<<<<<<< @####### @####### ops/sec
$percent, $item, $baseValue, $newValue
.
foreach $item (sort( keys( %dataone ) )) {
$change = $datatwo{"${item}"} - $dataone{"${item}"};
$percent = int( 100 * ( $change / $dataone{"${item}"} ));
$baseValue = $dataone{"${item}"};
$newValue = $datatwo{"${item}"};
write;
if ( $percent < ( -5 ) ) {
$code++;
}
}
if ( $code > 0 ) {
print "Error: $code performance cases failed by more than 5%\n";
}
exit( $code );