Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
f4adc50e
Commit
f4adc50e
authored
Apr 14, 2004
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add more files for NDB Cluster
parent
e6240e59
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
566 additions
and
0 deletions
+566
-0
ndb/home/bin/setup-test.sh
ndb/home/bin/setup-test.sh
+272
-0
ndb/home/lib/funcs.sh
ndb/home/lib/funcs.sh
+294
-0
No files found.
ndb/home/bin/setup-test.sh
0 → 100755
View file @
f4adc50e
#!/bin/sh
# NAME
# run-test.sh - Run a test program
#
# SYNOPSIS
# setup-test.sh [ -n <ndb dir>] [ -r <run dir>]
#
# DESCRIPTION
# run a test
#
# OPTIONS
#
# EXAMPLES
#
# ENVIRONMENT
# NDB_PROJ_HOME Home dir for ndb
#
# FILES
# $NDB_PROJ_HOME/lib/funcs.sh shell script functions
#
# DIAGNOSTICTS
#
# VERSION
# 1.01
#
# AUTHOR
# Jonas Oreland
#
#
progname
=
`
basename
$0
`
synopsis
=
"setup-test.sh [-x xterm] [ -n <ndb dir>] [ -r <run dir>]"
:
${
NDB_PROJ_HOME
:?
}
# If undefined, exit with error message
:
${
RUN_NDB_NODE_OPTIONS
:
=--
}
# If undef, set to --. Keeps getopts happy.
# You may have to experiment a bit
# to get quoting right (if you need it).
.
$NDB_PROJ_HOME
/lib/funcs.sh
# Load some good stuff
# defaults for options related variables
#
verbose
=
yes
options
=
""
ndb_dir
=
$NDB_TOP
if
[
-z
"
$ndb_dir
"
]
then
ndb_dir
=
`
pwd
`
fi
local_dir
=
`
pwd
`
own_host
=
`
hostname
`
uniq_id
=
$$
.
$$
_xterm
=
$XTERM
_rlogin
=
"ssh -X"
# used if error when parsing the options environment variable
#
env_opterr
=
"options environment variable: <<
$options
>>"
# Option parsing, for the options variable as well as the command line.
#
# We want to be able to set options in an environment variable,
# as well as on the command line. In order not to have to repeat
# the same getopts information twice, we loop two times over the
# getopts while loop. The first time, we process options from
# the options environment variable, the second time we process
# options from the command line.
#
# The things to change are the actual options and what they do.
#
#
for
optstring
in
"
$options
"
""
# 1. options variable 2. cmd line
do
while
getopts
n:r:x: i
$optstring
# optstring empty => no arg => cmd line
do
case
$i
in
n
)
ndb_dir
=
$OPTARG
;;
# Ndb dir
r
)
run_dir
=
$OPTARG
;;
# Run dir
x
)
_xterm
=
$OPTARG
;;
\?
)
syndie
$env_opterr
;;
# print synopsis and exit
esac
done
[
-n
"
$optstring
"
]
&&
OPTIND
=
1
# Reset for round 2, cmdline options
env_opterr
=
# Round 2 should not use the value
done
shift
`
expr
$OPTIND
- 1
`
# --- option parsing done ---
ndb_dir
=
`
abspath
$ndb_dir
`
run_dir
=
`
abspath
$run_dir
`
trace
"Verifying arguments"
if
[
!
-d
$ndb_dir
/bin
]
||
[
!
-d
$ndb_dir
/lib
]
then
msg
"Ndb home path seems incorrect either
$ndb_dir
/bin or
$ndb_dir
/lib not found"
exit
1004
fi
ndb_bin
=
$ndb_dir
/bin/ndb
mgm_bin
=
$ndb_dir
/bin/mgmtsrvr
api_lib
=
$ndb_dir
/lib/libNDB_API.so
if
[
!
-x
$ndb_bin
]
then
msg
"Ndb path seems incorrect ndb binary not found:
$ndb_bin
"
exit
1004
fi
if
[
!
-x
$mgm_bin
]
then
msg
"Ndb path seems incorrect management server binary not found:
$mgm_bin
"
exit
1004
fi
init_config
=
$run_dir
/mgm.1/initconfig.txt
local_config
=
$run_dir
/mgm.1/localcfg.txt
if
[
!
-r
$init_config
]
||
[
!
-r
$local_config
]
then
msg
"Run path seems incorrect
$init_config
or
$local_config
not found"
exit
1004
fi
trace
"Parsing
$init_config
"
awk
-f
$NDB_PROJ_HOME
/bin/parseConfigFile.awk
$init_config
>
/tmp/run-test.
$uniq_id
.
/tmp/run-test.
$uniq_id
cat
/tmp/run-test.
$uniq_id
rm
-f
/tmp/run-test.
$uniq_id
trace
"Parsing
$local_config
"
MgmPort
=
`
grep
-v
"OwnProcessId"
$local_config
|
cut
-d
" "
-f
2
`
trace
"Verifying that mgm port is empty"
telnet
$mgm_1
$MgmPort
>
/tmp/mgm_port.
$uniq_id
2>&1
<<
EOF
EOF
if
[
0
-lt
`
grep
-c
-i
connected /tmp/mgm_port.
$uniq_id
`
]
then
rm
/tmp/mgm_port.
$uniq_id
msg
"There is already something using port
$mgm_1
:
$MgmPort
"
exit
1003
fi
rm
/tmp/mgm_port.
$uniq_id
fixhost
(){
if
[
"
$1
"
!=
localhost
]
then
echo
$1
else
uname
-n
fi
}
do_xterm
(){
title
=
$1
shift
xterm
-fg
black
-title
"
$title
"
-e
$*
}
save_profile
(){
cp
$HOME
/.profile /tmp/.profile.
$uniq_id
}
wait_restore_profile
(){
while
[
-r
/tmp/.profile.
$uniq_id
]
do
sleep
1
done
}
start_mgm
(){
trace
"Starting Management server on:
$mgm_1
"
save_profile
mgm_1
=
`
fixhost
$mgm_1
`
(
echo
"PATH=
$ndb_dir
/bin:
\$
PATH"
echo
"LD_LIBRARY_PATH=
$ndb_dir
/lib:
\$
LD_LIBRARY_PATH"
echo
"export PATH LD_LIBRARY_PATH"
echo
"cd
$run_dir
/mgm.1"
echo
"ulimit -Sc unlimited"
echo
"mv /tmp/.profile.
$uniq_id
$HOME
/.profile"
)
>>
$HOME
/.profile
do_xterm
"Mmg on
$mgm_1
"
${
_rlogin
}
$mgm_1
&
wait_restore_profile
}
start_ndb_node
(){
node_id
=
$1
dir
=
$run_dir
/ndb.
$1
ndb_host
=
`
eval echo
"
\$
"
ndb_
$node_id
`
ndb_host
=
`
fixhost
$ndb_host
`
ndb_fs
=
`
eval echo
"
\$
"
ndbfs_
$node_id
`
trace
"Starting Ndb node
$node_id
on
$ndb_host
"
save_profile
(
echo
"PATH=
$ndb_dir
/bin:
\$
PATH"
echo
"LD_LIBRARY_PATH=
$ndb_dir
/lib:
\$
LD_LIBRARY_PATH"
echo
"mkdir -p
$ndb_fs
"
echo
"export PATH LD_LIBRARY_PATH"
echo
"cd
$dir
"
echo
"ulimit -Sc unlimited"
echo
"mv /tmp/.profile.
$uniq_id
$HOME
/.profile"
)
>>
$HOME
/.profile
do_xterm
"Ndb:
$node_id
on
$ndb_host
"
${
_rlogin
}
$ndb_host
&
wait_restore_profile
}
start_api_node
(){
node_id
=
$1
dir
=
$run_dir
/api.
$1
api_host
=
`
eval echo
"
\$
"
api_
$node_id
`
api_host
=
`
fixhost
$api_host
`
trace
"Starting api node
$node_id
on
$api_host
"
save_profile
(
echo
"PATH=
$ndb_dir
/bin:
\$
PATH"
echo
"LD_LIBRARY_PATH=
$ndb_dir
/lib:
\$
LD_LIBRARY_PATH"
echo
"export PATH LD_LIBRARY_PATH NDB_PROJ_HOME"
echo
"cd
$dir
"
echo
"ulimit -Sc unlimited"
echo
"mv /tmp/.profile.
$uniq_id
$HOME
/.profile"
)
>>
$HOME
/.profile
do_xterm
"API:
$node_id
on
$api_host
"
${
_rlogin
}
$api_host
&
wait_restore_profile
}
for_each_ndb_node
(){
i
=
1
j
=
`
expr
$mgm_nodes
+ 1
`
while
[
$i
-le
$ndb_nodes
]
do
$*
$j
j
=
`
expr
$j
+ 1
`
i
=
`
expr
$i
+ 1
`
done
}
for_each_api_node
(){
i
=
1
j
=
`
expr
$mgm_nodes
+
$ndb_nodes
+ 1
`
while
[
$i
-le
$api_nodes
]
do
$*
$j
j
=
`
expr
$j
+ 1
`
i
=
`
expr
$i
+ 1
`
done
}
start_mgm
for_each_ndb_node start_ndb_node
for_each_api_node start_api_node
exit
0
ndb/home/lib/funcs.sh
0 → 100644
View file @
f4adc50e
# NAME
# safe, safe_eval, die, rawdie, syndie, msg, errmsg,
# rawmsg, rawerrmsg, trace, errtrace, is_wordmatch
# - functions for safe execution and convenient printing and tracing
#
# abspath - make a path absolute
#
# SYNOPSIS
# . funcs.sh
#
# is_wordmatch requires perl.
#
# DESCRIPTION
# Funcs.sh is a collection of somewhat related functions.
# The main categories and their respective functions are:
# Controlled execution - safe, safe_eval
# Exiting with a message - die, rawdie, syndie
# Printing messages - msg, errmsg, rawmsg, rawerrmsg
# Tracing - trace, errtrace
# Pattern matching - is_wordmatch
#
#
# ENVIRONMENT
# These variables are not exported, but they are still visible
# to, and used by, these functions.
#
# progname basename of $0
# verbose empty or non-emtpy, used for tracing
# synopsis string describing the syntax of $progname
#
# VERSION
# 2.0
#
# AUTHOR
# Jonas Mvlsd
# Jonas Oreland - added abspath
# Safely executes the given command and exits
# with the given commands exit code if != 0,
# else the return value ("the functions exit
# code") is 0. Eg: safely cd $install_dir
#
safely
()
{
"
$@
"
safely_code__
=
$?
[
$safely_code__
-ne
0
]
&&
{
errmsg
"Command failed:
$@
. Exit code:
$safely_code__
."
;
exit
$safely_code__
;
}
:
# return "exit code" 0 from function
}
# Safely_eval executes "eval command" and exits
# with the given commands exit code if != 0,
# else the return value (the functions "exit
# code") is 0.
#
# Safely_eval is just like like safely, but safely_eval does
# "eval command" instead of just "command"
#
# Safely_eval even works with pipes etc., but you have to quote
# the special characters. Eg: safely_eval ls \| wc \> tst.txt 2\>\&1
#
#
safely_eval
()
{
eval
"
$@
"
safely_eval_code__
=
$?
[
$safely_eval_code__
-ne
0
]
&&
{
errmsg
"Command failed:
$@
. Exit code:
$safely_eval_code__
."
;
exit
$safely_eval_code__
;
}
:
# return "exit code" 0 from function
}
#
# safe and safe_eval are deprecated, use safely and safely_eval instead
#
# Safe executes the given command and exits
# with the given commands exit code if != 0,
# else the return value ("the functions exit
# code") is 0.
#
safe
()
{
"
$@
"
safe_code__
=
$?
[
$safe_code__
-ne
0
]
&&
{
errmsg
"Command failed:
$@
. Exit code:
$safe_code__
."
;
exit
$safe_code__
;
}
:
# return "exit code" 0 from function
}
# Safe_eval executes "eval command" and exits
# with the given commands exit code if != 0,
# else the return value (the functions "exit
# code") is 0.
#
# Safe_eval is just like like safe, but safe_eval does
# "eval command" instead of just "command"
#
# Safe_eval even works with pipes etc., but you have to quote
# the special characters. Eg: safe_eval ls \| wc \> tst.txt 2\>\&1
#
#
safe_eval
()
{
eval
"
$@
"
safe_eval_code__
=
$?
[
$safe_eval_code__
-ne
0
]
&&
{
errmsg
"Command failed:
$@
. Exit code:
$safe_eval_code__
."
;
exit
$safe_eval_code__
;
}
:
# return "exit code" 0 from function
}
# die prints the supplied message to stderr,
# prefixed with the program name, and exits
# with the exit code given by "-e num" or
# 1, if no -e option is present.
#
die
()
{
die_code__
=
1
[
"X
$1
"
=
X-e
]
&&
{
die_code__
=
$2
;
shift
2
;
}
[
"X
$1
"
=
X--
]
&&
shift
errmsg
"
$@
"
exit
$die_code__
}
# rawdie prints the supplied message to stderr.
# It then exits with the exit code given with "-e num"
# or 1, if no -e option is present.
#
rawdie
()
{
rawdie_code__
=
1
[
"X
$1
"
=
X-e
]
&&
{
rawdie_code__
=
$2
;
shift
2
;
}
[
"X
$1
"
=
X--
]
&&
shift
rawerrmsg
"
$@
"
exit
$rawdie_code__
}
# Syndie prints the supplied message (if present) to stderr,
# prefixed with the program name, on the first line.
# On the second line, it prints $synopsis.
# It then exits with the exit code given with "-e num"
# or 1, if no -e option is present.
#
syndie
()
{
syndie_code__
=
1
[
"X
$1
"
=
X-e
]
&&
{
syndie_code__
=
$2
;
shift
2
;
}
[
"X
$1
"
=
X--
]
&&
shift
[
-n
"
$*
"
]
&&
msg
"
$*
"
rawdie
-e
$syndie_code__
"Synopsis:
$synopsis
"
}
# msg prints the supplied message to stdout,
# prefixed with the program name.
#
msg
()
{
echo
"
${
progname
:-
<no program name set>
}
:"
"
$@
"
}
# msg prints the supplied message to stderr,
# prefixed with the program name.
#
errmsg
()
{
echo
"
${
progname
:-
<no program name set>
}
:"
"
$@
"
>
&2
}
rawmsg
()
{
echo
"
$*
"
;
}
# print the supplied message to stdout
rawerrmsg
()
{
echo
"
$*
"
>
&2
;
}
# print the supplied message to stderr
# trace prints the supplied message to stdout if verbose is non-null
#
trace
()
{
[
-n
"
$verbose
"
]
&&
msg
"
$@
"
}
# errtrace prints the supplied message to stderr if verbose is non-null
#
errtrace
()
{
[
-n
"
$verbose
"
]
&&
msg
"
$@
"
>
&2
}
# SYNTAX
# is_wordmatch candidatelist wordlist
#
# DESCRIPTION
# is_wordmatch returns true if any of the words (candidates)
# in candidatelist is present in wordlist, otherwise it
# returns false.
#
# EXAMPLES
# is_wordmatch "tuareg nixdorf low content" "xx yy zz low fgj turn roff sd"
# returns true, since "low" in candidatelist is present in wordlist.
#
# is_wordmatch "tuareg nixdorf low content" "xx yy zz slow fgj turn roff sd"
# returns false, since none of the words in candidatelist occurs in wordlist.
#
# is_wordmatch "tuareg nixdorf low content" "xx yy zz low fgj tuareg roff"
# returns true, since "low" and "tuareg" in candidatelist occurs in wordlist.
#
is_wordmatch
()
{
is_wordmatch_pattern__
=
`
echo
$1
|
sed
's/^/\\\\b/;
s/[ ][ ]*/\\\\b|\\\\b/g;
s/$/\\\\b/;'
`
shift
echo
"
$*
"
|
perl
-lne
"m/
$is_wordmatch_pattern__
/ || exit 1"
}
#
# abspath
#
# Stolen from http://oase-shareware.org/shell/shelltips/script_programmer.html
#
abspath
()
{
__abspath_D
=
`
dirname
"
$1
"
`
__abspath_B
=
`
basename
"
$1
"
`
echo
"
`
cd
\"
$__abspath_D
\"
2>/dev/null
&&
pwd
||
echo
\"
$__abspath_D
\"
`
/
$__abspath_B
"
}
#
#
# NdbExit
#
#
NdbExit
()
{
echo
"NdbExit:
$1
"
exit
$1
}
NdbGetExitCode
()
{
__res__
=
`
echo
$*
|
awk
'{if($1=="NdbExit:") print $2;}'
`
if
[
-n
$__res__
]
then
echo
$__res__
else
echo
255
fi
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment