lilydocs
HTTP APIWebSocketConsumer
Geliştirme5 dk okuma

Test etme

Gerçek Upgrade ve Lily v2 mesajlarıyla ilk uygulamayı doğrulayın; scope, policy ve kapanış davranışını ayrı test edin.

Derleme, macro ve extractor imzalarını doğrular. Gerçek socket testi ise Origin/subprotocol, wire envelope, ACK ilişkisi ve kapanış gibi davranışları birlikte kontrol eder. İkisi farklı kanıt sağlar.

İlk uygulamaya test ekleyin#

İlk uygulamanın kodu src/main.rs olarak kalır. Aşağıdakileri manifestte dev-dependency olarak ekleyin:

Cargo.toml
[dev-dependencies]
futures-util = "0.3"
serde_json = "1"
tokio = { version = "1", features = ["full"] }
tokio-util = "0.7"
tokio-tungstenite = "0.23.1"

Test dosyasını indirin, tests/first_application.rs olarak kaydedin. Test, controller'ı #[path = "../src/main.rs"] ile kendi test binary'sine dahil eder; bu kurulum ilk uygulamanın tek dosyalı düzeni içindir.

Terminal
cargo test --test first_application

Test boş loopback portu ayırır, app'i caller token ile başlatır, doğru Origin ve subprotocol ile bağlanır. Sırasıyla caller event'ini, eşleşen ACK'i ve eksik ACK ID hatasını doğrular; kapanıştan sonra active connection count'unun sıfır olduğunu kontrol eder.

Gerçek davranışı ölçün#

Socket okumasını ve kapanış beklemesini timeout ile sınırlayın. Testin yalnız “mesaj geldi” demesi yerine msg_type, route, ACK ID ve hata code'unu assert etmesini sağlayın. Port seçimiyle bind arasında yarış olabileceğinden retry yalnız bağlantı başlangıcındaki I/O durumu için bounded tutulur; policy hataları retry ile gizlenmez.

Test dosyasının ana doğrulamaları:

Beklenen sonuçlar
assert_eq!(output["msg_type"], expected_type);
if expected_type == "ack" {
    assert_eq!(output["ack_id"], "request-1");
}
if expected_type == "error" {
    assert_eq!(output["data"]["code"], "WS_MISSING_ACK_AUTHORITY");
}

Bu parça indirilen tam test içindedir. Test sadece framework API'sini mock ederek geçmez; loopback WebSocket bağlantısından gerçek envelope okur.

Uygulama test planı#

Alan Anlamlı senaryo
Handshake Yasak/missing Origin, yanlış subprotocol, bilinmeyen namespace
Identity Geçersiz credential, expired session, stale refresh
Scope Aynı mesajda paylaşım, sonraki mesajda yeni Scoped servis
Pipeline Guard reddi, reverse sıra, yarım normal exit cleanup'ı
Delivery Slow consumer, partial broadcast, Redis publish hatası
Shutdown Aktif action drain, bekleyen mesajların düşmesi, dış container sırası
Background worker Startup sonrası execute, start öncesi close, scoped cleanup ve cancel/join
Client feature profili Manuel client ile config zorunluluğu oluşmaması, single/factory seçiminin ayrı denenmesi

Uygulamanın gerçek DB/Redis/auth entegrasyonunu kendi test ortamında sınayın. Compile-pass örnek bir provider'ın doğruluğunu veya transaction davranışını tek başına kanıtlamaz.

İncelenen sürümdeki doğrulama#

Tarihsel kayıt — 14 Eylül 2026, fabed7e8b9ad140528e1254e91c023a7059b927d: Önceki kaynak incelemesinde 534 library testi geçti, bir Docker/Autobahn testi ignored kaldı. Seçili integration hedeflerinde beş test geçti, iki Docker OTLP testi ignored kaldı. Macro sözleşmeleri seri çalıştırmada 18 compile-fail ve dört compile-pass fixture üzerinden doğrulandı. İlk uygulamanın gerçek socket testi ayrıca geçti.

Bu sayılar önceki incelemenin kaydıdır; yeni registry örneklerinin derleme veya runtime sonucu olarak kullanılamaz. Yayımlanan sürümün gereksinimi Rust 1.96.1'dir. Canlı PostgreSQL, MongoDB ve Redis veri işlemleri ile Docker senaryoları bu site örneklerinin derleme kontrolünden ayrı doğrulanır. Partial-frame UTF-8 fail-fast sınırı referansta açıklanır. Yeni örnek veya framework değişiminde ilgili testleri yeniden çalıştırın.

Yayınlanan paketlerle doğrulama#

18 Eylül 2026 — crates.io 0.1.0, Rust 1.96.1: Dokümantasyondaki 33 indirilebilir Rust örneği (15 HTTP, 18 WebSocket) ve üç ayrı factory sözleşmesi, registry bağımlılıkları kullanan izole profillerde derleme kontrolünden geçti: 36/36. Framework için path, Git veya [patch] yönlendirmesi kullanılmadı. Türkçe örnekler derlendi; İngilizce dosyaların çalıştırılabilir kod eşliği site testleriyle ayrıca kontrol edilir.

Aynı gün dört WebSocket runtime testi de geçti:

Test Doğrulanan davranış
İndirilebilir ilk uygulama testi Gerçek loopback Upgrade, Emit, ilişkili ACK, eksik ACK yetkisi hatası ve kapanış
Facade DI Controller ve mesaj içinde Singleton/Scoped servis çözümü ve ACK yanıtı
Arka plan servisi Build sırasında hazırlama, start ile çalışma, cooperative iptal/sonlanmayı bekleme ve start öncesi close
Manuel client profili websocket-client-di ile [websocket_client] single config'i gerektirmeden server build/close

Bu sonuçlar canlı PostgreSQL/MongoDB/Redis işlemlerinin veya dış WebSocket client bağlantısının test edildiği anlamına gelmez. Manuel client testi profilin DI startup davranışını sınar; yeni background testi host sahipliğini ve shutdown sırasını kontrol eder. Yukarıdaki 14 Eylül framework test sayıları bu yeni sonuçlardan ayrıdır.

lilyrs 0.1.0 için başlangıç, DI, PostgreSQL, MongoDB, Redis, direct client, gateway ve worker örneklerini kendi dependency profilleriyle sınayın. Manifestlerde registry sürümleri kullanın; framework'e path, Git veya [patch] yönlendirmesi eklemek yayımlanmış paketin derlendiğini kanıtlamaz. Cargo.lock ve cargo tree -e features çözümlemenin hangi paket ve feature'ları kullandığını gösterir.

Single ve factory alternatifleri ayrı fixture/workspace'lerde derlenmelidir; --all-features bu modelde geçerli değildir. Direct client'ın websocket-client-di profiliyle server build'inin [websocket_client] istemediğini ve BaseGateway doğrudan bağımlılıklarının eksiksiz olduğunu ayrıca doğrulayın. Yeni worker örneğinde derleme yanında gerçek startup/cancellation/join davranışını da sınayın.

Dokümantasyon repository'sinin kökünde ilk uygulamanın registry derlemesini ve indirilebilir socket testini ayrı çalıştırabilirsiniz:

Terminal
python3 scripts/check-rust-examples.py --profile websocket-first-app
python3 scripts/check-rust-examples.py --profile websocket-first-application-test --mode smoke

Script Rust 1.96.1 ve izole registry manifestleri kullanır. Profile seçmeden çalıştırmak bütün dokümantasyon Rust örneklerini ve factory sözleşmelerini; --mode smoke ise seçilmiş HTTP/WS runtime kontrollerini çalıştırır. Çıktıda derleme, socket ve dış sistem testlerinin kapsamını ayrı değerlendirin.

Framework repository'sindeki yayın qualification sonuçları kendi release-candidate tarihi ve kapsamıyla bir kanıttır. Bu kayıtları güncellenen site örneklerinin yeniden çalıştırılmış testleriyle aynı saymayın. Canlı veritabanı/backplane, failure injection ve uzun süreli yük testleri ayrı entegrasyon ortamı gerektirir.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod