This commit is contained in:
2026-02-19 18:41:39 +07:00
parent e7c5e5f77f
commit 7dc7ab67e4
7 changed files with 1813 additions and 229 deletions

View File

@@ -83,7 +83,7 @@ function create_sample_data()
)
# Table data (DataFrame - small - direct transport)
table_data = DataFrame(
table_data_small = DataFrame(
id = 1:10,
message = ["msg_$i" for i in 1:10],
sender = ["sender_$i" for i in 1:10],
@@ -91,6 +91,16 @@ function create_sample_data()
priority = rand(1:3, 10)
)
# Table data (DataFrame - large - link transport)
# ~1.5MB of data (150,000 rows) - should trigger link transport
table_data_large = DataFrame(
id = 1:150_000,
message = ["msg_$i" for i in 1:150_000],
sender = ["sender_$i" for i in 1:150_000],
timestamp = [string(Dates.now()) for i in 1:150_000],
priority = rand(1:3, 150_000)
)
# Image data (small binary - direct transport)
# Create a simple 10x10 pixel PNG-like data (128 bytes header + 100 pixels = 112 bytes)
# Using simple RGB data (10*10*3 = 300 bytes of pixel data)
@@ -104,25 +114,52 @@ function create_sample_data()
push!(image_data, 0xFF, 0x00, 0x00) # Red pixel
end
# Image data (large - link transport)
# Create a larger image (~1.5MB) to test link transport
large_image_width = 500
large_image_height = 1000
large_image_data = UInt8[]
# PNG header (simplified for 500x1000)
push!(large_image_data, 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A)
# RGB data (500*1000*3 = 1,500,000 bytes)
for i in 1:large_image_width*large_image_height
push!(large_image_data, rand(1:255), rand(1:255), rand(1:255)) # Random color pixels
end
# Audio data (small binary - direct transport)
# Create a simple audio-like data (100 bytes)
audio_data = UInt8[rand(1:255) for _ in 1:100]
# Audio data (large - link transport)
# ~1.5MB of audio-like data
large_audio_data = UInt8[rand(1:255) for _ in 1:1_500_000]
# Video data (small binary - direct transport)
# Create a simple video-like data (150 bytes)
video_data = UInt8[rand(1:255) for _ in 1:150]
# Video data (large - link transport)
# ~1.5MB of video-like data
large_video_data = UInt8[rand(1:255) for _ in 1:1_500_000]
# Binary data (small - direct transport)
binary_data = UInt8[rand(1:255) for _ in 1:200]
# Binary data (large - link transport)
# ~1.5MB of binary data
large_binary_data = UInt8[rand(1:255) for _ in 1:1_500_000]
return (
text_data,
dict_data,
table_data,
table_data_small,
table_data_large,
image_data,
large_image_data,
audio_data,
large_audio_data,
video_data,
binary_data
large_video_data,
binary_data,
large_binary_data
)
end
@@ -130,17 +167,22 @@ end
# Sender: Send mixed content via smartsend
function test_mix_send()
# Create sample data
(text_data, dict_data, table_data, image_data, audio_data, video_data, binary_data) = create_sample_data()
(text_data, dict_data, table_data_small, table_data_large, image_data, large_image_data, audio_data, large_audio_data, video_data, large_video_data, binary_data, large_binary_data) = create_sample_data()
# Create payloads list - mixed content with different types
# Create payloads list - mixed content with both small and large data
# Small data uses direct transport, large data uses link transport
payloads = [
# Small data (direct transport) - text, dictionary, small table
("chat_text", text_data, "text"),
("chat_json", dict_data, "dictionary"),
("chat_table", table_data, "table"),
("user_image", image_data, "image"),
("audio_clip", audio_data, "audio"),
("video_clip", video_data, "video"),
("binary_file", binary_data, "binary")
("chat_table_small", table_data_small, "table"),
# Large data (link transport) - large table, large image, large audio, large video, large binary
("chat_table_large", table_data_large, "table"),
("user_image_large", large_image_data, "image"),
("audio_clip_large", large_audio_data, "audio"),
("video_clip_large", large_video_data, "video"),
("binary_file_large", large_binary_data, "binary")
]
# Use smartsend with mixed content

View File

@@ -193,6 +193,21 @@ function test_mix_receive()
log_trace("Audio payloads: $audio_count")
log_trace("Video payloads: $video_count")
log_trace("Binary payloads: $binary_count")
# Print transport type info for each payload if available
println("\n=== Payload Details ===")
for (dataname, data, data_type) in result
if data_type in ["image", "audio", "video", "binary"]
log_trace("$dataname: $(length(data)) bytes (binary)")
elseif data_type == "table"
data = DataFrame(data)
log_trace("$dataname: $(size(data, 1)) rows x $(size(data, 2)) columns (DataFrame)")
elseif data_type == "dictionary"
log_trace("$dataname: $(length(JSON.json(data))) bytes (Dict)")
elseif data_type == "text"
log_trace("$dataname: $(length(data)) characters (String)")
end
end
end
# Keep listening for 2 minutes