mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-03-21 11:25:22 +00:00
Reduce DB locking issues in RESTful tests
Add environment variable SERVALD_RHIZOME_DB_RETRY_LIMIT to extend the Rhizome DB retry period, set it to 60 seconds in RESTful tests to override the default 5 seconds
This commit is contained in:
parent
005489ab40
commit
3c4703feb4
@ -46,6 +46,7 @@ static int create_rhizome_store_dir()
|
||||
|
||||
sqlite3 *rhizome_db = NULL;
|
||||
serval_uuid_t rhizome_db_uuid;
|
||||
static time_ms_t rhizomeRetryLimit = -1;
|
||||
|
||||
int is_debug_rhizome()
|
||||
{
|
||||
@ -219,6 +220,9 @@ int rhizome_opendb()
|
||||
sqlite3_profile(rhizome_db, sqlite_profile_callback, NULL);
|
||||
int loglevel = (config.debug.rhizome) ? LOG_LEVEL_DEBUG : LOG_LEVEL_SILENT;
|
||||
|
||||
const char *env = getenv("SERVALD_RHIZOME_DB_RETRY_LIMIT_MS");
|
||||
rhizomeRetryLimit = env ? atoi(env) : -1;
|
||||
|
||||
/* Read Rhizome configuration */
|
||||
if (config.debug.rhizome)
|
||||
DEBUGF("Rhizome will use %"PRIu64"B of storage for its database.", (uint64_t) config.rhizome.database_size);
|
||||
@ -414,7 +418,7 @@ int rhizome_close_db()
|
||||
sqlite_retry_state sqlite_retry_state_init(int serverLimit, int serverSleep, int otherLimit, int otherSleep)
|
||||
{
|
||||
return (sqlite_retry_state){
|
||||
.limit = serverMode ? (serverLimit < 0 ? 50 : serverLimit) : (otherLimit < 0 ? 5000 : otherLimit),
|
||||
.limit = rhizomeRetryLimit >= 0 ? rhizomeRetryLimit : serverMode ? (serverLimit < 0 ? 50 : serverLimit) : (otherLimit < 0 ? 5000 : otherLimit),
|
||||
.sleep = serverMode ? (serverSleep < 0 ? 10 : serverSleep) : (otherSleep < 0 ? 100 : otherSleep),
|
||||
.elapsed = 0,
|
||||
.start = -1,
|
||||
|
@ -34,6 +34,7 @@ setup() {
|
||||
set debug.meshms on
|
||||
set_extra_config
|
||||
create_identities 4
|
||||
export SERVALD_RHIZOME_DB_RETRY_LIMIT_MS=60000
|
||||
start_servald_server
|
||||
}
|
||||
|
||||
@ -195,7 +196,7 @@ doc_MeshmsListMessagesNewSinceArrival="Java API list newly arriving MeshMS messa
|
||||
setup_MeshmsListMessagesNewSinceArrival() {
|
||||
set_extra_config() {
|
||||
executeOk_servald config set api.restful.newsince_timeout 60s \
|
||||
set api.restful.newsince_poll_ms 500
|
||||
set api.restful.newsince_poll_ms 1000
|
||||
}
|
||||
setup
|
||||
meshms_add_messages $SIDA1 $SIDA2 '><>A>'
|
||||
|
@ -42,6 +42,7 @@ setup() {
|
||||
else
|
||||
create_identities $IDENTITY_COUNT
|
||||
fi
|
||||
export SERVALD_RHIZOME_DB_RETRY_LIMIT_MS=60000
|
||||
start_servald_instances +A
|
||||
wait_until servald_restful_http_server_started +A
|
||||
get_servald_restful_http_server_port PORTA +A
|
||||
@ -342,8 +343,8 @@ doc_MeshmsListMessagesNewSinceArrival="HTTP RESTful list newly arriving MeshMS m
|
||||
setup_MeshmsListMessagesNewSinceArrival() {
|
||||
IDENTITY_COUNT=2
|
||||
set_extra_config() {
|
||||
executeOk_servald config set api.restful.newsince_timeout 60s \
|
||||
set api.restful.newsince_poll_ms 500
|
||||
executeOk_servald config set api.restful.newsince_timeout 360s \
|
||||
set api.restful.newsince_poll_ms 1000
|
||||
}
|
||||
setup
|
||||
meshms_add_messages $SIDA1 $SIDA2 '><>A>'
|
||||
@ -372,7 +373,12 @@ test_MeshmsListMessagesNewSinceArrival() {
|
||||
wait_until [ -e newsince1.json -a -e newsince2.json -a -e newsince3.json ]
|
||||
for message in '>Rumplestiltskin' 'A' '<Howdydoody' '>Eulenspiegel'; do
|
||||
meshms_add_messages $SIDA1 $SIDA2 "${message:0:1}" "${message:1}"
|
||||
wait_until --timeout=10 grepall "${message:1}" newsince{1,2,3}.json
|
||||
case ${message:0:1} in
|
||||
'<'|'>') waitfor="${message:1}";;
|
||||
'A') waitfor="ACK";;
|
||||
*) error "message=${message}";;
|
||||
esac
|
||||
wait_until grepall "$waitfor" newsince{1,2,3}.json
|
||||
done
|
||||
fork_terminate_all
|
||||
fork_wait_all
|
||||
|
@ -35,6 +35,7 @@ setup() {
|
||||
set debug.rhizome_manifest on
|
||||
set_extra_config
|
||||
create_identities 4
|
||||
export SERVALD_RHIZOME_DB_RETRY_LIMIT_MS=60000
|
||||
start_servald_server
|
||||
}
|
||||
|
||||
@ -150,7 +151,7 @@ doc_RhizomeListNewSince="Java API list Rhizome bundles since token"
|
||||
setup_RhizomeListNewSince() {
|
||||
set_extra_config() {
|
||||
executeOk_servald config set api.restful.newsince_timeout 60s \
|
||||
set api.restful.newsince_poll_ms 500
|
||||
set api.restful.newsince_poll_ms 1000
|
||||
}
|
||||
setup
|
||||
rhizome_add_bundles $SIDA1 0 5
|
||||
|
@ -43,6 +43,7 @@ setup() {
|
||||
else
|
||||
create_identities $IDENTITY_COUNT
|
||||
fi
|
||||
export SERVALD_RHIZOME_DB_RETRY_LIMIT_MS=60000
|
||||
start_servald_instances +A
|
||||
wait_until servald_restful_http_server_started +A
|
||||
get_servald_restful_http_server_port PORTA +A
|
||||
@ -232,7 +233,7 @@ doc_RhizomeListNewSince="HTTP RESTful list Rhizome bundles since token as JSON"
|
||||
setup_RhizomeListNewSince() {
|
||||
set_extra_config() {
|
||||
executeOk_servald config set api.restful.newsince_timeout 60s \
|
||||
set api.restful.newsince_poll_ms 500
|
||||
set api.restful.newsince_poll_ms 1000
|
||||
}
|
||||
setup
|
||||
rhizome_add_bundles $SIDA 0 5
|
||||
@ -259,7 +260,7 @@ test_RhizomeListNewSince() {
|
||||
wait_until [ -e newsince1.json -a -e newsince2.json -a -e newsince3.json ]
|
||||
rhizome_add_bundles $SIDA 6 10
|
||||
for i in 1 2 3; do
|
||||
wait_until --timeout=10 grep "${BID[10]}" newsince$i.json
|
||||
wait_until grep "${BID[10]}" newsince$i.json
|
||||
done
|
||||
fork_terminate_all
|
||||
fork_wait_all
|
||||
|
Loading…
x
Reference in New Issue
Block a user