mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	 37c88445e3
			
		
	
	
	37c88445e3
	
	
	
		
			
			On FreeBSD, perl isn't in /usr/bin, its in /usr/local/bin or
elsewhere in the path.
Like storage/{maria/unittest/,}ma_test_* , we use /usr/bin/env to
find perl and run it.
		
	
			
		
			
				
	
	
		
			174 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/usr/bin/env perl
 | |
| # Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
 | |
| # Use is subject to license terms.
 | |
| #
 | |
| # This library is free software; you can redistribute it and/or
 | |
| # modify it under the terms of the GNU Library General Public
 | |
| # License as published by the Free Software Foundation; version 2
 | |
| # of the License.
 | |
| #
 | |
| # This library 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
 | |
| # Library General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU Library General Public
 | |
| # License along with this library; if not, write to the Free
 | |
| # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
 | |
| # MA 02110-1335  USA
 | |
| #
 | |
| # Test of extreme tables.
 | |
| #
 | |
| 
 | |
| ##################### Standard benchmark inits ##############################
 | |
| 
 | |
| use Cwd;
 | |
| use DBI;
 | |
| use Benchmark;
 | |
| 
 | |
| $opt_loop_count=70000; # Change this to make test harder/easier
 | |
| $opt_field_count=1000;
 | |
| 
 | |
| $pwd = cwd(); $pwd = "." if ($pwd eq '');
 | |
| require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
 | |
| 
 | |
| $opt_field_count=min($opt_field_count,$limits->{'max_columns'},
 | |
| 		     ($limits->{'query_size'}-30)/14);
 | |
| 
 | |
| $opt_loop_count*=10 if ($opt_field_count<100);	# mSQL has so few fields...
 | |
| 
 | |
| if ($opt_small_test)
 | |
| {
 | |
|   $opt_loop_count/=10;
 | |
|   $opt_field_count/=10;
 | |
| }
 | |
| 
 | |
| 
 | |
| print "Testing of some unusual tables\n";
 | |
| print "All tests are done $opt_loop_count times with $opt_field_count fields\n\n";
 | |
| 
 | |
| 
 | |
| ####
 | |
| ####  Testing many fields
 | |
| ####
 | |
| 
 | |
| $dbh = $server->connect();
 | |
| print "Testing table with $opt_field_count fields\n";
 | |
| 
 | |
| $sth = $dbh->do("drop table bench1" . $server->{'drop_attr'});
 | |
| 
 | |
| my @fields=();
 | |
| my @index=();
 | |
| my $fields="i1";
 | |
| push(@fields,"$fields int");
 | |
| $values= "1," x ($opt_field_count-1) . "1";
 | |
| for ($i=2 ; $i <= $opt_field_count ; $i++)
 | |
| {
 | |
|   push(@fields,"i${i} int");
 | |
|   $fields.=",i${i}";
 | |
| }
 | |
| 
 | |
| $start_time=new Benchmark;
 | |
| 
 | |
| do_many($dbh,$server->create("bench1",\@fields,\@index));
 | |
| $sth = $dbh->do("insert into bench1 values ($values)") or die $DBI::errstr;
 | |
| 
 | |
| if ($opt_fast && defined($server->{vacuum}))
 | |
| {
 | |
|   $server->vacuum(0,\$dbh);
 | |
| }
 | |
| 
 | |
| test_query("Testing select * from table with 1 record",
 | |
| 	   "Time to select_many_fields",
 | |
| 	   "select * from bench1",
 | |
| 	   $dbh,$opt_loop_count);
 | |
| 
 | |
| 
 | |
| if ($limits->{'working_all_fields'})
 | |
| {
 | |
|   test_query("Testing select all_fields from table with 1 record",
 | |
| 	     "Time to select_many_fields",
 | |
| 	     "select $fields from bench1",
 | |
| 	     $dbh,$opt_loop_count);
 | |
| }
 | |
| 
 | |
| test_query("Testing insert VALUES()",
 | |
| 	   "Time to insert_many_fields",
 | |
| 	   "insert into bench1 values($values)",
 | |
| 	   $dbh,$opt_loop_count);
 | |
| 
 | |
| if ($opt_fast && defined($server->{vacuum}))
 | |
| {
 | |
|   $server->vacuum(0,\$dbh);
 | |
| }
 | |
| 
 | |
| test_command("Testing insert (all_fields) VALUES()",
 | |
| 	     "Time to insert_many_fields",
 | |
| 	     "insert into bench1 ($fields) values($values)",
 | |
| 	     $dbh,$opt_loop_count);
 | |
| 
 | |
| $sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
 | |
| 
 | |
| if ($opt_fast && defined($server->{vacuum}))
 | |
| {
 | |
|   $server->vacuum(0,\$dbh);
 | |
| }
 | |
| 
 | |
| ################################ END ###################################
 | |
| ####
 | |
| #### End of the test...Finally print time used to execute the
 | |
| #### whole test.
 | |
| 
 | |
| $dbh->disconnect;
 | |
| 
 | |
| end_benchmark($start_time);
 | |
| 
 | |
| 
 | |
| ############################ HELP FUNCTIONS ##############################
 | |
| 
 | |
| sub test_query
 | |
| {
 | |
|   my($test_text,$result_text,$query,$dbh,$count)=@_;
 | |
|   my($i,$loop_time,$end_time, $using_transactions);
 | |
| 
 | |
|   print $test_text . "\n";
 | |
|   $loop_time=new Benchmark;
 | |
| 
 | |
|   $using_transactions=0;
 | |
|   if ($opt_fast && server->{transactions} && $query=~ /^insert /i)
 | |
|   {
 | |
|     $using_transactions=1;
 | |
|     $dbh->{AutoCommit} = 0;
 | |
|     print "Transactions enabled\n" if ($opt_debug);
 | |
|   }
 | |
|   for ($i=0 ; $i < $count ; $i++)
 | |
|   {
 | |
|     defined(fetch_all_rows($dbh,$query)) or die $DBI::errstr;
 | |
|   }
 | |
|   if ($using_transactions)
 | |
|   {
 | |
|     $dbh->commit;
 | |
|     $dbh->{AutoCommit} = 1;
 | |
|   }
 | |
| 
 | |
|   $end_time=new Benchmark;
 | |
|   print $result_text . "($count): " .
 | |
|   timestr(timediff($end_time, $loop_time),"all") . "\n\n";
 | |
| }
 | |
| 
 | |
| 
 | |
| sub test_command
 | |
| {
 | |
|   my($test_text,$result_text,$query,$dbh,$count)=@_;
 | |
|   my($i,$loop_time,$end_time);
 | |
| 
 | |
|   print $test_text . "\n";
 | |
|   $loop_time=new Benchmark;
 | |
|   for ($i=0 ; $i < $count ; $i++)
 | |
|   {
 | |
|     $dbh->do($query) or die $DBI::errstr;
 | |
|   }
 | |
|   $end_time=new Benchmark;
 | |
|   print $result_text . "($count): " .
 | |
|   timestr(timediff($end_time, $loop_time),"all") . "\n\n";
 | |
| }
 |