#!/usr/bin/env bash # Runs only inside the disposable, network-isolated task container. set -euo pipefail mkdir -p /task/driver/data /task/cli/data /task/server XDG_DATA_HOME=/task/driver/data dotnet /candidate/ProcessHost.dll prepare-driver /task/driver > /task/driver-prepare.log 2>&1 OPCUA_MATRIX_CLIENT_PKI=/task/cli/data/OtOpcUaClient/pki XDG_DATA_HOME=/task/cli/data dotnet /candidate/ProcessHost.dll prepare /task/cli > /task/cli-prepare.log 2>&1 mkdir -p /task/server/server-pki/trusted/certs cp /task/driver/data/OtOpcUa/pki/own/certs/* /task/server/server-pki/trusted/certs/ cp /task/cli/data/OtOpcUaClient/pki/own/certs/* /task/server/server-pki/trusted/certs/ dotnet /server/ProcessHost.dll server /task/server > /task/server.log 2>&1 & server_pid=$! cleanup() { touch /task/server/stop wait "$server_pid" || true } trap cleanup EXIT for attempt in $(seq 1 600); do test ! -f /task/server/ready.json || break kill -0 "$server_pid" || exit 1 sleep 0.1 done test -f /task/server/ready.json endpoint=$(cat /task/server/endpoint.txt) mkdir -p /task/driver/data/OtOpcUa/pki/trusted/certs /task/cli/data/OtOpcUaClient/pki/trusted/certs cp /task/server/server-pki/own/certs/* /task/driver/data/OtOpcUa/pki/trusted/certs/ cp /task/server/server-pki/own/certs/* /task/cli/data/OtOpcUaClient/pki/trusted/certs/ result=0 XDG_DATA_HOME=/task/driver/data dotnet /candidate/ProcessHost.dll driver /task/driver "$endpoint" > /task/driver.log 2>&1 || result=1 # CLI currently autoaccepts by product design; it has no strict-validation flag. # Its public certificates are nevertheless explicitly exchanged in this fixture. XDG_DATA_HOME=/task/cli/data dotnet /cli/ZB.MOM.WW.OtOpcUa.Client.CLI.dll read --url "$endpoint" --security signandencrypt --username apikey --password "$OPCUA_MATRIX_PASSWORD" --node 'ns=2;s=Matrix/dev/Scalar' > /task/cli-read.log 2>&1 || result=1 XDG_DATA_HOME=/task/cli/data dotnet /cli/ZB.MOM.WW.OtOpcUa.Client.CLI.dll historyread --url "$endpoint" --security signandencrypt --username apikey --password "$OPCUA_MATRIX_PASSWORD" --node 'ns=2;s=Matrix/dev/Scalar' --start 2026-10-01T00:00:00Z --end 2026-10-01T00:01:00Z --max 100 > /task/cli-raw-history.log 2>&1 || result=1 XDG_DATA_HOME=/task/cli/data dotnet /cli/ZB.MOM.WW.OtOpcUa.Client.CLI.dll historyread --url "$endpoint" --security signandencrypt --username apikey --password "$OPCUA_MATRIX_PASSWORD" --node 'ns=2;s=Matrix/dev' --start 2026-10-01T00:00:00Z --end 2026-10-01T00:01:00Z --max 100 --events --fields EventId,Message > /task/cli-event-history.log 2>&1 || result=1 exit "$result"