MCPcopy Create free account
hub / github.com/cinder/Cinder / testThreadSafety

Method testThreadSafety

test/DebugTest/src/DebugTestApp.cpp:161–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161void DebugTestApp::testThreadSafety()
162{
163
164 log::manager()->restoreToDefault();
165 CI_LOG_I( "\n--- TESTING THREADS START----");
166 CI_LOG_I( "... this may take a while, don't fret." );
167
168 log::manager()->clearLoggers();
169
170 auto looper = [](std::string log) {
171 auto logger = log::makeLogger<log::LoggerFile>( log, false );
172 for( int i=0; i<500; ++i ) {
173 for( int j=0; j<500; ++j ) {
174 CI_LOG_D( i * j );
175 }
176 log::manager()->removeLogger( logger );
177 log::manager()->addLogger( logger );
178 }
179
180 // clean up our mess
181 auto path = logger->getFilePath();
182 log::manager()->removeLogger( logger );
183 logger.reset();
184 fs::remove( path );
185 };
186
187 std::thread t1( [looper] () { looper( "/tmp/thread1.log" ); } );
188 std::thread t2( [looper] () { looper( "/tmp/thread2.log" ); } );
189 std::thread t3( [looper] () { looper( "/tmp/thread3.log" ); } );
190
191 t1.join();
192 t2.join();
193 t3.join();
194
195 log::manager()->clearLoggers();
196 log::makeLogger<log::LoggerConsole>();
197
198 CI_LOG_I( "Threading didn't crash." );
199 CI_LOG_I( "\n--- TESTING THREADS END----\n\n");
200}
201
202void DebugTestApp::testAsserts()
203{

Callers

nothing calls this directly

Calls 8

managerFunction · 0.85
removeFunction · 0.85
restoreToDefaultMethod · 0.80
clearLoggersMethod · 0.80
removeLoggerMethod · 0.80
addLoggerMethod · 0.80
resetMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected