@@ -55,41 +55,39 @@ public async Task QoS1PubSubAsync()
55
55
var testPayload = new string ( /*lang=json,strict*/ "{\" interference\" : \" 1029384\" }" ) ;
56
56
var client = new HiveMQClient ( ) ;
57
57
var taskCompletionSource = new TaskCompletionSource < bool > ( ) ;
58
+ var messagesReceived = 0 ;
58
59
59
60
var connectResult = await client . ConnectAsync ( ) . ConfigureAwait ( false ) ;
60
61
Assert . True ( connectResult . ReasonCode == ConnAckReasonCode . Success ) ;
61
62
63
+ // Subscribe with QoS1
64
+ var subResult = await client . SubscribeAsync ( testTopic , QualityOfService . AtLeastOnceDelivery ) . ConfigureAwait ( false ) ;
65
+ Assert . NotEmpty ( subResult . Subscriptions ) ;
66
+ Assert . Equal ( SubAckReasonCode . GrantedQoS1 , subResult . Subscriptions [ 0 ] . SubscribeReasonCode ) ;
67
+
62
68
// Set the event handler for the message received event
63
69
client . OnMessageReceived += ( sender , args ) =>
64
70
{
71
+ messagesReceived ++ ;
65
72
Assert . Equal ( QualityOfService . AtLeastOnceDelivery , args . PublishMessage . QoS ) ;
66
73
Assert . Equal ( testTopic , args . PublishMessage . Topic ) ;
67
74
Assert . Equal ( testPayload , args . PublishMessage . PayloadAsString ) ;
68
75
69
- // Disconnect after receiving the message
70
- if ( sender != null )
71
- {
72
- var client = ( HiveMQClient ) sender ;
73
-
74
- var disconnect = Task . Run ( async ( ) =>
75
- {
76
- var disconnectResult = await client . DisconnectAsync ( ) . ConfigureAwait ( false ) ;
77
- Assert . True ( disconnectResult ) ;
78
- return disconnectResult ;
79
- } ) ;
80
- Assert . True ( disconnect . Result ) ;
76
+ if ( messagesReceived >= 5 ) {
77
+ taskCompletionSource . SetResult ( true ) ;
81
78
}
82
- taskCompletionSource . SetResult ( true ) ;
83
79
} ;
84
80
85
- // Subscribe with QoS1
86
- var subResult = await client . SubscribeAsync ( testTopic , QualityOfService . AtLeastOnceDelivery ) . ConfigureAwait ( false ) ;
87
- Assert . NotEmpty ( subResult . Subscriptions ) ;
88
- Assert . Equal ( SubAckReasonCode . GrantedQoS1 , subResult . Subscriptions [ 0 ] . SubscribeReasonCode ) ;
81
+ Client . Results . PublishResult result ;
89
82
90
- // Publish a QoS1 message
91
- var result = await client . PublishAsync ( testTopic , testPayload , QualityOfService . AtLeastOnceDelivery ) . ConfigureAwait ( false ) ;
92
- await taskCompletionSource . Task . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) . ConfigureAwait ( false ) ;
83
+ // Publish 10 messages
84
+ for ( var i = 0 ; i < 5 ; i ++ )
85
+ {
86
+ result = await client . PublishAsync ( testTopic , testPayload , QualityOfService . AtLeastOnceDelivery ) . ConfigureAwait ( false ) ;
87
+ Assert . IsType < Client . Results . PublishResult > ( result ) ;
88
+ Assert . NotNull ( result . QoS1ReasonCode ) ;
89
+ Assert . Equal ( PubAckReasonCode . Success , result ? . QoS1ReasonCode ) ;
90
+ }
93
91
94
92
var taskResult = await taskCompletionSource . Task . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) . ConfigureAwait ( false ) ;
95
93
Assert . True ( taskResult ) ;
@@ -105,37 +103,38 @@ public async Task QoS2PubSubAsync()
105
103
var taskCompletionSource = new TaskCompletionSource < bool > ( ) ;
106
104
var connectResult = await client . ConnectAsync ( ) . ConfigureAwait ( false ) ;
107
105
Assert . True ( connectResult . ReasonCode == ConnAckReasonCode . Success ) ;
106
+ var messagesReceived = 0 ;
107
+
108
+ // Subscribe with QoS2
109
+ var subResult = await client . SubscribeAsync ( testTopic , QualityOfService . ExactlyOnceDelivery ) . ConfigureAwait ( false ) ;
110
+ Assert . NotEmpty ( subResult . Subscriptions ) ;
111
+ Assert . Equal ( SubAckReasonCode . GrantedQoS2 , subResult . Subscriptions [ 0 ] . SubscribeReasonCode ) ;
108
112
109
113
// Set the event handler for the message received event
110
114
client . OnMessageReceived += ( sender , args ) =>
111
115
{
116
+ messagesReceived ++ ;
112
117
Assert . Equal ( QualityOfService . ExactlyOnceDelivery , args . PublishMessage . QoS ) ;
113
118
Assert . Equal ( testTopic , args . PublishMessage . Topic ) ;
114
119
Assert . Equal ( testPayload , args . PublishMessage . PayloadAsString ) ;
115
120
116
121
Assert . NotNull ( sender ) ;
117
122
118
- // Disconnect after receiving the message
119
- var client = ( HiveMQClient ) sender ;
120
-
121
- var disconnect = Task . Run ( async ( ) =>
122
- {
123
- var disconnectResult = await client . DisconnectAsync ( ) . ConfigureAwait ( false ) ;
124
- Assert . True ( disconnectResult ) ;
125
- return disconnectResult ;
126
- } ) ;
127
- Assert . True ( disconnect . Result ) ;
128
- taskCompletionSource . SetResult ( true ) ;
123
+ if ( messagesReceived >= 5 ) {
124
+ taskCompletionSource . SetResult ( true ) ;
125
+ }
129
126
} ;
130
127
131
- // Subscribe with QoS1
132
- var subResult = await client . SubscribeAsync ( testTopic , QualityOfService . ExactlyOnceDelivery ) . ConfigureAwait ( false ) ;
133
- Assert . NotEmpty ( subResult . Subscriptions ) ;
134
- Assert . Equal ( SubAckReasonCode . GrantedQoS2 , subResult . Subscriptions [ 0 ] . SubscribeReasonCode ) ;
128
+ Client . Results . PublishResult result ;
135
129
136
- // Publish a QoS1 message
137
- var result = await client . PublishAsync ( testTopic , testPayload , QualityOfService . ExactlyOnceDelivery ) . ConfigureAwait ( false ) ;
138
- await taskCompletionSource . Task . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) . ConfigureAwait ( false ) ;
130
+ // Publish 10 messages
131
+ for ( var i = 0 ; i < 5 ; i ++ )
132
+ {
133
+ result = await client . PublishAsync ( testTopic , testPayload , QualityOfService . ExactlyOnceDelivery ) . ConfigureAwait ( false ) ;
134
+ Assert . IsType < Client . Results . PublishResult > ( result ) ;
135
+ Assert . NotNull ( result . QoS2ReasonCode ) ;
136
+ Assert . Equal ( PubRecReasonCode . Success , result ? . QoS2ReasonCode ) ;
137
+ }
139
138
140
139
var taskResult = await taskCompletionSource . Task . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) . ConfigureAwait ( false ) ;
141
140
Assert . True ( taskResult ) ;
0 commit comments