[PATCH 1/3] add testcases for function definitions

"Zhou, Wenjian/周文剑" zhouwj-fnst@cn.fujitsu.com
Tue Nov 10 02:11:00 GMT 2015


On 11/10/2015 02:07 AM, Josh Stone wrote:
> On 11/09/2015 12:57 AM, Zhou Wenjian wrote:
>> +foreach runtime [get_runtime_list] {
>> +    if {$runtime != ""} {
>> +	stap_run $srcdir/$subdir/$test.stp no_load ${all_pass_string}${all_pass_string}${all_pass_string}${all_pass_string}${all_pass_string} \
>> +	    --runtime=$runtime
>> +    } else {
>> +	stap_run $srcdir/$subdir/$test.stp no_load ${all_pass_string}${all_pass_string}${all_pass_string}${all_pass_string}${all_pass_string}
>> +    }
>> +}
>
> I disagree with using repetition like this for "exact" results.  The
> string already has regex repetition built in:
>
>    set all_pass_string "(systemtap test success\r\n)+"
>
> '+' means match one or more, greedily.  Repeating this expression on top
> of itself creates a bad case for the regex engine to backtrack.
> (It will work, but slowly.)
>
>
> IMO we ought to make stap_run ensure nothing comes *after* the expected
> output string.  If there are tests that are legitimately printing more
> output, those are the ones we should be fixing.
>
> Maybe we could also add the string without repetition, something like:
>
>    set pass_string "systemtap test success\r\n"
>    set all_pass_string "($pass_string)+"
>
> Then you can use "($pass_string){5}" if you really want exactly 5
> matches.  But stap_run should still make sure nothing comes after that.
>
>

I think either of them is enough to generate the correct result.
Why should stap_run still make sure nothing comes after matching
the exact output?

And between them, I prefer matching the exact output.

To make sure nothing comes, we have to modify all cases which use the
stap_run. I don't think it's a good idea that modifying the cases which
are working well.

-- 
Thanks
Zhou



More information about the Systemtap mailing list