@@ -18,8 +18,9 @@ using namespace ipc;
18
18
19
19
namespace {
20
20
21
- constexpr int LoopCount = 10000 ;
22
- constexpr int MultiMax = 8 ;
21
+ constexpr int LoopCount = 10000 ;
22
+ constexpr int MultiMax = 8 ;
23
+ constexpr int TestBuffMax = 65536 ;
23
24
24
25
struct msg_head {
25
26
int id_;
@@ -28,7 +29,7 @@ struct msg_head {
28
29
class rand_buf : public buffer {
29
30
public:
30
31
rand_buf () {
31
- int size = capo::random<>{sizeof (msg_head), 65536 }();
32
+ int size = capo::random<>{sizeof (msg_head), TestBuffMax }();
32
33
*this = buffer (new char [size], size, [](void * p, std::size_t ) {
33
34
delete [] static_cast <char *>(p);
34
35
});
@@ -98,6 +99,22 @@ class data_set {
98
99
}
99
100
} const data_set__;
100
101
102
+ #define IPC_ASSERT_TRUE (condition ) \
103
+ do { \
104
+ bool check = !!(condition); \
105
+ GTEST_TEST_BOOLEAN_ (check, #condition, false , true , \
106
+ GTEST_NONFATAL_FAILURE_); \
107
+ if (!check) return ; \
108
+ } while (0 )
109
+
110
+ #define IPC_ASSERT_FALSE (condition ) \
111
+ do { \
112
+ bool check = !!(condition); \
113
+ GTEST_TEST_BOOLEAN_ (!check, #condition, true , false , \
114
+ GTEST_NONFATAL_FAILURE_); \
115
+ if (check) return ; \
116
+ } while (0 )
117
+
101
118
template <relat Rp, relat Rc, trans Ts, typename Que = chan<Rp, Rc, Ts>>
102
119
void test_sr (char const * name, int s_cnt, int r_cnt) {
103
120
ipc_ut::sender ().start (static_cast <std::size_t >(s_cnt));
@@ -109,10 +126,10 @@ void test_sr(char const * name, int s_cnt, int r_cnt) {
109
126
for (int k = 0 ; k < s_cnt; ++k) {
110
127
ipc_ut::sender () << [name, &sw, r_cnt, k] {
111
128
Que que { name, ipc::sender };
112
- ASSERT_TRUE (que.wait_for_recv (r_cnt));
129
+ IPC_ASSERT_TRUE (que.wait_for_recv (r_cnt));
113
130
sw.start ();
114
131
for (int i = 0 ; i < (int )data_set__.get ().size (); ++i) {
115
- ASSERT_TRUE (que.send (data_set__.get ()[i]));
132
+ IPC_ASSERT_TRUE (que.send (data_set__.get ()[i]));
116
133
}
117
134
};
118
135
}
@@ -122,25 +139,25 @@ void test_sr(char const * name, int s_cnt, int r_cnt) {
122
139
Que que { name, ipc::receiver };
123
140
for (;;) {
124
141
rand_buf got { que.recv () };
125
- ASSERT_FALSE (got.empty ());
142
+ IPC_ASSERT_FALSE (got.empty ());
126
143
int i = got.get_id ();
127
144
if (i == -1 ) {
128
145
return ;
129
146
}
130
- ASSERT_TRUE ((i >= 0 ) && (i < (int )data_set__.get ().size ()));
147
+ IPC_ASSERT_TRUE ((i >= 0 ) && (i < (int )data_set__.get ().size ()));
131
148
auto const &data_set = data_set__.get ()[i];
132
149
if (data_set != got) {
133
150
printf (" data_set__.get()[%d] != got, size = %zd/%zd\n " ,
134
151
i, data_set.size (), got.size ());
135
- ASSERT_TRUE (false );
152
+ IPC_ASSERT_TRUE (false );
136
153
}
137
154
}
138
155
};
139
156
}
140
157
141
158
ipc_ut::sender ().wait_for_done ();
142
159
Que que { name };
143
- ASSERT_TRUE (que.wait_for_recv (r_cnt));
160
+ IPC_ASSERT_TRUE (que.wait_for_recv (r_cnt));
144
161
for (int k = 0 ; k < r_cnt; ++k) {
145
162
que.send (rand_buf{msg_head{-1 }});
146
163
}
0 commit comments