131 lines
4.1 KiB
PHP
131 lines
4.1 KiB
PHP
--perl
|
|
use strict;
|
|
|
|
use File::Basename;
|
|
use IO::File;
|
|
use lib "lib/";
|
|
use My::Find;
|
|
|
|
#
|
|
# Look for Cluster/J library, if not found: skip test.
|
|
#
|
|
|
|
#
|
|
# Set up paths
|
|
#
|
|
my $vardir = $ENV{MYSQLTEST_VARDIR} or die "Need MYSQLTEST_VARDIR";
|
|
my $mysql_test_dir = $ENV{MYSQL_TEST_DIR} or die "Need MYSQL_TEST_DIR";
|
|
my $basedir = dirname($mysql_test_dir);
|
|
|
|
# In the RPM case, binaries and libraries are installed in the
|
|
# default system locations, instead of having our own private base
|
|
# directory. And we install "usr/share/mysql-test". Moving up two
|
|
# more directory relative to "mysql-test" gives us a usable base
|
|
# directory for RPM installs.
|
|
if (! -d "$basedir/sql" and ! -d "$basedir/bin" )
|
|
{
|
|
$basedir= dirname($basedir);
|
|
}
|
|
|
|
my $bindir = $ENV{MTR_BINDIR} || $basedir; # Out of source set MTR_BINDIR
|
|
|
|
#
|
|
# Check if the needed jars and libs are available
|
|
#
|
|
|
|
my $clusterj_jar = my_find_file($bindir,
|
|
[ "storage/ndb/clusterj",
|
|
"share/java",
|
|
"share/mysql/java",
|
|
"share/mysql-8.0/java",
|
|
"lib/java" ],
|
|
"clusterj-*.jar", NOT_REQUIRED);
|
|
|
|
my $clusterj_test_jar = my_find_file($bindir,
|
|
[ "storage/ndb/clusterj/clusterj-test",
|
|
"share/java",
|
|
"share/mysql/java",
|
|
"share/mysql-8.0/java",
|
|
"lib/java" ],
|
|
"clusterj-test-*.jar", NOT_REQUIRED);
|
|
|
|
# The expected installation locations are lib, lib/mysql, lib64/mysql, lib/x86_64-linux-gnu
|
|
my $ndbclient_lib = my_find_file($bindir,
|
|
["storage/ndb/src/.libs",
|
|
"library_output_directory",
|
|
"lib*/*",
|
|
"lib"],
|
|
["ndbclient.dll", "libndbclient.so", "libndbclient.dylib"],
|
|
NOT_REQUIRED);
|
|
|
|
my $F = IO::File->new("$vardir/tmp/have_clusterj_result.inc", 'w') or die;
|
|
if ($clusterj_jar) {
|
|
print $F "--let \$CLUSTERJ_JAR= $clusterj_jar\n";
|
|
print $F "--echo Found clusterj.jar\n"
|
|
} else {
|
|
print $F "--let \$skip_test=1\n";
|
|
print $F "--let \$skip_reason=Could not find clusterj jar file\n";
|
|
}
|
|
|
|
if ($clusterj_test_jar) {
|
|
print $F "--let \$CLUSTERJ_TEST_JAR= $clusterj_test_jar\n";
|
|
print $F "--echo Found clusterj_test jar\n"
|
|
} else {
|
|
print $F "--let \$skip_test=1\n";
|
|
print $F "--let \$skip_reason=Could not find clusterj test jar file\n";
|
|
}
|
|
|
|
if ($ndbclient_lib) {
|
|
my $ndbclient_lib_dir = dirname($ndbclient_lib);
|
|
print $F "--let \$NDBCLIENT_LIB_DIR= $ndbclient_lib_dir\n";
|
|
print $F "--echo Found ndbclient library\n"
|
|
} else {
|
|
# Test runs only when ndb is compiled and enabled.
|
|
# If not able to find libndbclient, probably an issue with this script.
|
|
print $F "die Did not find libndbclient\n";
|
|
}
|
|
|
|
$F->close();
|
|
|
|
write_properties();
|
|
|
|
sub add {
|
|
my $F = shift;
|
|
my $prop = shift;
|
|
my $val = shift;
|
|
print $F "com.mysql.clusterj.$prop=$val\n";
|
|
}
|
|
|
|
sub write_properties {
|
|
my $db = 'test';
|
|
my $user = 'root';
|
|
my $F = IO::File->new("$vardir/tmp/clusterj.properties", 'w') or die;
|
|
add($F, 'connectstring', $ENV{'NDB_CONNECTSTRING'});
|
|
add($F, 'connect.retries', '4');
|
|
add($F, 'connect.delay', '5');
|
|
add($F, 'connect.verbose', '1');
|
|
add($F, 'connect.timeout.before', '30');
|
|
add($F, 'connect.timeout.after', '20');
|
|
add($F, 'jdbc.url', "jdbc:mysql://localhost:$ENV{MASTER_MYPORT}/$db");
|
|
add($F, 'jdbc.driver', 'com.mysql.cj.jdbc.Driver');
|
|
add($F, 'jdbc.username', $user);
|
|
add($F, 'jdbc.password', '');
|
|
add($F, 'username', '');
|
|
add($F, 'password', '');
|
|
add($F, 'database', $db);
|
|
add($F, 'max.transactions', '1024');
|
|
$F->close();
|
|
}
|
|
|
|
EOF
|
|
|
|
--source $MYSQLTEST_VARDIR/tmp/have_clusterj_result.inc
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/have_clusterj_result.inc
|
|
|
|
# skip if the required jars were not found
|
|
if ($skip_test) {
|
|
# remove the clusterj.properties file
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/clusterj.properties
|
|
--skip $skip_reason
|
|
}
|