mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-01-02 03:16:45 +00:00
5c7eb4a594
Probe directory service instead of assuming that it is always reachable Fix directory service and routing tests
144 lines
5.0 KiB
Bash
Executable File
144 lines
5.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Tests for Directory Services.
|
|
# Copyright 2012 Serval Project
|
|
#
|
|
# 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; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# 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 Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
source "${0%/*}/../testframework.sh"
|
|
source "${0%/*}/../testdefs.sh"
|
|
|
|
configure_servald_server() {
|
|
executeOk_servald config set log.show_pid on
|
|
executeOk_servald config set log.show_time on
|
|
executeOk_servald config set debug.mdprequests Yes
|
|
}
|
|
|
|
setup() {
|
|
setup_servald
|
|
assert_no_servald_processes
|
|
foreach_instance +A +B +C +D create_single_identity
|
|
set_instance +D
|
|
executeOk_servald set did $SIDD $DIDC "Agent D Smith"
|
|
DIDD1=$DIDC
|
|
NAMED1="Agent D Smith"
|
|
DIDD=$DIDC1
|
|
NAMED=$NAMED1
|
|
set_instance +A
|
|
executeOk_servald config set dna.helper.executable "$servald_build_root/directory_service"
|
|
executeOk_servald config set debug.dnahelper on
|
|
foreach_instance +B +C +D executeOk_servald config set directory.service $SIDA
|
|
start_servald_instances +A +B +C +D
|
|
}
|
|
|
|
teardown() {
|
|
kill_all_servald_processes
|
|
assert_no_servald_processes
|
|
report_all_servald_servers
|
|
}
|
|
|
|
is_published() {
|
|
tfw_log "grep \"PUBLISHED.*$1\" $LOGA"
|
|
grep "PUBLISHED.*$1" $LOGA || return 1
|
|
return 0
|
|
}
|
|
|
|
sent_directory_request() {
|
|
tfw_log "grep \"Sending directory registration\" $1"
|
|
grep "Sending directory registration" $1 || return 1
|
|
return 0
|
|
}
|
|
|
|
doc_publish="Publish and retrieve a directory entry"
|
|
test_publish() {
|
|
wait_until sent_directory_request $LOGB
|
|
wait_until sent_directory_request $LOGC
|
|
wait_until sent_directory_request $LOGD
|
|
wait_until is_published $SIDB
|
|
wait_until is_published $SIDC
|
|
wait_until is_published $SIDD
|
|
stop_servald_server +B
|
|
stop_servald_server +C
|
|
stop_servald_server +D
|
|
set_instance +A
|
|
executeOk_servald dna lookup "$DIDB"
|
|
assertStdoutLineCount '==' 1
|
|
assertStdoutGrep --matches=1 "^sid://$SIDB/local/$DIDB:$DIDB:$NAMEB\$"
|
|
executeOk_servald dna lookup "$DIDC"
|
|
assertStdoutLineCount '==' 2
|
|
assertStdoutGrep --matches=1 "^sid://$SIDC/local/$DIDC:$DIDC:$NAMEC\$"
|
|
assertStdoutGrep --matches=1 "^sid://$SIDD/local/$DIDD:$DIDD:$NAMED\$"
|
|
assert_status_all_servald_servers running
|
|
}
|
|
|
|
start_routing_instance() {
|
|
executeOk_servald config set interface.folder "$SERVALD_VAR"
|
|
executeOk_servald config set monitor.socket "org.servalproject.servald.monitor.socket.$TFWUNIQUE.$instance_name"
|
|
executeOk_servald config set mdp.socket "org.servalproject.servald.mdp.socket.$TFWUNIQUE.$instance_name"
|
|
executeOk_servald config set log.show_pid on
|
|
executeOk_servald config set log.show_time on
|
|
executeOk_servald config set debug.mdprequests Yes
|
|
start_servald_server
|
|
}
|
|
|
|
setup_routing() {
|
|
setup_servald
|
|
assert_no_servald_processes
|
|
# create three nodes, on two dummy interfaces, with no interface ticks or routing
|
|
foreach_instance +A +B +C create_single_identity
|
|
>$SERVALD_VAR/dummyB
|
|
>$SERVALD_VAR/dummyC
|
|
set_instance +A
|
|
executeOk_servald config set interfaces "+>dummyB,+>dummyC"
|
|
executeOk_servald config set mdp.dummyB.tick_ms 0
|
|
executeOk_servald config set mdp.dummyC.tick_ms 0
|
|
executeOk_servald config set dna.helper.executable "$servald_build_root/directory_service"
|
|
executeOk_servald config set debug.dnahelper on
|
|
set_instance +B
|
|
executeOk_servald config set interfaces "+>dummyB"
|
|
executeOk_servald config set mdp.dummyB.tick_ms 0
|
|
executeOk_servald config set directory.service $SIDA
|
|
executeOk_servald config set $SIDA.interface "dummyB"
|
|
executeOk_servald config set $SIDA.address 127.0.0.1
|
|
set_instance +C
|
|
executeOk_servald config set interfaces "+>dummyC"
|
|
executeOk_servald config set mdp.dummyC.tick_ms 0
|
|
executeOk_servald config set directory.service $SIDA
|
|
executeOk_servald config set $SIDA.interface "dummyC"
|
|
executeOk_servald config set $SIDA.address 127.0.0.1
|
|
foreach_instance +A +B +C start_routing_instance
|
|
}
|
|
|
|
doc_routing="Ping via relay node"
|
|
test_routing() {
|
|
wait_until sent_directory_request $LOGB
|
|
wait_until sent_directory_request $LOGC
|
|
wait_until is_published $SIDB
|
|
wait_until is_published $SIDC
|
|
set_instance +B
|
|
executeOk_servald dna lookup "$DIDC"
|
|
assertStdoutLineCount '==' 1
|
|
assertStdoutGrep --matches=1 "^sid://$SIDC/local/$DIDC:$DIDC:$NAMEC\$"
|
|
set_instance +C
|
|
executeOk_servald dna lookup "$DIDB"
|
|
assertStdoutLineCount '==' 1
|
|
assertStdoutGrep --matches=1 "^sid://$SIDB/local/$DIDB:$DIDB:$NAMEB\$"
|
|
executeOk_servald mdp ping $SIDB 3
|
|
tfw_cat --stdout --stderr
|
|
assert_status_all_servald_servers running
|
|
}
|
|
|
|
runTests "$@"
|