@@ -25,6 +25,26 @@ using paddle::framework::CloseChannel;
25
25
using paddle::framework::details::Buffered;
26
26
using paddle::framework::details::UnBuffered;
27
27
28
+ void RecevingOrderEqualToSendingOrder (Channel<int > *ch) {
29
+ unsigned sum_send = 0 ;
30
+ std::thread t ([&]() {
31
+ for (int i = 0 ; i < 5 ; i++) {
32
+ EXPECT_EQ (ch->Send (&i), true );
33
+ sum_send += i;
34
+ }
35
+ });
36
+ for (int i = 0 ; i < 5 ; i++) {
37
+ int recv;
38
+ EXPECT_EQ (ch->Receive (&recv), true );
39
+ EXPECT_EQ (recv, i);
40
+ }
41
+
42
+ CloseChannel (ch);
43
+ t.join ();
44
+ EXPECT_EQ (sum_send, 10U );
45
+ delete ch;
46
+ }
47
+
28
48
TEST (Channel, MakeAndClose) {
29
49
using paddle::framework::details::Buffered;
30
50
using paddle::framework::details::UnBuffered;
@@ -137,9 +157,7 @@ TEST(Channel, ReceiveFromBufferedChannelReturnResidualValuesTest) {
137
157
138
158
for (size_t i = 0 ; i < buffer_size; ++i) {
139
159
EXPECT_EQ (ch->Receive (&out),
140
- false ); // after receiving residual values, return zeros.
141
- // Note: we cannot check EXPECT_EQ(out, 0), because C++ doesn't
142
- // define zero values like Go does.
160
+ false ); // receiving on closed channel should return false
143
161
}
144
162
delete ch;
145
163
}
@@ -166,25 +184,14 @@ TEST(Channel, ConcurrentSendNonConcurrentReceiveWithSufficientBufferSize) {
166
184
delete ch;
167
185
}
168
186
169
- TEST (Channel, SimpleUnbufferedChannelTest ) {
187
+ TEST (Channel, RecevingOrderEqualToSendingOrderWithUnBufferedChannel ) {
170
188
auto ch = MakeChannel<int >(0 );
171
- unsigned sum_send = 0 ;
172
- std::thread t ([&]() {
173
- for (int i = 0 ; i < 5 ; i++) {
174
- EXPECT_EQ (ch->Send (&i), true );
175
- sum_send += i;
176
- }
177
- });
178
- for (int i = 0 ; i < 5 ; i++) {
179
- int recv;
180
- EXPECT_EQ (ch->Receive (&recv), true );
181
- EXPECT_EQ (recv, i);
182
- }
189
+ RecevingOrderEqualToSendingOrder (ch);
190
+ }
183
191
184
- CloseChannel (ch);
185
- t.join ();
186
- EXPECT_EQ (sum_send, 10U );
187
- delete ch;
192
+ TEST (Channel, RecevingOrderEqualToSendingOrderWithBufferedChannel) {
193
+ auto ch = MakeChannel<int >(10 );
194
+ RecevingOrderEqualToSendingOrder (ch);
188
195
}
189
196
190
197
// This tests that closing a buffered channel also unblocks
0 commit comments