#!/bin/sh # grep-2.21 would incur a 100x penalty for 10x increase in regexp length # Copyright 2015-2016 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . . "${srcdir=.}/init.sh"; path_prepend_ ../src fail=0 # This test is susceptible to failure due to differences in # system load during the two test runs, so we'll mark it as # "expensive", making it less likely to be run by regular users. expensive_ echo x > in || framework_failure_ # We could use seq -s '' (avoiding the tr filter), but I # suspect some version of seq does not honor that option. # Note that we want 10x the byte count (not line count) in the larger file. seq 10000 20000 | tr -d '\012' > re || framework_failure_ seq 10000 100000 | tr -d '\012' > re-10x || framework_failure_ base_ms=$(user_time_ 1 grep -f re in ) || fail=1 b10x_ms=$(user_time_ 1 grep -f re-10x in) || fail=1 # Increasing the length of the regular expression by a factor # of 10 should cause no more than a 10x increase in duration. # However, we'll draw the line at 20x to avoid false-positives. returns_ 1 expr $base_ms '<' $b10x_ms / 20 || fail=1 Exit $fail