]> nmode's Git Repositories - signal-cli/blobdiff - run_tests.sh
Update libsignal-service-java
[signal-cli] / run_tests.sh
index f3f33f05fa1724c48f9270041974fdca1b20da2c..90f987477fcf720ac8e45d4e4e37f0dcdae041a0 100755 (executable)
@@ -5,47 +5,71 @@ if [ $# -ne 2 ]; then
 fi
 
 set -e
-# To update graalvm config, set GRAALVM_HOME, e.g:
-# export GRAALVM_HOME=/usr/lib/jvm/java-17-graalvm
-if [ ! -z "$GRAALVM_HOME" ]; then
-  export JAVA_HOME=$GRAALVM_HOME
-  export SIGNAL_CLI_OPTS='-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir/'
-fi
 
 NUMBER_1="$1"
 NUMBER_2="$2"
 TEST_PIN_1=456test_pin_foo123
 NATIVE=0
+JSON_RPC=0
 
-PATH_TEST_CONFIG="$PWD/build/test-config"
+PATH_TEST_CONFIG="$PWD/test-config"
 PATH_MAIN="$PATH_TEST_CONFIG/main"
 PATH_LINK="$PATH_TEST_CONFIG/link"
 
 if [ "$NATIVE" -eq 1 ]; then
        SIGNAL_CLI="$PWD/build/native/nativeCompile/signal-cli"
+elif [ "$JSON_RPC" -eq 1 ]; then
+       (cd client && cargo build)
+       "$PWD/build/install/signal-cli/bin/signal-cli" --verbose --verbose --trust-new-identities=always --config="$PATH_MAIN" --service-environment="staging" --log-file="$PATH_MAIN/log" daemon --socket --receive-mode=manual&
+       "$PWD/build/install/signal-cli/bin/signal-cli" --verbose --verbose --trust-new-identities=always --config="$PATH_LINK" --service-environment="staging" --log-file="$PATH_LINK/log" daemon --tcp --receive-mode=manual&
+       sleep 5
+       SIGNAL_CLI="$PWD/client/target/debug/signal-cli-client"
 else
        ./gradlew installDist
        SIGNAL_CLI="$PWD/build/install/signal-cli/bin/signal-cli"
 fi
 
 run() {
+  # To update graalvm config, set GRAALVM_HOME, e.g:
+  # export GRAALVM_HOME=/usr/lib/jvm/java-17-graalvm
+  if [ ! -z "$GRAALVM_HOME" ]; then
+    export JAVA_HOME=$GRAALVM_HOME
+    export SIGNAL_CLI_OPTS="-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir-${SIGNAL_CLI_AGENT_ID}/"
+  fi
+
   set -x
-  "$SIGNAL_CLI" --service-environment="sandbox" $@
+  if [ "$JSON_RPC" -eq 1 ]; then
+    "$SIGNAL_CLI" $@
+  else
+    "$SIGNAL_CLI" --service-environment="staging" --verbose --verbose $@
+  fi
   set +x
 }
 
 run_main() {
-  run --config="$PATH_MAIN" $@
+  export SIGNAL_CLI_AGENT_ID=main
+  if [ "$JSON_RPC" -eq 1 ]; then
+    run --json-rpc-socket="$XDG_RUNTIME_DIR/signal-cli/socket" $@
+  else
+    run --config="$PATH_MAIN" --log-file="$PATH_MAIN/log" $@
+  fi
+  unset SIGNAL_CLI_AGENT_ID
 }
 
 run_linked() {
-  run --config="$PATH_LINK" $@
+  export SIGNAL_CLI_AGENT_ID=linked
+  if [ "$JSON_RPC" -eq 1 ]; then
+    run --json-rpc-tcp="127.0.0.1:7583" $@
+  else
+    run --config="$PATH_LINK" --log-file="$PATH_LINK/log" $@
+  fi
+  unset SIGNAL_CLI_AGENT_ID
 }
 
 register() {
   NUMBER=$1
   PIN=$2
-  echo -n "Enter a captcha token (https://signalcaptchas.org/staging/challenge/generate.html): "
+  echo -n "Enter a captcha token (https://signalcaptchas.org/staging/registration/generate.html): "
   read CAPTCHA
   run_main -a "$NUMBER" register --captcha "$CAPTCHA"
   echo -n "Enter validation code for ${NUMBER}: "
@@ -84,6 +108,7 @@ sleep 5
 run_main listAccounts
 run_main --output=json listAccounts
 
+if [ "$JSON_RPC" -eq 0 ]; then
 ## DBus
 #run_main -a "$NUMBER_1" --dbus send "$NUMBER_2" -m daemon_not_running || true
 #run_main daemon &
@@ -127,6 +152,7 @@ exec 3<> "$FIFO_FILE"
 exec 3>&-
 
 wait
+fi
 
 run_main -a "$NUMBER_1" setPin "$TEST_PIN_1"
 run_main -a "$NUMBER_2" removePin
@@ -143,7 +169,7 @@ run_main -a "$NUMBER_2" send "$NUMBER_1" -m hi
 run_main -a "$NUMBER_1" receive
 run_main -a "$NUMBER_2" receive
 ## Groups
-GROUP_ID=$(run_main -a "$NUMBER_1" updateGroup -n GRUPPE -a LICENSE -m "$NUMBER_1" | grep -oP '(?<=").+(?=")')
+GROUP_ID=$(run_main -a "$NUMBER_1" --output=json updateGroup -n GRUPPE -a LICENSE -m "$NUMBER_1" | jq -r '.groupId')
 run_main -a "$NUMBER_1" send "$NUMBER_2" -m first
 run_main -a "$NUMBER_1" updateGroup -g "$GROUP_ID" -n GRUPPE_UMB -m "$NUMBER_2" --admin "$NUMBER_2" --description DESCRIPTION --link=enabled-with-approval --set-permission-add-member=only-admins --set-permission-edit-details=only-admins --set-permission-send-messages=only-admins -e 42
 run_main -a "$NUMBER_1" updateGroup -g "$GROUP_ID" --remove-admin "$NUMBER_2" --reset-link --set-permission-send-messages=every-member
@@ -151,14 +177,14 @@ run_main -a "$NUMBER_1" updateGroup -g "$GROUP_ID" -r "$NUMBER_2"
 run_main -a "$NUMBER_1" updateGroup -g "$GROUP_ID" -m "$NUMBER_2"
 run_main -a "$NUMBER_1" listGroups -d
 run_main -a "$NUMBER_1" --output=json listGroups -d
-run_main -a "$NUMBER_2" --verbose receive
+run_main -a "$NUMBER_2" receive
 run_main -a "$NUMBER_2" quitGroup -g "$GROUP_ID"
 run_main -a "$NUMBER_2" listGroups -d
 run_main -a "$NUMBER_2" --output=json listGroups -d
 run_main -a "$NUMBER_1" receive
 run_main -a "$NUMBER_1" updateGroup -g "$GROUP_ID" -m "$NUMBER_2"
-run_main -a "$NUMBER_1" --verbose block -g "$GROUP_ID"
-run_main -a "$NUMBER_1" --verbose unblock -g "$GROUP_ID"
+run_main -a "$NUMBER_1" block -g "$GROUP_ID"
+run_main -a "$NUMBER_1" unblock -g "$GROUP_ID"
 
 ## Configuration
 run_main -a "$NUMBER_1" updateConfiguration --read-receipts=true
@@ -171,15 +197,15 @@ run_main -a "$NUMBER_2" trust "$NUMBER_1" -a
 ## Basic send/receive
 for OUTPUT in "plain-text" "json"; do
   run_main -a "$NUMBER_1" --output="$OUTPUT" getUserStatus "$NUMBER_1" "$NUMBER_2" "+111111111"
-  run_main -a "$NUMBER_1" send "$NUMBER_2" -m hi
-  run_main -a "$NUMBER_2" send "$NUMBER_1" -m hi
-  run_main -a "$NUMBER_1" send -g "$GROUP_ID" -m hi -a LICENSE --mention "1:1:$NUMBER_2"
-  TIMESTAMP=$(uname -a | run_main -a "$NUMBER_1" send "$NUMBER_2")
-  run_main -a "$NUMBER_2" sendReaction "$NUMBER_1" -e 🍀 -a "$NUMBER_1" -t "$TIMESTAMP"
-  run_main -a "$NUMBER_1" remoteDelete "$NUMBER_2" -t "$TIMESTAMP"
+  run_main -a "$NUMBER_1" --output="$OUTPUT" send "$NUMBER_2" -m hi
+  run_main -a "$NUMBER_2" --output="$OUTPUT" send "$NUMBER_1" -m hi
+  run_main -a "$NUMBER_1" --output="$OUTPUT" send -g "$GROUP_ID" -m hi -a LICENSE --mention "1:1:$NUMBER_2"
+  TIMESTAMP=$(uname -a | run_main -a "$NUMBER_1" --output=json send --message-from-stdin "$NUMBER_2" | jq '.timestamp')
+  run_main -a "$NUMBER_2" --output="$OUTPUT" sendReaction "$NUMBER_1" -e 🍀 -a "$NUMBER_1" -t "$TIMESTAMP"
+  run_main -a "$NUMBER_1" --output="$OUTPUT" remoteDelete "$NUMBER_2" -t "$TIMESTAMP"
   run_main -a "$NUMBER_2" --output="$OUTPUT" receive
   run_main -a "$NUMBER_1" --output="$OUTPUT" receive
-  run_main -a "$NUMBER_1" send -e "$NUMBER_2"
+  run_main -a "$NUMBER_1" --output="$OUTPUT" send -e "$NUMBER_2"
   run_main -a "$NUMBER_2" --output="$OUTPUT" receive
 done
 
@@ -194,8 +220,8 @@ run_linked -a "$NUMBER_1" sendSyncRequest
 run_main -a "$NUMBER_1" sendContacts
 
 for OUTPUT in "plain-text" "json"; do
-  run_main -a "$NUMBER_1" send "$NUMBER_2" -m hi
-  run_main -a "$NUMBER_2" send "$NUMBER_1" -m hi
+  run_main -a "$NUMBER_1" --output="$OUTPUT" send "$NUMBER_2" -m hi
+  run_main -a "$NUMBER_2" --output="$OUTPUT" send "$NUMBER_1" -m hi
   run_main -a "$NUMBER_2" --output="$OUTPUT" receive
   run_main -a "$NUMBER_1" --output="$OUTPUT" receive
   run_linked -a "$NUMBER_1" --output="$OUTPUT" receive
@@ -206,3 +232,8 @@ run_main -a "$NUMBER_1" removeDevice -d 2
 ## Unregister
 run_main -a "$NUMBER_1" unregister
 run_main -a "$NUMBER_2" unregister --delete-account
+
+if [ ! -z "$GRAALVM_HOME" ]; then
+  "$GRAALVM_HOME"/lib/svm/bin/native-image-configure generate --input-dir=graalvm-config-dir/ --input-dir=graalvm-config-dir-linked/ --input-dir=graalvm-config-dir-main/ --output-dir=graalvm-config-dir//
+  rm -r graalvm-config-dir-main graalvm-config-dir-linked
+fi