diff --git a/testdefs.sh b/testdefs.sh index c5f68ef6..64768d1b 100644 --- a/testdefs.sh +++ b/testdefs.sh @@ -402,7 +402,8 @@ servald_restful_http_server_started() { # Utility function: # - fetch the daemon's HTTP server port number get_servald_http_server_port() { - push_and_set_instance $2 || return $? + local _instance="$2" + [ -z "$_instance" ] || push_and_set_instance $_instance || return $? local _var="$1" local _port=$(<"$SERVALINSTANCE_PATH/proc/http_port") assert --message="instance $instance_name HTTP server port number is known" [ -n "$_port" ] @@ -410,7 +411,7 @@ get_servald_http_server_port() { eval "$_var=\$_port" tfw_log "$_var=$_port" fi - pop_instance + [ -z "$_instance" ] || pop_instance return 0 } diff --git a/testdefs_meshms.sh b/testdefs_meshms.sh index a4298bb6..609b3b34 100644 --- a/testdefs_meshms.sh +++ b/testdefs_meshms.sh @@ -20,6 +20,46 @@ meshms_create_message() { create_file --label="$1" - $2 | sed -e '/^$/d' } +MESHMS_USE_RESTFUL=false + +meshms_use_restful() { + setup_curl 7 + MESHMS_USE_RESTFUL=true + MESHMS_RESTFUL_USER="$1" + MESHMS_RESTFUL_PASSWORD="$2" + get_servald_restful_http_server_port MESHMS_RESTFUL_PORT +} + +meshms_list_messages() { + local sid_sender=${1?} + local sid_recipient=${2?} + if $MESHMS_USE_RESTFUL; then + executeOk curl \ + --silent --fail --show-error \ + --output meshms_list_messages.json \ + --basic --user "$MESHMS_RESTFUL_USER:$MESHMS_RESTFUL_PASSWORD" \ + "http://$addr_localhost:$MESHMS_RESTFUL_PORT/restful/meshms/$sid_sender/$sid_recipient/messagelist.json" + else + executeOk_servald meshms list messages $sid_sender $sid_recipient + fi +} + +meshms_send_message() { + local sid_sender=${1?} + local sid_recipient=${2?} + local text="${3?}" + if $MESHMS_USE_RESTFUL; then + executeOk curl \ + --silent --fail --show-error \ + --output meshms_send_message.json \ + --basic --user "$MESHMS_RESTFUL_USER:$MESHMS_RESTFUL_PASSWORD" \ + --form "message=$text;type=text/plain;charset=utf-8" \ + "http://$addr_localhost:$MESHMS_RESTFUL_PORT/restful/meshms/$sid_sender/$sid_recipient/sendmessage" + else + executeOk_servald meshms send message $sid_sender $sid_recipient "$text" + fi +} + # Add a sequence of messages of varying sizes up to 1 KiB. meshms_add_messages() { local sid1="${1?}" @@ -48,19 +88,19 @@ meshms_add_messages() { case $sym in '>') MESSAGE[$n]=">" - executeOk_servald meshms send message $sid1 $sid2 "${TEXT[$n]}" + meshms_send_message $sid1 $sid2 "${TEXT[$n]}" let ++sent_since_ack let ++NSENT ;; '<') MESSAGE[$n]="<" - executeOk_servald meshms send message $sid2 $sid1 "${TEXT[$n]}" + meshms_send_message $sid2 $sid1 "${TEXT[$n]}" let ++NRECV ;; 'A') MESSAGE[$n]=ACK [ $i -ne 0 -a $sent_since_ack -eq 0 ] && error "two ACKs in a row (at position $i)" - executeOk_servald meshms list messages $sid2 $sid1 + meshms_send_messages $sid2 $sid1 let ++NACK ;; *) diff --git a/tests/meshmsjava b/tests/meshmsjava index 28739d04..fc1078b9 100755 --- a/tests/meshmsjava +++ b/tests/meshmsjava @@ -199,9 +199,13 @@ doc_MeshmsListMessagesNewSinceArrival="Java API list newly arriving MeshMS messa setup_MeshmsListMessagesNewSinceArrival() { set_extra_config() { executeOk_servald config set api.restful.newsince_timeout 360s \ - set api.restful.newsince_poll_ms 1000 + set api.restful.newsince_poll_ms 1000 \ + set api.restful.users.harry.password potter } setup + # Use REST interface to send messages, not CLI, in order to avoid a database + # locking storm + meshms_use_restful harry potter meshms_add_messages $SIDA1 $SIDA2 '><>A>' let NROWS=NSENT+NRECV+(NACK?1:0) executeJavaOk org.servalproject.test.Meshms meshms-list-messages "$SIDA1" "$SIDA2" diff --git a/tests/meshmsrestful b/tests/meshmsrestful index 9da566aa..4453463c 100755 --- a/tests/meshmsrestful +++ b/tests/meshmsrestful @@ -350,6 +350,9 @@ setup_MeshmsListMessagesNewSinceArrival() { set api.restful.newsince_poll_ms 1000 } setup + # Use REST interface to send messages, not CLI, in order to avoid a database + # locking storm + meshms_use_restful harry potter meshms_add_messages $SIDA1 $SIDA2 '><>A>' let NROWS=NSENT+NRECV+(NACK?1:0) executeOk curl \