@phystack/hub-client 4.5.19-dev → 4.5.21-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +22 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +252 -378
- package/dist/index.js.map +1 -1
- package/dist/peripheral-twin.d.ts +34 -0
- package/dist/peripheral-twin.d.ts.map +1 -0
- package/dist/peripheral-twin.js +234 -0
- package/dist/peripheral-twin.js.map +1 -0
- package/dist/services/phyhub-connection.service.d.ts +1 -0
- package/dist/services/phyhub-connection.service.d.ts.map +1 -1
- package/dist/services/phyhub-connection.service.js +17 -0
- package/dist/services/phyhub-connection.service.js.map +1 -1
- package/dist/services/phyhub-direct-connection.service.d.ts +21 -0
- package/dist/services/phyhub-direct-connection.service.d.ts.map +1 -0
- package/dist/services/phyhub-direct-connection.service.js +101 -0
- package/dist/services/phyhub-direct-connection.service.js.map +1 -0
- package/dist/services/webrtc/data-channel-handler.d.ts +45 -0
- package/dist/services/webrtc/data-channel-handler.d.ts.map +1 -0
- package/dist/services/webrtc/data-channel-handler.js +260 -0
- package/dist/services/webrtc/data-channel-handler.js.map +1 -0
- package/dist/services/webrtc/index.d.ts +8 -0
- package/dist/services/webrtc/index.d.ts.map +1 -0
- package/dist/services/webrtc/index.js +18 -0
- package/dist/services/webrtc/index.js.map +1 -0
- package/dist/services/webrtc/media-stream-handler.d.ts +57 -0
- package/dist/services/webrtc/media-stream-handler.d.ts.map +1 -0
- package/dist/services/webrtc/media-stream-handler.js +383 -0
- package/dist/services/webrtc/media-stream-handler.js.map +1 -0
- package/dist/services/webrtc/peer-connection-manager.d.ts +40 -0
- package/dist/services/webrtc/peer-connection-manager.d.ts.map +1 -0
- package/dist/services/webrtc/peer-connection-manager.js +336 -0
- package/dist/services/webrtc/peer-connection-manager.js.map +1 -0
- package/dist/services/webrtc/types.d.ts +134 -0
- package/dist/services/webrtc/types.d.ts.map +1 -0
- package/dist/services/webrtc/types.js +12 -0
- package/dist/services/webrtc/types.js.map +1 -0
- package/dist/services/webrtc/webrtc-globals.d.ts +4 -0
- package/dist/services/webrtc/webrtc-globals.d.ts.map +1 -0
- package/dist/services/webrtc/webrtc-globals.js +72 -0
- package/dist/services/webrtc/webrtc-globals.js.map +1 -0
- package/dist/services/webrtc/webrtc-manager.d.ts +35 -0
- package/dist/services/webrtc/webrtc-manager.d.ts.map +1 -0
- package/dist/services/webrtc/webrtc-manager.js +274 -0
- package/dist/services/webrtc/webrtc-manager.js.map +1 -0
- package/dist/test/communication-comprehensive-test.d.ts +8 -0
- package/dist/test/communication-comprehensive-test.d.ts.map +1 -0
- package/dist/test/communication-comprehensive-test.js +356 -0
- package/dist/test/communication-comprehensive-test.js.map +1 -0
- package/dist/test/webrtc-channel-names-test.d.ts +2 -0
- package/dist/test/webrtc-channel-names-test.d.ts.map +1 -0
- package/dist/test/webrtc-channel-names-test.js +177 -0
- package/dist/test/webrtc-channel-names-test.js.map +1 -0
- package/dist/test/webrtc-comprehensive-test.d.ts +2 -0
- package/dist/test/webrtc-comprehensive-test.d.ts.map +1 -0
- package/dist/test/webrtc-comprehensive-test.js +328 -0
- package/dist/test/webrtc-comprehensive-test.js.map +1 -0
- package/dist/test/webrtc-reconnect-test.d.ts +4 -0
- package/dist/test/webrtc-reconnect-test.d.ts.map +1 -0
- package/dist/test/webrtc-reconnect-test.js +244 -0
- package/dist/test/webrtc-reconnect-test.js.map +1 -0
- package/dist/test/webrtc-test-harness.d.ts +4 -0
- package/dist/test/webrtc-test-harness.d.ts.map +1 -0
- package/dist/test/webrtc-test-harness.js +169 -0
- package/dist/test/webrtc-test-harness.js.map +1 -0
- package/dist/twin-messaging.d.ts +20 -0
- package/dist/twin-messaging.d.ts.map +1 -0
- package/dist/twin-messaging.js +94 -0
- package/dist/twin-messaging.js.map +1 -0
- package/dist/twin-registry.d.ts +9 -0
- package/dist/twin-registry.d.ts.map +1 -0
- package/dist/twin-registry.js +26 -0
- package/dist/twin-registry.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +20 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/twin.types.d.ts +62 -14
- package/dist/types/twin.types.d.ts.map +1 -1
- package/dist/types/twin.types.js +8 -1
- package/dist/types/twin.types.js.map +1 -1
- package/docs/webrtc-howto.md +398 -0
- package/docs/webrtc-test.md +330 -0
- package/package.json +3 -3
- package/scripts/webrtc-test.sh +401 -0
- package/src/index.ts +378 -568
- package/src/peripheral-twin.ts +337 -0
- package/src/services/phyhub-connection.service.ts +24 -0
- package/src/services/phyhub-direct-connection.service.ts +159 -0
- package/src/services/webrtc/data-channel-handler.ts +362 -0
- package/src/services/webrtc/index.ts +36 -0
- package/src/services/webrtc/media-stream-handler.ts +536 -0
- package/src/services/webrtc/peer-connection-manager.ts +467 -0
- package/src/services/webrtc/types.ts +273 -0
- package/src/services/webrtc/webrtc-globals.ts +108 -0
- package/src/services/webrtc/webrtc-manager.ts +490 -0
- package/src/test/communication-comprehensive-test.ts +533 -0
- package/src/test/webrtc-channel-names-test.ts +266 -0
- package/src/test/webrtc-comprehensive-test.ts +494 -0
- package/src/test/webrtc-reconnect-test.ts +345 -0
- package/src/test/webrtc-test-harness.ts +254 -0
- package/src/twin-messaging.ts +184 -0
- package/src/twin-registry.ts +39 -0
- package/src/types/index.ts +3 -0
- package/src/types/twin.types.ts +80 -14
- package/dist/services/webrtc/datachannel.d.ts +0 -10
- package/dist/services/webrtc/datachannel.d.ts.map +0 -1
- package/dist/services/webrtc/datachannel.js +0 -290
- package/dist/services/webrtc/datachannel.js.map +0 -1
- package/dist/services/webrtc/mediastream.d.ts +0 -10
- package/dist/services/webrtc/mediastream.d.ts.map +0 -1
- package/dist/services/webrtc/mediastream.js +0 -396
- package/dist/services/webrtc/mediastream.js.map +0 -1
- package/dist/services/webrtc/peer-connection-ice.d.ts +0 -32
- package/dist/services/webrtc/peer-connection-ice.d.ts.map +0 -1
- package/dist/services/webrtc/peer-connection-ice.js +0 -483
- package/dist/services/webrtc/peer-connection-ice.js.map +0 -1
- package/src/services/webrtc/datachannel.ts +0 -421
- package/src/services/webrtc/mediastream.ts +0 -602
- package/src/services/webrtc/peer-connection-ice.ts +0 -689
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# WebRTC Two-Host Test Runner
|
|
4
|
+
#
|
|
5
|
+
# This script automates testing WebRTC connections between two hosts:
|
|
6
|
+
# - Local machine runs as initiator
|
|
7
|
+
# - Remote Linux host runs as responder
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# ./scripts/webrtc-test.sh setup # Configure credentials
|
|
11
|
+
# ./scripts/webrtc-test.sh run # Run the test
|
|
12
|
+
# ./scripts/webrtc-test.sh clean # Clean up remote host
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
set -e
|
|
16
|
+
|
|
17
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
+
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
19
|
+
ENV_FILE="$PROJECT_DIR/.env.webrtc-test"
|
|
20
|
+
REMOTE_LOG="/tmp/webrtc-responder.log"
|
|
21
|
+
LOCAL_LOG="/tmp/webrtc-initiator.log"
|
|
22
|
+
|
|
23
|
+
# Colors for output
|
|
24
|
+
RED='\033[0;31m'
|
|
25
|
+
GREEN='\033[0;32m'
|
|
26
|
+
YELLOW='\033[1;33m'
|
|
27
|
+
BLUE='\033[0;34m'
|
|
28
|
+
NC='\033[0m' # No Color
|
|
29
|
+
|
|
30
|
+
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
31
|
+
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
32
|
+
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
33
|
+
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
34
|
+
|
|
35
|
+
# Load environment file
|
|
36
|
+
load_env() {
|
|
37
|
+
if [[ ! -f "$ENV_FILE" ]]; then
|
|
38
|
+
log_error "Environment file not found: $ENV_FILE"
|
|
39
|
+
log_info "Run './scripts/webrtc-test.sh setup' to create it"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
source "$ENV_FILE"
|
|
43
|
+
|
|
44
|
+
# Validate required variables
|
|
45
|
+
local missing=()
|
|
46
|
+
[[ -z "$DEVICE_A_ID" ]] && missing+=("DEVICE_A_ID")
|
|
47
|
+
[[ -z "$DEVICE_A_KEY" ]] && missing+=("DEVICE_A_KEY")
|
|
48
|
+
[[ -z "$DEVICE_A_TWIN_ID" ]] && missing+=("DEVICE_A_TWIN_ID")
|
|
49
|
+
[[ -z "$DEVICE_B_ID" ]] && missing+=("DEVICE_B_ID")
|
|
50
|
+
[[ -z "$DEVICE_B_KEY" ]] && missing+=("DEVICE_B_KEY")
|
|
51
|
+
[[ -z "$DEVICE_B_TWIN_ID" ]] && missing+=("DEVICE_B_TWIN_ID")
|
|
52
|
+
[[ -z "$REMOTE_HOST" ]] && missing+=("REMOTE_HOST")
|
|
53
|
+
|
|
54
|
+
if [[ ${#missing[@]} -gt 0 ]]; then
|
|
55
|
+
log_error "Missing required variables: ${missing[*]}"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Set defaults
|
|
60
|
+
REMOTE_PATH="${REMOTE_PATH:-/tmp/hub-client-test}"
|
|
61
|
+
PHYHUB_REGION="${PHYHUB_REGION:-eu}"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Setup wizard
|
|
65
|
+
cmd_setup() {
|
|
66
|
+
log_info "WebRTC Test Setup Wizard"
|
|
67
|
+
echo ""
|
|
68
|
+
|
|
69
|
+
# Load existing values if file exists
|
|
70
|
+
if [[ -f "$ENV_FILE" ]]; then
|
|
71
|
+
source "$ENV_FILE"
|
|
72
|
+
log_info "Loading existing configuration from $ENV_FILE"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
echo "Enter credentials for Device A (local initiator):"
|
|
76
|
+
read -p " Device A ID [${DEVICE_A_ID:-}]: " input
|
|
77
|
+
DEVICE_A_ID="${input:-$DEVICE_A_ID}"
|
|
78
|
+
|
|
79
|
+
read -p " Device A Access Key [${DEVICE_A_KEY:+****}]: " input
|
|
80
|
+
DEVICE_A_KEY="${input:-$DEVICE_A_KEY}"
|
|
81
|
+
|
|
82
|
+
read -p " Device A Twin ID [${DEVICE_A_TWIN_ID:-}]: " input
|
|
83
|
+
DEVICE_A_TWIN_ID="${input:-$DEVICE_A_TWIN_ID}"
|
|
84
|
+
|
|
85
|
+
echo ""
|
|
86
|
+
echo "Enter credentials for Device B (remote responder):"
|
|
87
|
+
read -p " Device B ID [${DEVICE_B_ID:-}]: " input
|
|
88
|
+
DEVICE_B_ID="${input:-$DEVICE_B_ID}"
|
|
89
|
+
|
|
90
|
+
read -p " Device B Access Key [${DEVICE_B_KEY:+****}]: " input
|
|
91
|
+
DEVICE_B_KEY="${input:-$DEVICE_B_KEY}"
|
|
92
|
+
|
|
93
|
+
read -p " Device B Twin ID [${DEVICE_B_TWIN_ID:-}]: " input
|
|
94
|
+
DEVICE_B_TWIN_ID="${input:-$DEVICE_B_TWIN_ID}"
|
|
95
|
+
|
|
96
|
+
echo ""
|
|
97
|
+
echo "Enter remote host configuration:"
|
|
98
|
+
read -p " Remote Host (user@host) [${REMOTE_HOST:-}]: " input
|
|
99
|
+
REMOTE_HOST="${input:-$REMOTE_HOST}"
|
|
100
|
+
|
|
101
|
+
read -p " Remote Path [${REMOTE_PATH:-/tmp/hub-client-test}]: " input
|
|
102
|
+
REMOTE_PATH="${input:-${REMOTE_PATH:-/tmp/hub-client-test}}"
|
|
103
|
+
|
|
104
|
+
read -p " PhyHub Region (eu/us) [${PHYHUB_REGION:-eu}]: " input
|
|
105
|
+
PHYHUB_REGION="${input:-${PHYHUB_REGION:-eu}}"
|
|
106
|
+
|
|
107
|
+
# Write environment file
|
|
108
|
+
cat > "$ENV_FILE" << EOF
|
|
109
|
+
# WebRTC Test Configuration
|
|
110
|
+
# Generated by webrtc-test.sh setup
|
|
111
|
+
|
|
112
|
+
# Device A (local initiator)
|
|
113
|
+
DEVICE_A_ID=$DEVICE_A_ID
|
|
114
|
+
DEVICE_A_KEY=$DEVICE_A_KEY
|
|
115
|
+
DEVICE_A_TWIN_ID=$DEVICE_A_TWIN_ID
|
|
116
|
+
|
|
117
|
+
# Device B (remote responder)
|
|
118
|
+
DEVICE_B_ID=$DEVICE_B_ID
|
|
119
|
+
DEVICE_B_KEY=$DEVICE_B_KEY
|
|
120
|
+
DEVICE_B_TWIN_ID=$DEVICE_B_TWIN_ID
|
|
121
|
+
|
|
122
|
+
# Remote host configuration
|
|
123
|
+
REMOTE_HOST=$REMOTE_HOST
|
|
124
|
+
REMOTE_PATH=$REMOTE_PATH
|
|
125
|
+
|
|
126
|
+
# PhyHub configuration
|
|
127
|
+
PHYHUB_REGION=$PHYHUB_REGION
|
|
128
|
+
EOF
|
|
129
|
+
|
|
130
|
+
chmod 600 "$ENV_FILE"
|
|
131
|
+
log_success "Configuration saved to $ENV_FILE"
|
|
132
|
+
|
|
133
|
+
# Add to gitignore if not already there
|
|
134
|
+
GITIGNORE="$PROJECT_DIR/.gitignore"
|
|
135
|
+
if ! grep -q ".env.webrtc-test" "$GITIGNORE" 2>/dev/null; then
|
|
136
|
+
echo ".env.webrtc-test" >> "$GITIGNORE"
|
|
137
|
+
log_info "Added .env.webrtc-test to .gitignore"
|
|
138
|
+
fi
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
# Build locally
|
|
142
|
+
build_local() {
|
|
143
|
+
log_info "Building project locally..."
|
|
144
|
+
cd "$PROJECT_DIR"
|
|
145
|
+
yarn build
|
|
146
|
+
log_success "Build complete"
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Sync code to remote host
|
|
150
|
+
sync_to_remote() {
|
|
151
|
+
log_info "Syncing code to $REMOTE_HOST:$REMOTE_PATH..."
|
|
152
|
+
|
|
153
|
+
# Create remote directory
|
|
154
|
+
ssh "$REMOTE_HOST" "mkdir -p $REMOTE_PATH"
|
|
155
|
+
|
|
156
|
+
# Sync project files (including dist, excluding node_modules)
|
|
157
|
+
rsync -avz --delete \
|
|
158
|
+
--exclude 'node_modules' \
|
|
159
|
+
--exclude '.git' \
|
|
160
|
+
--exclude '*.log' \
|
|
161
|
+
--exclude '.env.webrtc-test' \
|
|
162
|
+
"$PROJECT_DIR/" "$REMOTE_HOST:$REMOTE_PATH/"
|
|
163
|
+
|
|
164
|
+
log_success "Code synced to remote host"
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
# Remote shell prefix to ensure proper PATH
|
|
168
|
+
REMOTE_SHELL_PREFIX="source ~/.nvm/nvm.sh 2>/dev/null; source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || source ~/.profile 2>/dev/null;"
|
|
169
|
+
|
|
170
|
+
# Install dependencies on remote
|
|
171
|
+
install_remote_deps() {
|
|
172
|
+
log_info "Installing dependencies on remote host..."
|
|
173
|
+
|
|
174
|
+
ssh "$REMOTE_HOST" "$REMOTE_SHELL_PREFIX cd $REMOTE_PATH && yarn install 2>&1" || {
|
|
175
|
+
log_warn "yarn install had warnings, continuing..."
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
log_success "Dependencies installed on remote"
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
# Start responder on remote host
|
|
182
|
+
# Usage: start_remote_responder [test-script]
|
|
183
|
+
# test-script: optional, defaults to webrtc-test-harness.js
|
|
184
|
+
start_remote_responder() {
|
|
185
|
+
local test_script="${1:-webrtc-test-harness.js}"
|
|
186
|
+
log_info "Starting responder on remote host (test: $test_script)..."
|
|
187
|
+
|
|
188
|
+
# Kill any existing responder process (disable errexit for this)
|
|
189
|
+
set +e
|
|
190
|
+
ssh "$REMOTE_HOST" "pkill -f 'webrtc-test-harness\|webrtc-channel-names-test\|communication-comprehensive-test' 2>/dev/null" || true
|
|
191
|
+
set -e
|
|
192
|
+
sleep 1
|
|
193
|
+
|
|
194
|
+
# Create a wrapper script locally and copy to remote
|
|
195
|
+
local tmp_script="/tmp/run-responder-$$.sh"
|
|
196
|
+
cat > "$tmp_script" << EOF
|
|
197
|
+
#!/bin/bash
|
|
198
|
+
source ~/.nvm/nvm.sh 2>/dev/null
|
|
199
|
+
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null || source ~/.profile 2>/dev/null
|
|
200
|
+
cd $REMOTE_PATH
|
|
201
|
+
export PHYHUB_DIRECT=true
|
|
202
|
+
export DEVICE_ID='$DEVICE_B_ID'
|
|
203
|
+
export ACCESS_KEY='$DEVICE_B_KEY'
|
|
204
|
+
export PEER_TWIN_ID='$DEVICE_A_TWIN_ID'
|
|
205
|
+
export PHYHUB_REGION='$PHYHUB_REGION'
|
|
206
|
+
export ROLE=responder
|
|
207
|
+
node dist/test/$test_script
|
|
208
|
+
EOF
|
|
209
|
+
scp -q "$tmp_script" "$REMOTE_HOST:$REMOTE_PATH/run-responder.sh"
|
|
210
|
+
rm -f "$tmp_script"
|
|
211
|
+
|
|
212
|
+
ssh "$REMOTE_HOST" "chmod +x $REMOTE_PATH/run-responder.sh"
|
|
213
|
+
|
|
214
|
+
# Start responder in background using nohup with proper detachment
|
|
215
|
+
ssh -f "$REMOTE_HOST" "nohup bash $REMOTE_PATH/run-responder.sh > $REMOTE_LOG 2>&1 &"
|
|
216
|
+
|
|
217
|
+
# Wait for responder to be ready
|
|
218
|
+
log_info "Waiting for responder to be ready..."
|
|
219
|
+
sleep 8
|
|
220
|
+
|
|
221
|
+
# Check remote log for connection
|
|
222
|
+
if ssh "$REMOTE_HOST" "grep -q 'Connected' $REMOTE_LOG 2>/dev/null"; then
|
|
223
|
+
log_success "Responder connected and ready"
|
|
224
|
+
elif ssh "$REMOTE_HOST" "grep -q 'Connecting to PhyHub' $REMOTE_LOG 2>/dev/null"; then
|
|
225
|
+
log_info "Responder is connecting..."
|
|
226
|
+
sleep 5
|
|
227
|
+
else
|
|
228
|
+
log_warn "Responder may not be ready yet, continuing anyway..."
|
|
229
|
+
log_info "Current remote log:"
|
|
230
|
+
ssh "$REMOTE_HOST" "tail -20 $REMOTE_LOG 2>/dev/null || echo 'No log yet'"
|
|
231
|
+
fi
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
# Run initiator locally
|
|
235
|
+
# Usage: run_local_initiator [test-script]
|
|
236
|
+
# test-script: optional, defaults to webrtc-test-harness.js
|
|
237
|
+
run_local_initiator() {
|
|
238
|
+
local test_script="${1:-webrtc-test-harness.js}"
|
|
239
|
+
log_info "Running initiator locally (test: $test_script)..."
|
|
240
|
+
|
|
241
|
+
cd "$PROJECT_DIR"
|
|
242
|
+
|
|
243
|
+
PHYHUB_DIRECT=true \
|
|
244
|
+
DEVICE_ID="$DEVICE_A_ID" \
|
|
245
|
+
ACCESS_KEY="$DEVICE_A_KEY" \
|
|
246
|
+
PEER_TWIN_ID="$DEVICE_B_TWIN_ID" \
|
|
247
|
+
PHYHUB_REGION="$PHYHUB_REGION" \
|
|
248
|
+
ROLE=initiator \
|
|
249
|
+
node "dist/test/$test_script" 2>&1 | tee "$LOCAL_LOG"
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
# Collect and display results
|
|
253
|
+
collect_results() {
|
|
254
|
+
echo ""
|
|
255
|
+
log_info "Test completed. Collecting results..."
|
|
256
|
+
echo ""
|
|
257
|
+
|
|
258
|
+
echo "=== Remote Responder Log ==="
|
|
259
|
+
ssh "$REMOTE_HOST" "cat $REMOTE_LOG 2>/dev/null || echo 'No log available'"
|
|
260
|
+
echo ""
|
|
261
|
+
|
|
262
|
+
echo "=== Local Initiator Log ==="
|
|
263
|
+
cat "$LOCAL_LOG" 2>/dev/null || echo "No log available"
|
|
264
|
+
echo ""
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
# Clean up
|
|
268
|
+
cleanup() {
|
|
269
|
+
log_info "Cleaning up..."
|
|
270
|
+
|
|
271
|
+
# Kill remote responder
|
|
272
|
+
ssh "$REMOTE_HOST" "pkill -f 'webrtc-test-harness\|communication-comprehensive-test' 2>/dev/null || true"
|
|
273
|
+
|
|
274
|
+
# Clean remote logs
|
|
275
|
+
ssh "$REMOTE_HOST" "rm -f $REMOTE_LOG 2>/dev/null || true"
|
|
276
|
+
|
|
277
|
+
# Clean local logs
|
|
278
|
+
rm -f "$LOCAL_LOG" 2>/dev/null || true
|
|
279
|
+
|
|
280
|
+
log_success "Cleanup complete"
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
# Clean remote installation
|
|
284
|
+
cmd_clean() {
|
|
285
|
+
load_env
|
|
286
|
+
|
|
287
|
+
log_info "Cleaning up remote host..."
|
|
288
|
+
|
|
289
|
+
ssh "$REMOTE_HOST" "pkill -f 'webrtc-test-harness\|communication-comprehensive-test' 2>/dev/null || true"
|
|
290
|
+
ssh "$REMOTE_HOST" "rm -rf $REMOTE_PATH 2>/dev/null || true"
|
|
291
|
+
ssh "$REMOTE_HOST" "rm -f $REMOTE_LOG 2>/dev/null || true"
|
|
292
|
+
|
|
293
|
+
log_success "Remote host cleaned"
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
# Run the test
|
|
297
|
+
# Usage: cmd_run [test-type]
|
|
298
|
+
# test-type: basic (default) or channels
|
|
299
|
+
cmd_run() {
|
|
300
|
+
local test_type="${1:-basic}"
|
|
301
|
+
local test_script
|
|
302
|
+
|
|
303
|
+
case "$test_type" in
|
|
304
|
+
basic)
|
|
305
|
+
test_script="webrtc-test-harness.js"
|
|
306
|
+
;;
|
|
307
|
+
channels)
|
|
308
|
+
test_script="webrtc-channel-names-test.js"
|
|
309
|
+
;;
|
|
310
|
+
comprehensive|all)
|
|
311
|
+
test_script="webrtc-comprehensive-test.js"
|
|
312
|
+
;;
|
|
313
|
+
reconnect)
|
|
314
|
+
test_script="webrtc-reconnect-test.js"
|
|
315
|
+
;;
|
|
316
|
+
communication|comm)
|
|
317
|
+
test_script="communication-comprehensive-test.js"
|
|
318
|
+
;;
|
|
319
|
+
*)
|
|
320
|
+
log_error "Unknown test type: $test_type"
|
|
321
|
+
log_info "Available: basic, channels, comprehensive, reconnect, communication"
|
|
322
|
+
exit 1
|
|
323
|
+
;;
|
|
324
|
+
esac
|
|
325
|
+
|
|
326
|
+
load_env
|
|
327
|
+
|
|
328
|
+
echo ""
|
|
329
|
+
log_info "WebRTC Two-Host Test ($test_type)"
|
|
330
|
+
echo "=============================================="
|
|
331
|
+
echo " Test: $test_script"
|
|
332
|
+
echo " Local (Initiator): Device A - Twin $DEVICE_A_TWIN_ID"
|
|
333
|
+
echo " Remote (Responder): Device B - Twin $DEVICE_B_TWIN_ID @ $REMOTE_HOST"
|
|
334
|
+
echo " PhyHub Region: $PHYHUB_REGION"
|
|
335
|
+
echo "=============================================="
|
|
336
|
+
echo ""
|
|
337
|
+
|
|
338
|
+
# Set up trap for cleanup
|
|
339
|
+
trap cleanup EXIT
|
|
340
|
+
|
|
341
|
+
# Build and sync
|
|
342
|
+
build_local
|
|
343
|
+
sync_to_remote
|
|
344
|
+
install_remote_deps
|
|
345
|
+
|
|
346
|
+
# Start responder on remote
|
|
347
|
+
start_remote_responder "$test_script"
|
|
348
|
+
|
|
349
|
+
# Run initiator locally
|
|
350
|
+
run_local_initiator "$test_script"
|
|
351
|
+
|
|
352
|
+
# Collect results
|
|
353
|
+
collect_results
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
# Show usage
|
|
357
|
+
cmd_help() {
|
|
358
|
+
echo "Communication Two-Host Test Runner"
|
|
359
|
+
echo ""
|
|
360
|
+
echo "Usage: $0 <command> [options]"
|
|
361
|
+
echo ""
|
|
362
|
+
echo "Commands:"
|
|
363
|
+
echo " setup Configure test credentials and remote host"
|
|
364
|
+
echo " run [type] Run a communication test"
|
|
365
|
+
echo " types: basic, channels, all, reconnect, communication"
|
|
366
|
+
echo " clean Clean up remote host installation"
|
|
367
|
+
echo " help Show this help message"
|
|
368
|
+
echo ""
|
|
369
|
+
echo "Test Types:"
|
|
370
|
+
echo " basic Basic WebRTC DataChannel test (default)"
|
|
371
|
+
echo " channels Named DataChannel test"
|
|
372
|
+
echo " all WebRTC comprehensive test (DataChannels + MediaStreams)"
|
|
373
|
+
echo " reconnect WebRTC reconnection test"
|
|
374
|
+
echo " communication Full test: Events + Actions + DataChannels + MediaStreams"
|
|
375
|
+
echo ""
|
|
376
|
+
echo "Examples:"
|
|
377
|
+
echo " $0 setup # First time setup"
|
|
378
|
+
echo " $0 run # Run basic test (default channel)"
|
|
379
|
+
echo " $0 run communication # Run full communication test suite"
|
|
380
|
+
echo " $0 run all # Run WebRTC comprehensive test"
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
# Main
|
|
384
|
+
case "${1:-}" in
|
|
385
|
+
setup)
|
|
386
|
+
cmd_setup
|
|
387
|
+
;;
|
|
388
|
+
run)
|
|
389
|
+
cmd_run "${2:-basic}"
|
|
390
|
+
;;
|
|
391
|
+
clean)
|
|
392
|
+
cmd_clean
|
|
393
|
+
;;
|
|
394
|
+
help|--help|-h)
|
|
395
|
+
cmd_help
|
|
396
|
+
;;
|
|
397
|
+
*)
|
|
398
|
+
cmd_help
|
|
399
|
+
exit 1
|
|
400
|
+
;;
|
|
401
|
+
esac
|