84 lines
2.6 KiB
Julia
84 lines
2.6 KiB
Julia
#!/usr/bin/env julia
|
|
# Test script for large payload testing using binary transport
|
|
# Tests sending a large file (> 1MB) via smartsend with binary type
|
|
# Updated to match NATSBridge.jl API
|
|
|
|
using NATS, JSON, UUIDs, Dates, PrettyPrinting, DataFrames, Arrow, HTTP
|
|
|
|
|
|
# workdir =
|
|
|
|
# Include the bridge module
|
|
include("../src/NATSBridge.jl")
|
|
using .NATSBridge
|
|
|
|
# Configuration
|
|
const SUBJECT = "/NATSBridge_test"
|
|
const NATS_URL = "nats.yiem.cc"
|
|
const FILESERVER_URL = "http://192.168.88.104:8080"
|
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------------------ #
|
|
# test file transfer #
|
|
# ------------------------------------------------------------------------------------------------ #
|
|
|
|
# Helper: Log with correlation ID
|
|
function log_trace(message)
|
|
timestamp = Dates.now()
|
|
println("[$timestamp] $message")
|
|
end
|
|
|
|
# Receiver: Listen for messages and verify large payload handling
|
|
function test_large_binary_receive()
|
|
conn = NATS.connect(NATS_URL)
|
|
NATS.subscribe(conn, SUBJECT) do msg
|
|
log_trace("Received message on $(msg.subject)")
|
|
|
|
# Use NATSBridge.smartreceive to handle the data
|
|
# API: smartreceive(msg, download_handler; max_retries, base_delay, max_delay)
|
|
result = NATSBridge.smartreceive(
|
|
msg;
|
|
max_retries = 5,
|
|
base_delay = 100,
|
|
max_delay = 5000
|
|
)
|
|
|
|
# Result is a list of (dataname, data) tuples
|
|
for (dataname, data, data_type) in result
|
|
# Check transport type from the envelope
|
|
# For link transport, data is the URL string
|
|
# For direct transport, data is the actual payload bytes
|
|
|
|
if isa(data, Vector{UInt8})
|
|
file_size = length(data)
|
|
log_trace("Received $(file_size) bytes of binary data for '$dataname' of type $data_type")
|
|
|
|
# Save received data to a test file
|
|
output_path = "./new_$dataname"
|
|
write(output_path, data)
|
|
log_trace("Saved received data to $output_path")
|
|
else
|
|
log_trace("Received $(file_size) bytes of binary data for '$dataname' of type $data_type")
|
|
end
|
|
end
|
|
end
|
|
|
|
# Keep listening for 10 seconds
|
|
sleep(120)
|
|
NATS.drain(conn)
|
|
end
|
|
|
|
|
|
# Run the test
|
|
println("Starting large binary payload test...")
|
|
|
|
# # Run sender first
|
|
# println("start smartsend")
|
|
# test_large_binary_send()
|
|
|
|
# Run receiver
|
|
println("testing smartreceive")
|
|
test_large_binary_receive()
|
|
|
|
println("Test completed.") |