maria-discuss team mailing list archive
-
maria-discuss team
-
Mailing list archive
-
Message #00608
Re: Maria/Aria unit test failures
Hi,
(I wasn't subscribed to the list when the thread started, so the reply
might get misplaced, sorry about it. I'm answering this:
https://lists.launchpad.net/maria-discuss/msg00601.html)
>> My build tool runs 'make test-unit' and the following errors appear.
>> [16:34:05] ../storage/maria/unittest/ma_test_all-t
>> .....................
>> 73/830
>> Failed test '../storage/maria/unittest/../ma_test2 -s -htmp -m10000
>> -e4096 -K ' (loop iteration 8.) at line 316
>> (errcode: 256, test: 83)
From what I see, ma_test2 has the array key3[5000], used in a loop
which sets
n3=rnd(5000);
and then reads
key3[n3] == ...
while rnd(uint max_value) is
return (uint) ((rand() & 32767)/32767.0*max_value);
which means with some luck it can return max_value itself.
Luck happens, rnd returns 5000, key3[n3] reads something entirely wrong
(in my case the value of 'silent' variable which is int and set to 1 as
the unit test is launched with -s), the entire condition check with
key3[n3] gets twisted, the bogus error occurs.
The following change fixes the problem for me, although maybe there are
more elegant solutions.
=== modified file 'storage/maria/ma_test2.c'
--- storage/maria/ma_test2.c 2011-02-25 12:55:40 +0000
+++ storage/maria/ma_test2.c 2012-04-20 10:05:45 +0000
@@ -259,7 +259,7 @@
for (i=0 ; i < recant ; i++)
{
ulong blob_length;
- n1=rnd(1000); n2=rnd(100); n3=rnd(5000);
+ n1=rnd(1000); n2=rnd(100); n3=rnd(4999);
sprintf((char*) record,"%6d:%4d:%8d:Pos: %4d ",n1,n2,n3,write_count);
int4store(record+STANDARD_LENGTH-4,(long) i);
fix_length(record,(uint) STANDARD_LENGTH+rnd(60));
Regards,
Elena
Follow ups