From 06eaf7232e9a920468c0f8d74dcf2fe8b555501c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 14:24:36 +0200 Subject: Adding upstream version 1:10.11.6. Signed-off-by: Daniel Baumann --- mysql-test/lib/My/Config.pm | 544 +++ mysql-test/lib/My/ConfigFactory.pm | 483 +++ mysql-test/lib/My/CoreDump.pm | 516 +++ mysql-test/lib/My/Debugger.pm | 287 ++ mysql-test/lib/My/File/Path.pm | 225 + mysql-test/lib/My/Find.pm | 246 ++ mysql-test/lib/My/Handles.pm | 71 + mysql-test/lib/My/Options.pm | 179 + mysql-test/lib/My/Platform.pm | 299 ++ mysql-test/lib/My/SafeProcess.pm | 640 +++ mysql-test/lib/My/SafeProcess/Base.pm | 227 + mysql-test/lib/My/SafeProcess/CMakeLists.txt | 50 + mysql-test/lib/My/SafeProcess/safe_kill_win.cc | 146 + mysql-test/lib/My/SafeProcess/safe_process.cc | 364 ++ mysql-test/lib/My/SafeProcess/safe_process_win.cc | 389 ++ .../lib/My/SafeProcess/wsrep_check_version.c | 51 + mysql-test/lib/My/Suite.pm | 27 + mysql-test/lib/My/SysInfo.pm | 206 + mysql-test/lib/My/Tee.pm | 25 + mysql-test/lib/My/Test.pm | 120 + mysql-test/lib/generate-ssl-certs.sh | 66 + mysql-test/lib/mtr_cases.pm | 1191 ++++++ mysql-test/lib/mtr_gprof.pl | 41 + mysql-test/lib/mtr_io.pl | 112 + mysql-test/lib/mtr_match.pm | 98 + mysql-test/lib/mtr_misc.pl | 361 ++ mysql-test/lib/mtr_process.pl | 154 + mysql-test/lib/mtr_report.pm | 773 ++++ mysql-test/lib/mtr_results.pm | 167 + mysql-test/lib/mtr_stress.pl | 198 + mysql-test/lib/mtr_unique.pm | 130 + mysql-test/lib/openssl.cnf | 12 + mysql-test/lib/process-purecov-annotations.pl | 63 + mysql-test/lib/t/Base.t | 44 + mysql-test/lib/t/Find.t | 50 + mysql-test/lib/t/Options.t | 130 + mysql-test/lib/t/Platform.t | 35 + mysql-test/lib/t/SafeProcess.t | 118 + mysql-test/lib/t/SafeProcessStress.pl | 165 + mysql-test/lib/t/copytree.t | 50 + mysql-test/lib/t/dummyd.pl | 54 + mysql-test/lib/t/rmtree.t | 68 + mysql-test/lib/t/testMyConfig.t | 147 + mysql-test/lib/t/testMyConfigFactory.t | 114 + mysql-test/lib/t/test_child.pl | 37 + mysql-test/lib/v1/My/Config.pm | 438 ++ mysql-test/lib/v1/incompatible.tests | 6 + mysql-test/lib/v1/mtr_cases.pl | 939 +++++ mysql-test/lib/v1/mtr_gcov.pl | 75 + mysql-test/lib/v1/mtr_gprof.pl | 65 + mysql-test/lib/v1/mtr_im.pl | 776 ++++ mysql-test/lib/v1/mtr_io.pl | 218 + mysql-test/lib/v1/mtr_match.pl | 99 + mysql-test/lib/v1/mtr_misc.pl | 311 ++ mysql-test/lib/v1/mtr_process.pl | 1022 +++++ mysql-test/lib/v1/mtr_report.pl | 589 +++ mysql-test/lib/v1/mtr_stress.pl | 192 + mysql-test/lib/v1/mtr_timer.pl | 159 + mysql-test/lib/v1/mtr_unique.pl | 179 + mysql-test/lib/v1/mysql-test-run.pl | 4324 ++++++++++++++++++++ 60 files changed, 18865 insertions(+) create mode 100644 mysql-test/lib/My/Config.pm create mode 100644 mysql-test/lib/My/ConfigFactory.pm create mode 100644 mysql-test/lib/My/CoreDump.pm create mode 100644 mysql-test/lib/My/Debugger.pm create mode 100644 mysql-test/lib/My/File/Path.pm create mode 100644 mysql-test/lib/My/Find.pm create mode 100644 mysql-test/lib/My/Handles.pm create mode 100644 mysql-test/lib/My/Options.pm create mode 100644 mysql-test/lib/My/Platform.pm create mode 100644 mysql-test/lib/My/SafeProcess.pm create mode 100644 mysql-test/lib/My/SafeProcess/Base.pm create mode 100644 mysql-test/lib/My/SafeProcess/CMakeLists.txt create mode 100644 mysql-test/lib/My/SafeProcess/safe_kill_win.cc create mode 100644 mysql-test/lib/My/SafeProcess/safe_process.cc create mode 100644 mysql-test/lib/My/SafeProcess/safe_process_win.cc create mode 100644 mysql-test/lib/My/SafeProcess/wsrep_check_version.c create mode 100644 mysql-test/lib/My/Suite.pm create mode 100644 mysql-test/lib/My/SysInfo.pm create mode 100644 mysql-test/lib/My/Tee.pm create mode 100644 mysql-test/lib/My/Test.pm create mode 100755 mysql-test/lib/generate-ssl-certs.sh create mode 100644 mysql-test/lib/mtr_cases.pm create mode 100644 mysql-test/lib/mtr_gprof.pl create mode 100644 mysql-test/lib/mtr_io.pl create mode 100644 mysql-test/lib/mtr_match.pm create mode 100644 mysql-test/lib/mtr_misc.pl create mode 100644 mysql-test/lib/mtr_process.pl create mode 100644 mysql-test/lib/mtr_report.pm create mode 100644 mysql-test/lib/mtr_results.pm create mode 100644 mysql-test/lib/mtr_stress.pl create mode 100644 mysql-test/lib/mtr_unique.pm create mode 100644 mysql-test/lib/openssl.cnf create mode 100755 mysql-test/lib/process-purecov-annotations.pl create mode 100644 mysql-test/lib/t/Base.t create mode 100644 mysql-test/lib/t/Find.t create mode 100644 mysql-test/lib/t/Options.t create mode 100644 mysql-test/lib/t/Platform.t create mode 100644 mysql-test/lib/t/SafeProcess.t create mode 100755 mysql-test/lib/t/SafeProcessStress.pl create mode 100644 mysql-test/lib/t/copytree.t create mode 100644 mysql-test/lib/t/dummyd.pl create mode 100644 mysql-test/lib/t/rmtree.t create mode 100755 mysql-test/lib/t/testMyConfig.t create mode 100755 mysql-test/lib/t/testMyConfigFactory.t create mode 100755 mysql-test/lib/t/test_child.pl create mode 100644 mysql-test/lib/v1/My/Config.pm create mode 100644 mysql-test/lib/v1/incompatible.tests create mode 100644 mysql-test/lib/v1/mtr_cases.pl create mode 100644 mysql-test/lib/v1/mtr_gcov.pl create mode 100644 mysql-test/lib/v1/mtr_gprof.pl create mode 100644 mysql-test/lib/v1/mtr_im.pl create mode 100644 mysql-test/lib/v1/mtr_io.pl create mode 100644 mysql-test/lib/v1/mtr_match.pl create mode 100644 mysql-test/lib/v1/mtr_misc.pl create mode 100644 mysql-test/lib/v1/mtr_process.pl create mode 100644 mysql-test/lib/v1/mtr_report.pl create mode 100644 mysql-test/lib/v1/mtr_stress.pl create mode 100644 mysql-test/lib/v1/mtr_timer.pl create mode 100644 mysql-test/lib/v1/mtr_unique.pl create mode 100755 mysql-test/lib/v1/mysql-test-run.pl (limited to 'mysql-test/lib') diff --git a/mysql-test/lib/My/Config.pm b/mysql-test/lib/My/Config.pm new file mode 100644 index 00000000..c88b1170 --- /dev/null +++ b/mysql-test/lib/My/Config.pm @@ -0,0 +1,544 @@ +# -*- cperl -*- + +# Copyright (c) 2007, 2010, Oracle and/or its affiliates +# +# 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; version 2 of the License. +# +# 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, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA + +package My::Config::Option; + +use strict; +use warnings; +use Carp; + +# Define all MariaDB options that the user should be able to specify +# many times in the config file. Note that options must be written +# using '-' instead of '_' here! + +my %multipart_options= + ( + "plugin-load-add" => 1, + "optimizer-switch" => 1, +); + + +sub new { + my ($class, $option_name, $option_value)= @_; + my $self= bless { name => $option_name, + value => $option_value + }, $class; + return $self; +} + + +sub name { + my ($self)= @_; + return $self->{name}; +} + + +sub value { + my ($self)= @_; + return $self->{value}; +} + +sub option { + my ($self)= @_; + my $name= $self->{name}; + my $value= $self->{value}; + + my $opt= $name; + $opt= "$name=$value" if (defined $value); + $opt= "--$opt" unless ($opt =~ /^--/); + return $opt; +} + +package My::Config::Group; + +use strict; +use warnings; +use Carp; + +sub new { + my ($class, $group_name)= @_; + my $self= bless { name => $group_name, + options => [], + options_by_name => {}, + }, $class; + return $self; +} + + +sub insert { + my ($self, $option_name, $value, $if_not_exist)= @_; + my $option= $self->option($option_name); + if (defined($option) and !$if_not_exist) { + $option->{value}= $value; + } + else { + $option= My::Config::Option->new($option_name, $value); + # Insert option in list + push(@{$self->{options}}, $option); + # Insert option in hash + $self->{options_by_name}->{$option_name}= $option; + } + return $option; +} + +sub remove { + my ($self, $option_name)= @_; + + # Check that option exists + my $option= $self->option($option_name); + + return undef unless defined $option; + + # Remove from the hash + delete($self->{options_by_name}->{$option_name}) or croak; + + # Remove from the array + @{$self->{options}}= grep { $_->name ne $option_name } @{$self->{options}}; + + return $option; +} + + +sub options { + my ($self)= @_; + return @{$self->{options}}; +} + + +sub name { + my ($self)= @_; + return $self->{name}; +} + +sub suffix { + my ($self)= @_; + # Everything in name from the last . + my @parts= split(/\./, $self->{name}); + my $suffix= pop(@parts); + return ".$suffix"; +} + +sub after { + my ($self, $prefix)= @_; + die unless defined $prefix; + + # everything after $prefix + my $name= $self->{name}; + if ($name =~ /^\Q$prefix\E(.*)$/) + { + return $1; + } + die "Failed to extract the value after '$prefix' in $name"; +} + + +sub split { + my ($self)= @_; + # Return an array with name parts + return split(/\./, $self->{name}); +} + +# +# Return a specific option in the group +# +sub option { + my ($self, $option_name)= @_; + + return $self->{options_by_name}->{$option_name}; +} + + +# +# Return value for an option in the group, fail if it does not exist +# +sub value { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + croak "No option named '$option_name' in group '$self->{name}'" + if ! defined($option); + + return $option->value(); +} + +# +# Return value for an option if it exist +# +sub if_exist { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + return undef if ! defined($option); + + return $option->value(); +} + +package My::Config::Group::ENV; +our @ISA=qw(My::Config::Group); + +use strict; +use warnings; +use Carp; + +sub new { + my ($class, $group_name)= @_; + bless My::Config::Group->new($group_name), $class; +} + +# +# Return value for an option in the group, fail if it does not exist +# +sub value { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + if (! defined($option)) { + my $value= $ENV{$option_name}; + $option= My::Config::Option->new($option_name, $value); + } + return $option->value(); +} + +package My::Config::Group::OPT; +our @ISA=qw(My::Config::Group); + +use strict; +use warnings; +use Carp; + +sub new { + my ($class, $group_name)= @_; + bless My::Config::Group->new($group_name), $class; +} + +sub options { + my ($self)= @_; + () +} + +sub value { + my ($self, $option_name)= @_; + my $option= $self->option($option_name); + + croak "No option named '$option_name' in group '$self->{name}'" + if ! defined($option); + + return $option->value()->(); +} + +package My::Config; + +use strict; +use warnings; +use Carp; +use IO::File; +use File::Basename; + +# +# Constructor for My::Config +# - represents a my.cnf config file +# +# Array of arrays +# +sub new { + my ($class, $path)= @_; + my $group_name= undef; + + my $self= bless { groups => [ + My::Config::Group::ENV->new('ENV'), + My::Config::Group::OPT->new('OPT'), + ] }, $class; + my $F= IO::File->new($path, "<") + or croak "Could not open '$path': $!"; + + while ( my $line= <$F> ) { + chomp($line); + # Remove any trailing CR from Windows edited files + $line=~ s/\cM$//; + + # [group] + if ( $line =~ /^\[(.*)\]/ ) { + # New group found + $group_name= $1; + #print "group: $group_name\n"; + + $self->insert($group_name, undef, undef); + } + + # Magic #! comments + elsif ( $line =~ /^(#\!\S+)(?:\s*(.*?)\s*)?$/) { + my ($magic, $arg)= ($1, $2); + croak "Found magic comment '$magic' outside of group" + unless $group_name; + + #print "$magic\n"; + $self->insert($group_name, $magic, $arg); + } + + # Empty lines + elsif ( $line =~ /^$/ ) { + # Skip empty lines + next; + } + + # !include + elsif ( $line =~ /^\!include\s*(.*?)\s*$/ ) { + my $include_file_name= dirname($path)."/".$1; + + # Check that the file exists relative to path of first config file + if (! -f $include_file_name){ + # Try to include file relativ to current dir + $include_file_name= $1; + } + croak "The include file '$include_file_name' does not exist" + unless -f $include_file_name; + + $self->append(My::Config->new($include_file_name)); + } + + #