88#include < mutex>
99#include < thread>
1010
11- #include < userver/compiler/impl/tsan .hpp>
11+ #include < userver/engine/deadline .hpp>
1212#include < userver/engine/sleep.hpp>
1313#include < userver/utest/utest.hpp>
1414#include < userver/utils/algo.hpp>
@@ -161,16 +161,15 @@ UTEST(RcuMap, Snapshot) {
161161 EXPECT_EQ (2 , *second_snap.at (" b" ));
162162}
163163
164- #if !USERVER_IMPL_HAS_TSAN
165164UTEST_MT (RcuMap, ConcurrentUpdates, 4 ) {
166165 rcu::RcuMap<int , std::atomic<uint32_t >> map;
167166 std::array<engine::TaskWithResult<void >, 4 > workers;
168- std::atomic< bool > stop_flag{ false } ;
167+ const auto test_deadline = engine::Deadline::FromDuration ( std::chrono::milliseconds{ 100 }) ;
169168
170169 for (size_t i = 0 ; i < workers.size (); ++i) {
171- workers[i] = utils::Async (" writer" , [i, &map, &stop_flag ] {
170+ workers[i] = utils::Async (" writer" , [i, &map, &test_deadline ] {
172171 const uint32_t mask = 0xFFu << (i * 8 );
173- while (!stop_flag ) {
172+ while (!test_deadline. IsReached () ) {
174173 *map[i << 8 ] = -1 ;
175174 for (uint8_t v = 1 ; v != 0 ; ++v) {
176175 ASSERT_TRUE (map.Get ((i << 8 ) + v - 1 ));
@@ -191,8 +190,6 @@ UTEST_MT(RcuMap, ConcurrentUpdates, 4) {
191190 });
192191 }
193192
194- engine::SleepFor (std::chrono::milliseconds (100 ));
195- stop_flag = true ;
196193 for (auto & w : workers) {
197194 w.Get ();
198195 }
@@ -214,12 +211,12 @@ UTEST_MT(RcuMap, ConcurrentTryEmplace, 16) {
214211 tasks.reserve (kTaskCount );
215212 for (std::size_t i = 0 ; i < kTaskCount ; ++i) {
216213 tasks.push_back (engine::AsyncNoTracing ([&map, &insertions, i] {
217- auto key = std::string (20 + i / 2 , ' x' );
214+ auto key = std::string (20 + ( i / 2 ) , ' x' );
218215 auto res = map.TryEmplace (key, i);
219216 if (res.inserted ) {
220217 ++insertions;
221218 }
222- EXPECT_EQ (*res.value / 2 , i / 2 );
219+ EXPECT_EQ (( *res.value ) / 2 , i / 2 );
223220 }));
224221 }
225222 for (auto & task : tasks) {
@@ -228,7 +225,6 @@ UTEST_MT(RcuMap, ConcurrentTryEmplace, 16) {
228225 EXPECT_EQ (insertions, kTaskCount / 2 );
229226 }
230227}
231- #endif
232228
233229UTEST (RcuMap, IterStability) {
234230 rcu::RcuMap<int , int > map;
0 commit comments