Skip to content

Commit 6e7fee0

Browse files
authored
Add unit tests for ChannelHolder (#8510)
1 parent bc0f04d commit 6e7fee0

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

paddle/fluid/framework/channel.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,7 @@ class ChannelHolder {
100100
virtual ~Placeholder() {}
101101
virtual const std::type_index Type() const = 0;
102102
virtual void* Ptr() const = 0;
103-
virtual void Close() const = 0;
104-
std::type_info type_;
103+
virtual void Close() = 0;
105104
};
106105

107106
template <typename T>
@@ -116,7 +115,7 @@ class ChannelHolder {
116115
if (channel_) channel_->Close();
117116
}
118117

119-
std::unique_ptr<Channel<T>*> channel_;
118+
std::unique_ptr<Channel<T>> channel_;
120119
const std::type_index type_;
121120
};
122121

paddle/fluid/framework/channel_test.cc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ limitations under the License. */
2020
#include "gtest/gtest.h"
2121

2222
using paddle::framework::Channel;
23+
using paddle::framework::ChannelHolder;
2324
using paddle::framework::MakeChannel;
2425
using paddle::framework::CloseChannel;
2526
using paddle::framework::details::Buffered;
@@ -508,3 +509,36 @@ TEST(Channel, UnbufferedChannelDestroyUnblocksSendersTest) {
508509
auto ch = MakeChannel<int>(0);
509510
ChannelDestroyUnblockSenders(ch);
510511
}
512+
513+
void ChannelHolderSendReceive(ChannelHolder *ch) {
514+
unsigned sum_send = 0;
515+
std::thread t([&]() {
516+
for (int i = 0; i < 5; i++) {
517+
EXPECT_EQ(ch->Send(&i), true);
518+
sum_send += i;
519+
}
520+
});
521+
for (int i = 0; i < 5; i++) {
522+
int recv;
523+
EXPECT_EQ(ch->Receive(&recv), true);
524+
EXPECT_EQ(recv, i);
525+
}
526+
527+
ch->close();
528+
t.join();
529+
EXPECT_EQ(sum_send, 10U);
530+
}
531+
532+
TEST(ChannelHolder, ChannelHolderBufferedSendReceiveTest) {
533+
ChannelHolder *ch = new ChannelHolder();
534+
ch->Reset<int>(10);
535+
ChannelHolderSendReceive(ch);
536+
delete ch;
537+
}
538+
539+
TEST(ChannelHolder, ChannelHolderUnBufferedSendReceiveTest) {
540+
ChannelHolder *ch = new ChannelHolder();
541+
ch->Reset<int>(0);
542+
ChannelHolderSendReceive(ch);
543+
delete ch;
544+
}

0 commit comments

Comments
 (0)