Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.FullKit.Tests.Communication.ResilientTransportStateTests 클래스 참조sealed

더 자세히 ...

클래스

class  ControllableTransport

Public 멤버 함수

async Task StateChanged_NotFiredWithDuplicateState_UnderConcurrentNotify ()
async Task DisposeAsync_IsIdempotent_UnderConcurrentCalls ()
async Task SendAsync_QueuesMessageWhenDisconnected_WithQueuePolicy ()

상세한 설명

Resilient Transport State Tests 기능과 관련 상태를 캡슐화합니다.

ResilientTransportStateTests.cs 파일의 17 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ DisposeAsync_IsIdempotent_UnderConcurrentCalls()

async Task Dreamine.FullKit.Tests.Communication.ResilientTransportStateTests.DisposeAsync_IsIdempotent_UnderConcurrentCalls ( )
inline

이 인스턴스가 소유한 리소스를 해제합니다.

반환값
Dispose Async Is Idempotent Under Concurrent Calls 작업에서 생성한 Task 결과입니다.

ResilientTransportStateTests.cs 파일의 74 번째 라인에서 정의되었습니다.

75 {
76 var inner = new ControllableTransport();
77 var policy = new ReconnectPolicy { Enabled = false };
78 var transport = new ResilientMessageTransport(inner, policy);
79
80 // Fire multiple concurrent DisposeAsync calls — only the first should take effect.
81 var tasks = Enumerable.Range(0, 8)
82 .Select(_ => transport.DisposeAsync().AsTask())
83 .ToArray();
84
85 await Task.WhenAll(tasks);
86
87 // Inner transport should have been disposed exactly once.
88 Assert.Equal(1, inner.DisposeCount);
89 }

◆ SendAsync_QueuesMessageWhenDisconnected_WithQueuePolicy()

async Task Dreamine.FullKit.Tests.Communication.ResilientTransportStateTests.SendAsync_QueuesMessageWhenDisconnected_WithQueuePolicy ( )
inline

Send Async Queues Message When Disconnected With Queue Policy 작업을 수행합니다.

반환값
Send Async Queues Message When Disconnected With Queue Policy 작업에서 생성한 Task 결과입니다.

ResilientTransportStateTests.cs 파일의 108 번째 라인에서 정의되었습니다.

109 {
110 var inner = new ControllableTransport();
111 var policy = new ReconnectPolicy { Enabled = false };
112 var queueOptions = new OutboundQueueOptions
113 {
114 DisconnectedSendPolicy = DisconnectedSendPolicy.Queue
115 };
116 await using var transport = new ResilientMessageTransport(inner, policy, queueOptions);
117
118 var msg = new MessageEnvelope { Route = "test.route", Name = "hello" };
119 await transport.SendAsync(msg);
120
121 Assert.Equal(1, transport.QueuedMessageCount);
122 }

◆ StateChanged_NotFiredWithDuplicateState_UnderConcurrentNotify()

async Task Dreamine.FullKit.Tests.Communication.ResilientTransportStateTests.StateChanged_NotFiredWithDuplicateState_UnderConcurrentNotify ( )
inline

State Changed Not Fired With Duplicate State Under Concurrent Notify 작업을 수행합니다.

반환값
State Changed Not Fired With Duplicate State Under Concurrent Notify 작업에서 생성한 Task 결과입니다.

ResilientTransportStateTests.cs 파일의 36 번째 라인에서 정의되었습니다.

37 {
38 var inner = new ControllableTransport();
39 var policy = new ReconnectPolicy { Enabled = false };
40 await using var transport = new ResilientMessageTransport(inner, policy);
41
42 var states = new System.Collections.Concurrent.ConcurrentBag<ConnectionState>();
43 transport.StateChanged += (_, s) => states.Add(s);
44
45 // Trigger connect so state transitions to Connected, then disconnect.
46 await transport.ConnectAsync();
47 await transport.DisconnectAsync();
48
49 // All observed transitions must be real changes (no duplicate consecutive states).
50 var list = states.ToArray();
51 for (int i = 1; i < list.Length; i++)
52 {
53 Assert.NotEqual(list[i - 1], list[i]);
54 }
55 }

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: