Tests: Add WAMP automated test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/cli_tests/wamp_test.bash Fri Feb 28 17:00:14 2025 +0100
@@ -0,0 +1,197 @@
+# Start runtime one first time to generate PSK +$BEREMIZPYTHONPATH $BEREMIZPATH/Beremiz_service.py -s psk.txt -n test_wamp_ID -x 0 & +res=110 # default to ETIMEDOUT + if [[ -a psk.txt ]]; then + echo waiting PSK.... $c +if [ "$res" != "0" ] ; then + echo timeout generating PSK. +IFS=':' read -r wamp_ID wamp_secret < psk.txt +cat > .crossbar/config.json <<JsonEnd + "id": "automation_router", + "name": "authenticated", + "secret": "${wamp_secret}", + "role": "authenticated" +crossbar start &> crossbar_log.txt & +res=110 # default to ETIMEDOUT + if [[ -a .crossbar/node.pid ]]; then + echo found crossbar pid + echo wait for crossbar to start.... $c +if [ "$res" != "0" ] ; then + echo timeout starting crossbar. +# give more time to crossbar +# Prepare runtime Wamp config +cat > wampconf.json <<JsonEnd + "autoPingInterval": 60, + "url": "ws://127.0.0.1:8888/ws" +# Start Beremiz runtime again, with wamp enabled +$BEREMIZPYTHONPATH $BEREMIZPATH/Beremiz_service.py -c wampconf.json -s psk.txt -n test_wamp_ID -x 0 &> >( + # Wait for server to print modified value + if [[ "$line" == "PLCobject : PLC started" ]]; then + echo "PLC was programmed" +echo wait for runtime to come up +cp -a $BEREMIZPATH/tests/projects/wamp . +# place PSK so that IDE already knows runtime +cp psk.txt wamp/psk/${wamp_ID}.secret +# TODO: patch project's URI to connect to $BEREMIZ_LOCAL_HOST +# used in tests instead of 127.0.0.1 +# Use CLI to build transfer and start PLC +setsid $BEREMIZPYTHONPATH $BEREMIZPATH/Beremiz_cli.py -k \ + --project-home wamp build transfer run &> >( + # Wait for PLC runtime to output expected value on stdout + if [[ "$line" == "PLC installed successfully." ]]; then + echo "CLI did transfer PLC program" +echo all subprocess started, start polling results +res=110 # default to ETIMEDOUT + if [[ -a ./CLI_OK && -a ./PLC_OK ]]; then +# Kill PLC and subprocess +echo will kill PLC:$PLC_PID, SERVER:$SERVER_PID and CLI:$CLI_PID --- a/tests/projects/wamp/.crossbar/config.json Fri Feb 28 16:56:53 2025 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
- "id": "automation_router",
- "name": "authenticated",
- "secret": "z+L5NUdkG18PeHjIyIuYAYMRiBjbedvokLV+a0nBiu04N9bhphzVkbQUfq5OJTJfUwaTG/GasmevRB4XNRhNJSbnYS+PDhXb06r/c+C6IfBwryqQyddiiDh6qh5QueT0eYCuxtDCZODe/TTfTI8ACetscGpCPSmlHmELFgMLCp2iYxxuUMw5ugad8E3BoehKCMkGD7Sb8dKDbrOHdvJQjKqcMkdUn4iaoMYmCFoAfqPShDx00K4O0FaU9a9/SNBN",
- "role": "authenticated"
--- a/tests/projects/wamp/README Fri Feb 28 16:56:53 2025 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-/* This project contains wamp client config to be loaded at runtime startup. */
- ./project_files/wampconf.json
- wampconf.json is in "Project Files", so it is copied to runtime's working
- directory, and then loaded after program transfer + runtime restart.
-/* Use pip and python virtual env to obtain crossbar */
-/* Crossbar test router configuration is available in .crossbar directory. */
-/* Start Crossbar command: (directly in project directory)*/
-# steal config and PSK from config to start runtime directly with them
-cp ${BEREMIZ_DIR}/tests/projects/wamp/project_files/wampconf.json ${RUNTIME_CONF_DIR}/wampconf.json
-cp ${BEREMIZ_DIR}/tests/projects/wamp/psk/test_service_name.psk ${RUNTIME_KEYSTORE}/psk.txt
-# launch runtime pointing to confif ans PSK
-python ${BEREMIZ_DIR}/Beremiz_service.py -c ${RUNTIME_CONF_DIR}/wampconf.json -s ${RUNTIME_KEYSTORE}/psk.txt -n test_service_name ${PLC_WORKING_DIR}
--- a/tests/projects/wamp/beremiz.xml Fri Feb 28 16:56:53 2025 +0100
+++ b/tests/projects/wamp/beremiz.xml Fri Feb 28 17:00:14 2025 +0100
@@ -1,4 +1,4 @@
<?xml version='1.0' encoding='utf-8'?>
-<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="WAMP://127.0.0.1:8888#Automation#wamptest">
+<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="WAMP://127.0.0.1:8888/ws#Automation#test_wamp_ID"> --- a/tests/projects/wamp/project_files/wampconf.json Fri Feb 28 16:56:53 2025 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
- "autoPingInterval": 60,
- "url": "ws://127.0.0.1:8888/ws"
--- a/tests/projects/wamp/psk/management.json Fri Feb 28 16:56:53 2025 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-[[test_service_name, ERPC://127.0.0.1:3000, null, 25/02/24-14:51:25]]
--- a/tests/projects/wamp/psk/test_service_name.psk Fri Feb 28 16:56:53 2025 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-test_service_name:z+L5NUdkG18PeHjIyIuYAYMRiBjbedvokLV+a0nBiu04N9bhphzVkbQUfq5OJTJfUwaTG/GasmevRB4XNRhNJSbnYS+PDhXb06r/c+C6IfBwryqQyddiiDh6qh5QueT0eYCuxtDCZODe/TTfTI8ACetscGpCPSmlHmELFgMLCp2iYxxuUMw5ugad8E3BoehKCMkGD7Sb8dKDbrOHdvJQjKqcMkdUn4iaoMYmCFoAfqPShDx00K4O0FaU9a9/SNBN