mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge bk-internal.mysql.com:/home/bk/mysql-maria
into janus.mylan:/usr/home/serg/Abk/mysql-maria
This commit is contained in:
commit
a50f1641f5
12 changed files with 460 additions and 21 deletions
|
@ -2807,13 +2807,15 @@ static void translog_free_link(PAGECACHE_BLOCK_LINK *direct_link)
|
|||
@param last_page_ok Result of the check whether last page OK.
|
||||
(for now only we check only that file length
|
||||
divisible on page length).
|
||||
@param no_errors suppress messages about non-critical errors
|
||||
|
||||
@retval 0 OK
|
||||
@retval 1 Error
|
||||
*/
|
||||
|
||||
static my_bool translog_get_last_page_addr(TRANSLOG_ADDRESS *addr,
|
||||
my_bool *last_page_ok)
|
||||
my_bool *last_page_ok,
|
||||
my_bool no_errors)
|
||||
{
|
||||
MY_STAT stat_buff, *local_stat;
|
||||
char path[FN_REFLEN];
|
||||
|
@ -2822,7 +2824,8 @@ static my_bool translog_get_last_page_addr(TRANSLOG_ADDRESS *addr,
|
|||
DBUG_ENTER("translog_get_last_page_addr");
|
||||
|
||||
if (!(local_stat= my_stat(translog_filename_by_fileno(file_no, path),
|
||||
&stat_buff, MYF(MY_WME))))
|
||||
&stat_buff,
|
||||
(no_errors ? MYF(0) : MYF(MY_WME)))))
|
||||
DBUG_RETURN(1);
|
||||
DBUG_PRINT("info", ("File size: %lu", (ulong) local_stat->st_size));
|
||||
if (local_stat->st_size > TRANSLOG_PAGE_SIZE)
|
||||
|
@ -3049,6 +3052,7 @@ my_bool translog_is_log_files()
|
|||
TRANSLOG_RECORD_CRC)
|
||||
@param read_only Put transaction log in read-only mode
|
||||
@param init_table_func function to initialize record descriptors table
|
||||
@param no_errors suppress messages about non-critical errors
|
||||
|
||||
@todo
|
||||
Free used resources in case of error.
|
||||
|
@ -3062,7 +3066,8 @@ my_bool translog_init_with_table(const char *directory,
|
|||
uint32 server_version,
|
||||
uint32 server_id, PAGECACHE *pagecache,
|
||||
uint flags, my_bool readonly,
|
||||
void (*init_table_func)())
|
||||
void (*init_table_func)(),
|
||||
my_bool no_errors)
|
||||
{
|
||||
int i;
|
||||
int old_log_was_recovered= 0, logs_found= 0;
|
||||
|
@ -3217,7 +3222,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||
}
|
||||
/* Set horizon to the beginning of the last file first */
|
||||
log_descriptor.horizon= last_page= MAKE_LSN(last_logno, 0);
|
||||
if (translog_get_last_page_addr(&last_page, &pageok))
|
||||
if (translog_get_last_page_addr(&last_page, &pageok, no_errors))
|
||||
{
|
||||
if (!translog_is_log_files())
|
||||
{
|
||||
|
@ -3238,7 +3243,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||
else
|
||||
{
|
||||
last_page-= LSN_ONE_FILE;
|
||||
if (translog_get_last_page_addr(&last_page, &pageok))
|
||||
if (translog_get_last_page_addr(&last_page, &pageok, 0))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
|
@ -3317,7 +3322,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||
{
|
||||
TRANSLOG_ADDRESS current_file_last_page;
|
||||
current_file_last_page= current_page;
|
||||
if (translog_get_last_page_addr(¤t_file_last_page, &pageok))
|
||||
if (translog_get_last_page_addr(¤t_file_last_page, &pageok, 0))
|
||||
DBUG_RETURN(1);
|
||||
if (!pageok)
|
||||
{
|
||||
|
@ -3593,7 +3598,7 @@ my_bool translog_init_with_table(const char *directory,
|
|||
}
|
||||
file_no--;
|
||||
page_addr= MAKE_LSN(file_no, TRANSLOG_PAGE_SIZE);
|
||||
translog_get_last_page_addr(&page_addr, &last_page_ok);
|
||||
translog_get_last_page_addr(&page_addr, &last_page_ok, 0);
|
||||
/* page should be OK as it is not the last file */
|
||||
DBUG_ASSERT(last_page_ok);
|
||||
}
|
||||
|
@ -5842,7 +5847,7 @@ static my_bool translog_scanner_set_last_page(TRANSLOG_SCANNER_DATA *scanner)
|
|||
return (0);
|
||||
}
|
||||
scanner->last_file_page= scanner->page_addr;
|
||||
return (translog_get_last_page_addr(&scanner->last_file_page, &page_ok));
|
||||
return (translog_get_last_page_addr(&scanner->last_file_page, &page_ok, 0));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ C_MODE_START
|
|||
extern void translog_example_table_init();
|
||||
extern void translog_table_init();
|
||||
#define translog_init(D,M,V,I,C,F,R) \
|
||||
translog_init_with_table(D,M,V,I,C,F,R,&translog_table_init)
|
||||
translog_init_with_table(D,M,V,I,C,F,R,&translog_table_init,0)
|
||||
extern my_bool translog_init_with_table(const char *directory,
|
||||
uint32 log_file_max_size,
|
||||
uint32 server_version,
|
||||
|
@ -265,7 +265,8 @@ extern my_bool translog_init_with_table(const char *directory,
|
|||
PAGECACHE *pagecache,
|
||||
uint flags,
|
||||
my_bool readonly,
|
||||
void (*init_table_func)());
|
||||
void (*init_table_func)(),
|
||||
my_bool no_error);
|
||||
|
||||
extern my_bool
|
||||
translog_write_record(LSN *lsn, enum translog_record_type type, TRN *trn,
|
||||
|
|
424
storage/maria/unittest/ma_test_all-t
Executable file
424
storage/maria/unittest/ma_test_all-t
Executable file
|
@ -0,0 +1,424 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Run various unit tests.
|
||||
#
|
||||
|
||||
my $maria_path= $ENV{'maria_path'};
|
||||
|
||||
run_tests();
|
||||
|
||||
####
|
||||
#### Initialise variables, clean temporary files and run the tests
|
||||
####
|
||||
|
||||
sub run_tests
|
||||
{
|
||||
my $valgrind_opt= "valgrind --alignment=8 --leak-check=yes";
|
||||
my $silent_opt= "-s";
|
||||
my $suffix= "";
|
||||
my $nr_tests= 0;
|
||||
|
||||
#
|
||||
# initialisations and previous run clean-ups
|
||||
#
|
||||
|
||||
$maria_path= "." if (!defined($maria_path) || !length($maria_path));
|
||||
unlink <*.TMD maria_log*>; # Delete temporary files
|
||||
|
||||
#
|
||||
# IMPORTANT: If you modify this file, please read this:
|
||||
#
|
||||
# Count total number of tests. Make sure that the functions return
|
||||
# number of unit tests correctly, e.g. calls to ok(). The last argument
|
||||
# for each function is a flag counter and will return the number of
|
||||
# unit tests in each. Please see comments on function ok() at the end.
|
||||
#
|
||||
# If you modify any functions or add any new ones, please make sure the
|
||||
# unit tests are appropriately detected here. A wrong count will
|
||||
# make the unit test fail during 'make test'. $nr_tests must be right.
|
||||
#
|
||||
|
||||
$nr_tests+= run_check_tests(0, 0, 0, 0, 1) * 4; #
|
||||
$nr_tests+= run_repair_tests(0, 0, 0, 0, 1) * 4; # called 4 times
|
||||
$nr_tests+= run_pack_tests(0, 0, 0, 0, 1) * 4; #
|
||||
$nr_tests+= run_tests_on_warnings_and_errors(0, 0, 0, 1);
|
||||
$nr_tests+= run_ma_test_recovery(0, 1);
|
||||
$nr_tests+= run_tests_on_clrs(0, 1);
|
||||
|
||||
#
|
||||
# Run tests
|
||||
#
|
||||
|
||||
print "1..$nr_tests\n";
|
||||
|
||||
print "Running tests with dynamic row format\n";
|
||||
run_check_tests($suffix, $silent_opt, "", 0, 0);
|
||||
run_repair_tests($suffix, $silent_opt, "", 0, 0);
|
||||
run_pack_tests($suffix, $silent_opt, "", 0, 0);
|
||||
|
||||
print "Running tests with static row format\n";
|
||||
run_check_tests($suffix, $silent_opt, "-S", 0, 0);
|
||||
run_repair_tests($suffix, $silent_opt, "-S", 0, 0);
|
||||
run_pack_tests($suffix, $silent_opt, "-S", 0, 0);
|
||||
|
||||
print "Running tests with block row format\n";
|
||||
run_check_tests($suffix, $silent_opt, "-M", 0, 0);
|
||||
run_repair_tests($suffix, $silent_opt, "-M", 0, 0);
|
||||
run_pack_tests($suffix, $silent_opt, "-M", 0, 0);
|
||||
|
||||
print "Running tests with block row format and transactions\n";
|
||||
run_check_tests($suffix, $silent_opt, "-M -T", 0, 0);
|
||||
run_repair_tests($suffix, $silent_opt, "-M -T", 0, 0);
|
||||
run_pack_tests($suffix, $silent_opt, "-M -T", 0, 0);
|
||||
|
||||
run_tests_on_warnings_and_errors($suffix, $silent_opt, 0, 0);
|
||||
run_ma_test_recovery(0, 0);
|
||||
run_tests_on_clrs(0, 0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
####
|
||||
#### regular tests
|
||||
####
|
||||
|
||||
sub run_check_tests
|
||||
{
|
||||
my ($suffix, $silent, $row_type, $verbose, $count)= @_;
|
||||
my ($i, $nr_tests);
|
||||
my @ma_test1_opt= ( ["","-se"],
|
||||
["-N","-se"],
|
||||
["-P --checksum","-se"],
|
||||
["-P -N","-se"],
|
||||
["-B -N -R2","-sm"],
|
||||
["-a -k 480 --unique","-sm"],
|
||||
["-a -N -R1 ","-sm"],
|
||||
["-p","-sm"],
|
||||
["-p -N --unique","-sm"],
|
||||
["-p -N --key_length=127 --checksum","-sm"],
|
||||
["-p -N --key_length=128","-sm"],
|
||||
["-p --key_length=480","-sm"],
|
||||
["-a -B","-sm"],
|
||||
["-a -B --key_length=64 --unique","-sm"],
|
||||
["-a -B -k 480 --checksum","-sm"],
|
||||
["-a -B -k 480 -N --unique --checksum","-sm"],
|
||||
["-a -m","-sm"],
|
||||
["-a -m -P --unique --checksum","-sm"],
|
||||
["-a -m -P --key_length=480 --key_cache","-sm"],
|
||||
["-m -p","-sm"],
|
||||
["-w --unique","-sm"],
|
||||
["-a -w --key_length=64 --checksum","-sm"],
|
||||
["-a -w -N --key_length=480","-sm"],
|
||||
["-a -w --key_length=480 --checksum","-sm"],
|
||||
["-a -b -N","-sm"],
|
||||
["-a -b --key_length=480","-sm"],
|
||||
["-p -B --key_length=480","-sm"],
|
||||
["--checksum --unique","-se"],
|
||||
["--unique","-se"],
|
||||
["--key_multiple -N -S","-sm"],
|
||||
["--key_multiple -a -p --key_length=480","-sm"],
|
||||
["--key_multiple -a -B --key_length=480","-sm"],
|
||||
["--key_multiple -P -S","-sm"] );
|
||||
my @ma_test2_opt= ( ["-L -K -W -P","-sm"],
|
||||
["-L -K -W -P -A","-sm"],
|
||||
["-L -K -P -R3 -m50 -b1000000","-sm"],
|
||||
["-L -B","-sm"],
|
||||
["-D -B -c","-sm"],
|
||||
["-m10000 -e4096 -K","-sm"],
|
||||
["-m10000 -e8192 -K","-sm"],
|
||||
["-m10000 -e16384 -E16384 -K -L","-sm"],
|
||||
["-c -b65000","-se"] );
|
||||
|
||||
if ($count)
|
||||
{
|
||||
$nr_tests= 2; # Number of tests outside loops
|
||||
for ($i= 0; defined($ma_test1_opt[$i]); $i++) { $nr_tests+=2; }
|
||||
for ($i= 0; defined($ma_test2_opt[$i]); $i++) { $nr_tests+=2; }
|
||||
return $nr_tests;
|
||||
}
|
||||
|
||||
for ($i= 0; defined($ma_test1_opt[$i]); $i++)
|
||||
{
|
||||
unlink <maria_log_control maria_log.*>;
|
||||
ok("$maria_path/ma_test1$suffix $silent $ma_test1_opt[$i][0] $row_type",
|
||||
$verbose, $i + 1);
|
||||
ok("$maria_path/maria_chk$suffix $ma_test1_opt[$i][1] test1",
|
||||
$verbose, $i + 1);
|
||||
}
|
||||
#
|
||||
# These tests are outside the loops. Make sure to include them in
|
||||
# nr_tests manually
|
||||
#
|
||||
ok("$maria_path/maria_pack$suffix --force -s test1", $verbose, 0);
|
||||
ok("$maria_path/maria_chk$suffix -ess test1", $verbose, 0);
|
||||
|
||||
for ($i= 0; defined($ma_test2_opt[$i]); $i++)
|
||||
{
|
||||
unlink <maria_log_control maria_log.*>;
|
||||
ok("$maria_path/ma_test2$suffix $silent $ma_test2_opt[$i][0] $row_type",
|
||||
$verbose, $i + 1);
|
||||
ok("$maria_path/maria_chk$suffix $ma_test2_opt[$i][1] test2",
|
||||
$verbose, $i + 1);
|
||||
}
|
||||
unlink <rm -f maria_log_control maria_log.*>;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
####
|
||||
#### repair tests
|
||||
####
|
||||
|
||||
sub run_repair_tests()
|
||||
{
|
||||
my ($suffix, $silent, $row_type, $verbose, $count)= @_;
|
||||
my ($i, $nr_tests);
|
||||
my @t1= ("$maria_path/ma_test1$suffix $silent --checksum $row_type",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix --silent -re --transaction-log test1",
|
||||
"$maria_path/maria_chk$suffix -rs test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -rqs test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -rs --correct-checksum test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -rqs --correct-checksum test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -ros --correct-checksum test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -rqos --correct-checksum test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/ma_test2$suffix $silent -c -d1 $row_type",
|
||||
"$maria_path/maria_chk$suffix -s --parallel-recover test2",
|
||||
"$maria_path/maria_chk$suffix -se test2",
|
||||
"$maria_path/maria_chk$suffix -s --parallel-recover --quick test2",
|
||||
"$maria_path/maria_chk$suffix -se test2",
|
||||
"$maria_path/ma_test2$suffix $silent -c $row_type",
|
||||
"$maria_path/maria_chk$suffix -se test2",
|
||||
"$maria_path/maria_chk$suffix -sr test2",
|
||||
"$maria_path/maria_chk$suffix -se test2"
|
||||
);
|
||||
|
||||
if ($count)
|
||||
{
|
||||
$nr_tests= 0;
|
||||
for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; }
|
||||
return $nr_tests;
|
||||
}
|
||||
for ($i= 0; defined($t1[$i]); $i++)
|
||||
{
|
||||
ok($t1[$i], $verbose, $i + 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
####
|
||||
#### pack tests
|
||||
####
|
||||
|
||||
sub run_pack_tests()
|
||||
{
|
||||
my ($suffix, $silent, $row_type, $verbose, $count)= @_;
|
||||
my ($i, $nr_tests);
|
||||
|
||||
my @t1= ("$maria_path/ma_test1$suffix $silent --checksum $row_type",
|
||||
"$maria_path/maria_pack$suffix --force -s test1",
|
||||
"$maria_path/maria_chk$suffix -ess test1",
|
||||
"$maria_path/maria_chk$suffix -rqs test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
"$maria_path/maria_chk$suffix -rs test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
"$maria_path/maria_chk$suffix -rus test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
|
||||
"$maria_path/ma_test1$suffix $silent --checksum $row_type",
|
||||
"$maria_path/maria_pack$suffix --force -s test1",
|
||||
"$maria_path/maria_chk$suffix -rus --safe-recover test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
|
||||
"$maria_path/ma_test1$suffix $silent --checksum -S $row_type",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
"$maria_path/maria_chk$suffix -ros test1",
|
||||
"$maria_path/maria_chk$suffix -rqs test1",
|
||||
"$maria_path/maria_chk$suffix -se test1",
|
||||
|
||||
"$maria_path/maria_pack$suffix --force -s test1",
|
||||
"$maria_path/maria_chk$suffix -rqs test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
"$maria_path/maria_chk$suffix -rus test1",
|
||||
"$maria_path/maria_chk$suffix -es test1",
|
||||
|
||||
"$maria_path/ma_test2$suffix $silent -c -d1 $row_type",
|
||||
"$maria_path/maria_chk$suffix -s --parallel-recover test2",
|
||||
"$maria_path/maria_chk$suffix -se test2",
|
||||
"$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2",
|
||||
"$maria_path/maria_chk$suffix -se test2",
|
||||
"$maria_path/maria_pack$suffix --force -s test1",
|
||||
"$maria_path/maria_chk$suffix -s --unpack --parallel-recover test2",
|
||||
"$maria_path/maria_chk$suffix -se test2"
|
||||
);
|
||||
|
||||
if ($count)
|
||||
{
|
||||
$nr_tests= 0;
|
||||
for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; }
|
||||
return $nr_tests;
|
||||
}
|
||||
for ($i= 0; defined($t1[$i]); $i++)
|
||||
{
|
||||
ok($t1[$i], $verbose, $i + 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
####
|
||||
#### Tests that gives warnings or errors
|
||||
####
|
||||
|
||||
sub run_tests_on_warnings_and_errors
|
||||
{
|
||||
my ($suffix, $silent, $verbose, $count)= @_;
|
||||
my ($com);
|
||||
|
||||
return 9 if ($count); # Number of tests in this function, e.g. calls to ok()
|
||||
|
||||
ok("$maria_path/ma_test2$suffix $silent -L -K -W -P -S -R1 -m500",
|
||||
$verbose, 0);
|
||||
ok("$maria_path/maria_chk$suffix -sm test2", $verbose, 0);
|
||||
print "ma_test2$suffix $silent -L -K -R1 -m2000 ; Should give error 135\n";
|
||||
# In the following a failure is a success and success is a failure
|
||||
$com= "$maria_path/ma_test2$suffix $silent -L -K -R1 -m2000 ";
|
||||
$com.= ">ma_test2_message.txt 2>&1 && false";
|
||||
ok($com, $verbose, 0, 1);
|
||||
ok("cat ma_test2_message.txt", $verbose, 0);
|
||||
ok("grep \"Error: 135\" ma_test2_message.txt > /dev/null", $verbose, 0);
|
||||
print "$maria_path/maria_chk$suffix -sm test2 will warn that\n";
|
||||
print "'Datafile is almost full'\n";
|
||||
ok("$maria_path/maria_chk$suffix -sm test2 >ma_test2_message.txt 2>&1",
|
||||
$verbose, 0);
|
||||
ok("cat ma_test2_message.txt", $verbose, 0);
|
||||
ok("grep \"warning: Datafile is almost full\" ma_test2_message.txt>/dev/null",
|
||||
$verbose, 0);
|
||||
unlink <rm -f ma_test2_message.txt>;
|
||||
ok("$maria_path/maria_chk$suffix -ssm test2", $verbose, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
####
|
||||
#### Test that removing tables and applying the log leads to identical tables
|
||||
####
|
||||
|
||||
sub run_ma_test_recovery
|
||||
{
|
||||
my ($verbose, $count)= @_;
|
||||
|
||||
return 1 if ($count); # Number of tests in this function
|
||||
ok("$maria_path/ma_test_recovery", $verbose, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
####
|
||||
#### Tests on CLR's
|
||||
####
|
||||
|
||||
sub run_tests_on_clrs
|
||||
{
|
||||
my ($verbose, $count)= @_;
|
||||
my ($i, $nr_tests);
|
||||
|
||||
my @t1= ("$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -u1",
|
||||
"cp maria_log_control tmp",
|
||||
"$maria_path/maria_read_log -a -s",
|
||||
"$maria_path/maria_chk -s -e test2",
|
||||
"cp tmp/maria_log_control .",
|
||||
"rm test2.MA?",
|
||||
"$maria_path/maria_read_log -a -s",
|
||||
"$maria_path/maria_chk -s -e test2"
|
||||
);
|
||||
my @t2= ("$maria_path/ma_test2 -s -L -K -W -P -M -T -c -b -t2 -u1",
|
||||
"$maria_path/maria_read_log -a -s",
|
||||
"$maria_path/maria_chk -s -e test2",
|
||||
"rm test2.MA?",
|
||||
"$maria_path/maria_read_log -a -s",
|
||||
"$maria_path/maria_chk -e -s test2"
|
||||
);
|
||||
|
||||
if ($count)
|
||||
{
|
||||
$nr_tests= 0;
|
||||
for ($i= 0; defined($t1[$i]); $i++) { $nr_tests++; }
|
||||
for ($i= 0; defined($t2[$i]); $i++) { $nr_tests++; }
|
||||
return $nr_tests;
|
||||
}
|
||||
|
||||
unlink <maria_log.* maria_log_control>;
|
||||
for ($i= 0; defined($t1[$i]); $i++)
|
||||
{
|
||||
ok($t1[$i], $verbose, $i + 1);
|
||||
}
|
||||
|
||||
unlink <maria_log.* maria_log_control>;
|
||||
for ($i= 0; defined($t2[$i]); $i++)
|
||||
{
|
||||
ok($t2[$i], $verbose, $i + 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#
|
||||
# Print "ok" on success and "not ok" on error
|
||||
#
|
||||
# Note: Every time this function is called it will be counted
|
||||
# as a unit test.
|
||||
#
|
||||
# Args: $com: The actual command run. Will be printed on a failure
|
||||
# $verbose: Be more verbose.
|
||||
# $iteration: Number of iterations in a loop when the error
|
||||
# occurred. If not in loop, this should be blank
|
||||
# (e.g. send zero).
|
||||
# $expected_error: Optional; put here expected error code. Test
|
||||
# will pass with this result only.
|
||||
#
|
||||
# Return value: Will return 1 on success and 0 on an error
|
||||
#
|
||||
|
||||
sub ok
|
||||
{
|
||||
my ($com, $verbose, $iteration, $expected_error)= @_;
|
||||
my ($msg, $output, $err);
|
||||
|
||||
$expected_error= 0 if (!defined($expected_error));
|
||||
|
||||
if ($verbose)
|
||||
{
|
||||
print "Running: '$com'\n";
|
||||
}
|
||||
$output= `$com 2>&1`;
|
||||
$err= $? >> 8;
|
||||
if ($verbose)
|
||||
{
|
||||
print "$output\n";
|
||||
}
|
||||
if ($err == $expected_error)
|
||||
{
|
||||
print "ok\n";
|
||||
return 1;
|
||||
}
|
||||
print "not ok\n";
|
||||
$msg= "\nFailed test '$com' ";
|
||||
if ($iteration)
|
||||
{
|
||||
$msg.= "(loop iteration $iteration.) ";
|
||||
}
|
||||
$msg.= "at line ";
|
||||
$msg.= (caller)[2];
|
||||
$msg.= " (errcode: $err)\n";
|
||||
if ($expected_error)
|
||||
{
|
||||
$msg.= "Was expecting errcode: $expected_error\n";
|
||||
}
|
||||
warn $msg;
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -177,7 +177,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -67,7 +67,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -61,7 +61,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -186,7 +186,7 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
0, 0, &translog_example_table_init))
|
||||
0, 0, &translog_example_table_init, 0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
@ -350,7 +350,7 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
0, READONLY, &translog_example_table_init))
|
||||
0, READONLY, &translog_example_table_init, 0))
|
||||
{
|
||||
fprintf(stderr, "pass2: Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -284,7 +284,8 @@ int main(int argc __attribute__((unused)),
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -69,7 +69,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -64,7 +64,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
@ -137,7 +138,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
1))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -94,7 +94,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
|
@ -64,7 +64,8 @@ int main(int argc __attribute__((unused)), char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
if (translog_init_with_table(".", LOG_FILE_SIZE, 50112, 0, &pagecache,
|
||||
LOG_FLAGS, 0, &translog_example_table_init))
|
||||
LOG_FLAGS, 0, &translog_example_table_init,
|
||||
0))
|
||||
{
|
||||
fprintf(stderr, "Can't init loghandler (%d)\n", errno);
|
||||
exit(1);
|
||||
|
|
Loading…
Add table
Reference in a new issue