summaryrefslogtreecommitdiff
path: root/comphelper/qa/unit/test_traceevent.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'comphelper/qa/unit/test_traceevent.cxx')
-rw-r--r--comphelper/qa/unit/test_traceevent.cxx136
1 files changed, 75 insertions, 61 deletions
diff --git a/comphelper/qa/unit/test_traceevent.cxx b/comphelper/qa/unit/test_traceevent.cxx
index 226171b0e097..e170e8aaeb18 100644
--- a/comphelper/qa/unit/test_traceevent.cxx
+++ b/comphelper/qa/unit/test_traceevent.cxx
@@ -31,87 +31,99 @@ namespace
{
void trace_event_test()
{
- // When we start recording is off and this will not generate any 'X' event when we leave the scope
- comphelper::ProfileZone aZone0("test0");
+ std::shared_ptr<comphelper::AsyncEvent> pAsync7Locked;
- // This will not generate any 'b' and 'e' events either
- auto pAsync1(std::make_shared<comphelper::AsyncEvent>("async1"));
-
- std::weak_ptr<comphelper::AsyncEvent> pAsync2;
{
- // No 'X' by this either
- comphelper::ProfileZone aZone1("block1");
+ // When we start recording is off and this will not generate any 'X' event when we leave the scope
+ comphelper::ProfileZone aZone0("test0");
- // Now we turn on recording
- comphelper::TraceEvent::startRecording();
+ // This will not generate any 'b' and 'e' events either
+ auto pAsync1(std::make_shared<comphelper::AsyncEvent>("async1"));
- // As this is nested in the parent that was created with recording turned off,
- // this will not generate any 'b' and 'e' events either even if recording is now on.
- pAsync2 = comphelper::AsyncEvent::createWithParent("async2in1", pAsync1);
- }
+ std::weak_ptr<comphelper::AsyncEvent> pAsync2;
+ {
+ // No 'X' by this either
+ comphelper::ProfileZone aZone1("block1");
- // This will generate an 'i' event for instant1
- comphelper::TraceEvent::addInstantEvent("instant1");
+ // Now we turn on recording
+ comphelper::TraceEvent::startRecording();
- std::shared_ptr<comphelper::AsyncEvent> pAsync25;
- {
- comphelper::ProfileZone aZone2("block2");
+ // As this is nested in the parent that was created with recording turned off,
+ // this will not generate any 'b' and 'e' events either even if recording is now on.
+ pAsync2 = comphelper::AsyncEvent::createWithParent("async2in1", pAsync1);
+ }
- // This does not generate any 'e' event as it was created when recording was off
- // And the nested async2 object will thus not generate anything either
- pAsync1.reset();
+ // This will generate an 'i' event for instant1
+ comphelper::TraceEvent::addInstantEvent("instant1");
- // This will generate 'b' event and an 'e' event when the pointer is reset or goes out of scope
- pAsync25 = std::make_shared<comphelper::AsyncEvent>("async2.5");
+ std::shared_ptr<comphelper::AsyncEvent> pAsync25;
+ {
+ comphelper::ProfileZone aZone2("block2");
- // Leaving this scope will generate an 'X' event for block2
- }
+ // This does not generate any 'e' event as it was created when recording was off
+ // And the nested async2 object will thus not generate anything either
+ pAsync1.reset();
- // Verify that the weak_ptr to pAsync2 has expired as its parent pAsync1 has been finished off
- CPPUNIT_ASSERT(pAsync2.expired());
+ // This will generate 'b' event and an 'e' event when the pointer is reset or goes out of scope
+ pAsync25 = std::make_shared<comphelper::AsyncEvent>("async2.5");
- // This will generate a 'b' event for async3
- auto pAsync3(std::make_shared<comphelper::AsyncEvent>("async3"));
+ // Leaving this scope will generate an 'X' event for block2
+ }
- std::weak_ptr<comphelper::AsyncEvent> pAsync4;
+ // Verify that the weak_ptr to pAsync2 has expired as its parent pAsync1 has been finished off
+ CPPUNIT_ASSERT(pAsync2.expired());
- {
- comphelper::ProfileZone aZone3("block3");
+ // This will generate a 'b' event for async3
+ auto pAsync3(std::make_shared<comphelper::AsyncEvent>("async3"));
- pAsync4 = comphelper::AsyncEvent::createWithParent("async4in3", pAsync3);
+ std::weak_ptr<comphelper::AsyncEvent> pAsync4;
- // Leaving this scope will generate an 'X' event for block3
- }
+ {
+ comphelper::ProfileZone aZone3("block3");
- // This will generate an 'e' event for async2.5
- pAsync25.reset();
+ pAsync4 = comphelper::AsyncEvent::createWithParent("async4in3", pAsync3);
- comphelper::ProfileZone aZone4("test2");
+ // Leaving this scope will generate an 'X' event for block3
+ }
- // This will generate an 'i' event for instant2"
- comphelper::TraceEvent::addInstantEvent("instant2");
+ // This will generate an 'e' event for async2.5
+ pAsync25.reset();
- std::weak_ptr<comphelper::AsyncEvent> pAsync5;
- {
- auto pAsync4Locked = pAsync4.lock();
- CPPUNIT_ASSERT(pAsync4Locked);
- // This will generate a 'b' event for async5in4
- pAsync5 = comphelper::AsyncEvent::createWithParent("async5in4", pAsync4Locked);
- }
+ comphelper::ProfileZone aZone4("test2");
+
+ // This will generate an 'i' event for instant2"
+ comphelper::TraceEvent::addInstantEvent("instant2");
+
+ std::weak_ptr<comphelper::AsyncEvent> pAsync5;
+ {
+ auto pAsync4Locked = pAsync4.lock();
+ CPPUNIT_ASSERT(pAsync4Locked);
+ // This will generate a 'b' event for async5in4
+ pAsync5 = comphelper::AsyncEvent::createWithParent("async5in4", pAsync4Locked);
+ }
- CPPUNIT_ASSERT(!pAsync5.expired());
+ CPPUNIT_ASSERT(!pAsync5.expired());
- // This will generate a 'b' event for async6in5
- std::weak_ptr<comphelper::AsyncEvent> pAsync6(
- comphelper::AsyncEvent::createWithParent("async6in5", pAsync5.lock()));
- CPPUNIT_ASSERT(!pAsync6.expired());
+ // This will generate a 'b' event for async6in5
+ std::weak_ptr<comphelper::AsyncEvent> pAsync6(
+ comphelper::AsyncEvent::createWithParent("async6in5", pAsync5.lock()));
+ CPPUNIT_ASSERT(!pAsync6.expired());
- // This will generate an 'e' event for async6in5 and async5in4
- pAsync5.lock()->finish();
+ // This will generate an 'e' event for async6in5 and async5in4
+ pAsync5.lock()->finish();
- CPPUNIT_ASSERT(pAsync6.expired());
+ pAsync7Locked = comphelper::AsyncEvent::createWithParent("async7in3", pAsync3).lock();
+
+ CPPUNIT_ASSERT(pAsync6.expired());
+
+ // Leaving this scope will generate 'X' events for test2 and a
+ // 'e' event for async4in3, async7in3, and async3. The
+ // pAsync7Locked pointer will now point to an AsyncEvent
+ // object that has already had its 'e' event generated.
+ }
- // Leaving this scope will generate 'X' events for test2 and a 'e' event for async4in3 and async3
+ // Nothing is generated from this
+ pAsync7Locked.reset();
}
}
@@ -124,7 +136,7 @@ void TestTraceEvent::test()
std::cerr << s << "\n";
}
- CPPUNIT_ASSERT_EQUAL(15, static_cast<int>(aEvents.size()));
+ CPPUNIT_ASSERT_EQUAL(17, static_cast<int>(aEvents.size()));
CPPUNIT_ASSERT(aEvents[0].startsWith("{\"name:\"instant1\",\"ph\":\"i\","));
CPPUNIT_ASSERT(aEvents[1].startsWith("{\"name\":\"async2.5\",\"ph\":\"b\",\"id\":1,"));
@@ -138,9 +150,11 @@ void TestTraceEvent::test()
CPPUNIT_ASSERT(aEvents[9].startsWith("{\"name\":\"async6in5\",\"ph\":\"b\",\"id\":2,"));
CPPUNIT_ASSERT(aEvents[10].startsWith("{\"name\":\"async6in5\",\"ph\":\"e\",\"id\":2,"));
CPPUNIT_ASSERT(aEvents[11].startsWith("{\"name\":\"async5in4\",\"ph\":\"e\",\"id\":2,"));
- CPPUNIT_ASSERT(aEvents[12].startsWith("{\"name\":\"test2\",\"ph\":\"X\""));
- CPPUNIT_ASSERT(aEvents[13].startsWith("{\"name\":\"async4in3\",\"ph\":\"e\",\"id\":2,"));
- CPPUNIT_ASSERT(aEvents[14].startsWith("{\"name\":\"async3\",\"ph\":\"e\",\"id\":2,"));
+ CPPUNIT_ASSERT(aEvents[12].startsWith("{\"name\":\"async7in3\",\"ph\":\"b\",\"id\":2,"));
+ CPPUNIT_ASSERT(aEvents[13].startsWith("{\"name\":\"test2\",\"ph\":\"X\""));
+ CPPUNIT_ASSERT(aEvents[14].startsWith("{\"name\":\"async4in3\",\"ph\":\"e\",\"id\":2,"));
+ CPPUNIT_ASSERT(aEvents[15].startsWith("{\"name\":\"async7in3\",\"ph\":\"e\",\"id\":2,"));
+ CPPUNIT_ASSERT(aEvents[16].startsWith("{\"name\":\"async3\",\"ph\":\"e\",\"id\":2,"));
}
CPPUNIT_TEST_SUITE_REGISTRATION(TestTraceEvent);