Files
poimen-memory/tests/quick_queue_test.rs
T
rock cd3d00048a feat: M8.2 Gateway Queue Adapter for SQS via api.riotpiao.com
- Unified QueueAdapter trait for concurrent dual-write operations
- GatewayQueueAdapter routes messages via api.riotpiao.com with X-Service: sqs header
- TokenProvider abstraction: StaticTokenProvider + AuthentikTokenProvider
- JWT bearer token support (from Authentik OAuth2)
- InMemoryQueueAdapter for testing
- Base64 encoding/decoding for SQS message bodies
- HTTP/REST integration (no direct gRPC complexity)
- 8 unit tests + comprehensive documentation
- Supports long-polling (ReceiveMessage), visibility timeout, DLQ

Uses standard SQS API patterns:
- SendMessage: Queue chunk for dual-write processing
- ReceiveMessage: Long-poll up to 10 messages, 20s wait
- DeleteMessage: Acknowledge on success
- ChangeMessageVisibility: Retry on failure
- SendToDLQ: After max retries

Files:
- crates/mem-cli/src/queue_adapter.rs (310 LOC)
- crates/mem-cli/src/gateway_queue_adapter.rs (530 LOC)
- tests/it_gateway_queue_adapter.rs (110 LOC)
- docs/M8.2-GATEWAY_QUEUE_ADAPTER.md (400 LOC)
2026-08-28 13:11:56 -07:00

60 lines
1.7 KiB
Rust

//! Quick test for gateway queue adapter
//! Tests only the queue_adapter and gateway_queue_adapter modules
#[test]
fn test_queue_adapter_trait_exists() {
// Just verify the trait is defined and can be used
use mem_cli::queue_adapter::QueueAdapter;
let _ = std::any::type_name::<dyn QueueAdapter>();
assert!(true);
}
#[test]
fn test_static_token_provider() {
use mem_cli::gateway_queue_adapter::StaticTokenProvider;
use mem_cli::gateway_queue_adapter::TokenProvider;
let provider = StaticTokenProvider::new("test-token-xyz".to_string());
assert_eq!(provider.token().unwrap(), "test-token-xyz");
}
#[test]
fn test_gateway_adapter_construction() {
use mem_cli::gateway_queue_adapter::GatewayQueueAdapter;
let adapter = GatewayQueueAdapter::with_static_token(
"https://api.riotpiao.com".to_string(),
"test-jwt".to_string(),
);
assert_eq!(adapter.queue_name("myproj"), "poimen-chunks-myproj");
}
#[test]
fn test_base64_helpers() {
let original = "hello world";
let encoded = base64::encode(original.as_bytes());
let decoded = String::from_utf8(base64::decode(encoded.as_bytes()).unwrap()).unwrap();
assert_eq!(original, decoded);
}
#[test]
fn test_queue_message_creation() {
use mem_cli::queue_adapter::QueueMessage;
use uuid::Uuid;
let msg = QueueMessage {
message_id: "msg-123".to_string(),
chunk_id: Uuid::new_v4(),
body: "test".to_string(),
receive_count: 0,
receipt_handle: "handle-123".to_string(),
project: "test".to_string(),
attributes: std::collections::HashMap::new(),
};
assert_eq!(msg.message_id, "msg-123");
assert_eq!(msg.receive_count, 0);
}