polardbxengine/mysql-test/suite/ndb/include/have_clusterj.inc

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
}