mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-27 07:07:56 +00:00
149 lines
5 KiB
Bash
Executable file
149 lines
5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# SPDX-FileCopyrightText: 2021-2024 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc.
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# Start
|
|
(cd "$testsuitedir"; stdout make startdb) >/dev/tty
|
|
|
|
mysqlrootpass=${mysqlrootpass:-M-b+Ydjq4ejT4E}
|
|
MYSQL_ADMIN_DBURL=mysql://root:$mysqlrootpass@/mysql
|
|
|
|
# Setup
|
|
sudo sql $MYSQL_ADMIN_DBURL "drop user 'sqlunittest'@'localhost'"
|
|
sudo sql $MYSQL_ADMIN_DBURL DROP DATABASE sqlunittest;
|
|
sudo sql $MYSQL_ADMIN_DBURL CREATE DATABASE sqlunittest;
|
|
sudo sql $MYSQL_ADMIN_DBURL "CREATE USER 'sqlunittest'@'localhost' IDENTIFIED BY 'CB5A1FFFA5A';"
|
|
sudo sql $MYSQL_ADMIN_DBURL "GRANT ALL PRIVILEGES ON sqlunittest.* TO 'sqlunittest'@'localhost';"
|
|
|
|
MYSQL_TEST_DBURL=mysql://sqlunittest:CB5A1FFFA5A@/sqlunittest
|
|
export MYSQL_TEST_DBURL
|
|
export MYSQL_ADMIN_DBURL
|
|
|
|
uniqify() {
|
|
file=$1
|
|
perl -ne '$seen{$_}++ || print' "$file" > "$file".$$
|
|
chmod 600 "$file".$$
|
|
mv "$file".$$ "$file"
|
|
}
|
|
export -f uniqify
|
|
|
|
par_sql_from_url() {
|
|
echo '### Test reading sql from url command line'
|
|
echo |
|
|
sql "$MYSQL_TEST_DBURL/?SELECT 'Yes it works' as 'Test reading SQL from command line';"
|
|
|
|
echo '### Test reading sql from url command line %-quoting'
|
|
echo |
|
|
sql "$MYSQL_TEST_DBURL/?SELECT 'Yes it%20works' as 'Test%20%-quoting%20SQL from command line';"
|
|
|
|
echo "### Test .sql/aliases with url on commandline"
|
|
echo :sqlunittest mysql://sqlunittest:CB5A1FFFA5A@localhost:3306/sqlunittest >> ~/.sql/aliases
|
|
uniqify ~/.sql/aliases
|
|
echo |
|
|
sql ":sqlunittest?SELECT 'Yes it%20works' as 'Test if .sql/aliases with %-quoting works';"
|
|
}
|
|
|
|
par_test_cyclic() {
|
|
echo "### Test cyclic alias .sql/aliases"
|
|
echo :cyclic :cyclic2 >> ~/.sql/aliases
|
|
echo :cyclic2 :cyclic3 >> ~/.sql/aliases
|
|
echo :cyclic3 :cyclic >> ~/.sql/aliases
|
|
uniqify ~/.sql/aliases
|
|
stdout sql ":cyclic3?SELECT 'NO IT DID NOT' as 'Test if :cyclic is found works';"
|
|
}
|
|
|
|
par_test_alias_with_statement() {
|
|
echo "### Test alias with statement .sql/aliases"
|
|
echo ":testselect sqlite:///%2Ftmp%2Ffile.sqlite?SELECT 'It works' AS 'Test statement in alias';" >> ~/.sql/aliases
|
|
uniqify ~/.sql/aliases
|
|
echo | stdout sql :testselect
|
|
echo ":testselectmysql mysql://sqlunittest:CB5A1FFFA5A@localhost:3306/sqlunittest?SELECT 'It works' AS 'Test statement in alias';" >> ~/.sql/aliases
|
|
uniqify ~/.sql/aliases
|
|
echo | stdout sql :testselect
|
|
echo | stdout sql :testselectmysql
|
|
|
|
echo "### Test alias followed by SQL as arg"
|
|
echo ignored | stdout sql :testselect "select 'Arg on cmdline';"
|
|
|
|
echo "### Test alias with query followed by SQL as arg"
|
|
echo ignored | stdout sql :testselect" select 'Query added to alias';" "select 'Arg on cmdline';"
|
|
|
|
echo "### Test alias with statement .sql/aliases"
|
|
echo "select 'Query from stdin';" | sql :testselect" select 'Query added to alias';"
|
|
echo "select 'Query from stdin';" | sql :testselectmysql" select 'Query added to alias';"
|
|
}
|
|
|
|
par_test_empty_dburl() {
|
|
echo "### Test empty dburl"
|
|
stdout sql ''
|
|
}
|
|
|
|
par_test_dburl_colon() {
|
|
echo "### Test dburl :"
|
|
stdout sql ':'
|
|
}
|
|
|
|
par_multiarg_on_command_line() {
|
|
echo "### Test oracle with multiple arguments on the command line"
|
|
echo ":oraunittest oracle://SYSTEM:$VM_ORACLE_PWD@/FREE" >> ~/.sql/aliases
|
|
uniqify ~/.sql/aliases
|
|
sql :oraunittest "WHENEVER SQLERROR EXIT FAILURE" "SELECT 'arg2' FROM DUAL;" "SELECT 'arg3' FROM DUAL;"
|
|
}
|
|
|
|
par_newline_on_commandline() {
|
|
echo "### Test oracle with \n arguments on the command line"
|
|
sql :oraunittest 'select 1 from dual;\nselect 2 from dual;\x0aselect 3 from dual;'
|
|
}
|
|
|
|
par_showtables() {
|
|
echo "### Test --show-tables"
|
|
sql --show-tables :oraunittest | LC_ALL=C sort
|
|
}
|
|
|
|
par_showdatabases() {
|
|
echo "### Test --show-databases"
|
|
sql --show-databases :oraunittest
|
|
}
|
|
|
|
par_listproc() {
|
|
echo "### Test --listproc"
|
|
shortest-output() {
|
|
# Initialize variables to store the shortest output and its length
|
|
shortest_output=""
|
|
shortest_length=9999999 # Start with a large number
|
|
runs=$1
|
|
shift
|
|
# Run the command more times
|
|
for i in {1..$runs}; do
|
|
# Run the command and capture the output
|
|
output=$("$@")
|
|
|
|
# Get the length of the current output
|
|
output_length=${#output}
|
|
|
|
# Check if the current output is shorter than the shortest found so far
|
|
if [[ $output_length -lt $shortest_length ]]; then
|
|
shortest_output="$output"
|
|
shortest_length=$output_length
|
|
fi
|
|
done
|
|
|
|
# Print the shortest output
|
|
echo "$shortest_output"
|
|
}
|
|
# Try 10 times: Other jobs may be running in parallel
|
|
shortest-output 10 nice sql --listproc :oraunittest |
|
|
perl -ne '/select 1 from dual|user_objects|user_tablespaces|connect_by_filtering/ and next;
|
|
s/[21 ]\.\d{4,5}/1.99999/;
|
|
s/\s+/ /g;
|
|
print'
|
|
sql --listproc $MYSQL_TEST_DBURL |
|
|
perl -pe 's/^\d+/XXX/'
|
|
}
|
|
|
|
export -f $(compgen -A function | grep par_)
|
|
compgen -A function | grep par_ | sort |
|
|
parallel -j0 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'
|