@@ -151,6 +151,50 @@ void test_sr(char const * name, int s_cnt, int r_cnt) {
151151
152152} // internal-linkage
153153
154+ TEST (IPC, clear) {
155+ {
156+ chan<relat::single, relat::single, trans::unicast> c{" ssu" };
157+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__AC_CONN__ssu" , true ));
158+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_COND_" , true ));
159+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_LOCK_" , true ));
160+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_COND_" , true ));
161+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_LOCK_" , true ));
162+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_COND_" , true ));
163+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_LOCK_" , true ));
164+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__QU_CONN__ssu__64__16" , true ));
165+ c.clear ();
166+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__AC_CONN__ssu" , false ));
167+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_COND_" , false ));
168+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_LOCK_" , false ));
169+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_COND_" , false ));
170+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_LOCK_" , false ));
171+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_COND_" , false ));
172+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_LOCK_" , false ));
173+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__QU_CONN__ssu__64__16" , false ));
174+ }
175+ {
176+ chan<relat::single, relat::single, trans::unicast> c{" ssu" };
177+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__AC_CONN__ssu" , true ));
178+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_COND_" , true ));
179+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_LOCK_" , true ));
180+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_COND_" , true ));
181+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_LOCK_" , true ));
182+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_COND_" , true ));
183+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_LOCK_" , true ));
184+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__QU_CONN__ssu__64__16" , true ));
185+ chan<relat::single, relat::single, trans::unicast>::clear_storage (" ssu" );
186+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__AC_CONN__ssu" , false ));
187+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_COND_" , false ));
188+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__CC_CONN__ssu_WAITER_LOCK_" , false ));
189+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_COND_" , false ));
190+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__RD_CONN__ssu_WAITER_LOCK_" , false ));
191+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_COND_" , false ));
192+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__WT_CONN__ssu_WAITER_LOCK_" , false ));
193+ EXPECT_TRUE (ipc_ut::expect_exist (" __IPC_SHM__QU_CONN__ssu__64__16" , false ));
194+ c.release (); // Call this interface to prevent destruction-time exceptions.
195+ }
196+ }
197+
154198TEST (IPC, basic_ssu) {
155199 test_basic<relat::single, relat::single, trans::unicast >(" ssu" );
156200}
0 commit comments