Skip to content

Commit bb71954

Browse files
committed
Check all events outside of scope, use correct check for total
Checks that the progress events were received in order of report creation and deletion outside of the scope that the events were created in, also checks for more information from the progress event data. `IsFinite()` from DebuggerEvents would return true if the total was not UINT64_MAX. Since we no longer use this to specify that an event has no total this has been changed to check that the total is not 1.
1 parent 9843ff7 commit bb71954

File tree

1 file changed

+44
-22
lines changed

1 file changed

+44
-22
lines changed

lldb/unittests/Core/ProgressReportTest.cpp

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ using namespace lldb;
2121
using namespace lldb_private;
2222

2323
class ProgressReportTest : public ::testing::Test {
24-
SubsystemRAII<FileSystem, HostInfo, PlatformMacOSX> subsystems;
25-
26-
// The debugger's initialization function can't be called with no arguments
27-
// so calling it using SubsystemRAII will cause the test build to fail as
28-
// SubsystemRAII will call Initialize with no arguments. As such we set it up
29-
// here the usual way.
30-
void SetUp() override { Debugger::Initialize(nullptr); }
31-
void TearDown() override { Debugger::Terminate(); }
24+
SubsystemRAII<FileSystem, HostInfo, PlatformMacOSX> subsystems;
25+
26+
// The debugger's initialization function can't be called with no arguments
27+
// so calling it using SubsystemRAII will cause the test build to fail as
28+
// SubsystemRAII will call Initialize with no arguments. As such we set it up
29+
// here the usual way.
30+
void SetUp() override { Debugger::Initialize(nullptr); }
31+
void TearDown() override { Debugger::Terminate(); }
3232
};
3333

3434
TEST_F(ProgressReportTest, TestReportCreation) {
3535
std::chrono::milliseconds timeout(100);
36+
const unsigned long long NO_TOTAL = 1;
3637

3738
// Set up the debugger, make sure that was done properly
3839
ArchSpec arch("x86_64-apple-macosx-");
@@ -51,7 +52,7 @@ TEST_F(ProgressReportTest, TestReportCreation) {
5152
listener_sp->StartListeningForEvents(&broadcaster,
5253
Debugger::eBroadcastBitProgress);
5354
EXPECT_TRUE(
54-
broadcaster.EventTypeHasListeners(Debugger::eBroadcastBitProgress));
55+
broadcaster.EventTypeHasListeners(Debugger::eBroadcastBitProgress));
5556

5657
EventSP event_sp;
5758
const ProgressEventData *data;
@@ -61,24 +62,39 @@ TEST_F(ProgressReportTest, TestReportCreation) {
6162
// started are broadcasted
6263
{
6364
Progress progress1("Progress report 1", "Starting report 1");
64-
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
65+
Progress progress2("Progress report 2", "Starting report 2");
66+
Progress progress3("Progress report 3", "Starting report 3");
67+
}
6568

66-
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
67-
ASSERT_EQ(data->GetDetails(), "Starting report 1");
69+
// Start popping events from the queue, they should have been recevied
70+
// in this order:
71+
// Starting progress: 1, 2, 3
72+
// Ending progress: 3, 2, 1
73+
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
74+
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
6875

69-
Progress progress2("Progress report 2", "Starting report 2");
70-
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
76+
ASSERT_EQ(data->GetDetails(), "Starting report 1");
77+
ASSERT_FALSE(data->IsFinite());
78+
ASSERT_FALSE(data->GetCompleted());
79+
ASSERT_EQ(data->GetTotal(), NO_TOTAL);
80+
ASSERT_EQ(data->GetMessage(), "Progress report 1: Starting report 1");
7181

72-
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
73-
ASSERT_EQ(data->GetDetails(), "Starting report 2");
82+
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
83+
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
7484

75-
Progress progress3("Progress report 3", "Starting report 3");
76-
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
77-
ASSERT_TRUE(event_sp);
85+
ASSERT_EQ(data->GetDetails(), "Starting report 2");
86+
ASSERT_FALSE(data->IsFinite());
87+
ASSERT_FALSE(data->GetCompleted());
88+
ASSERT_EQ(data->GetTotal(), NO_TOTAL);
89+
ASSERT_EQ(data->GetMessage(), "Progress report 2: Starting report 2");
7890

79-
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
80-
ASSERT_EQ(data->GetDetails(), "Starting report 3");
81-
}
91+
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
92+
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
93+
ASSERT_EQ(data->GetDetails(), "Starting report 3");
94+
ASSERT_FALSE(data->IsFinite());
95+
ASSERT_FALSE(data->GetCompleted());
96+
ASSERT_EQ(data->GetTotal(), NO_TOTAL);
97+
ASSERT_EQ(data->GetMessage(), "Progress report 3: Starting report 3");
8298

8399
// Progress report objects should be destroyed at this point so
84100
// get each report from the queue and check that they've been
@@ -88,16 +104,22 @@ TEST_F(ProgressReportTest, TestReportCreation) {
88104

89105
ASSERT_EQ(data->GetTitle(), "Progress report 3");
90106
ASSERT_TRUE(data->GetCompleted());
107+
ASSERT_FALSE(data->IsFinite());
108+
ASSERT_EQ(data->GetMessage(), "Progress report 3: Starting report 3");
91109

92110
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
93111
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
94112

95113
ASSERT_EQ(data->GetTitle(), "Progress report 2");
96114
ASSERT_TRUE(data->GetCompleted());
115+
ASSERT_FALSE(data->IsFinite());
116+
ASSERT_EQ(data->GetMessage(), "Progress report 2: Starting report 2");
97117

98118
EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout));
99119
data = ProgressEventData::GetEventDataFromEvent(event_sp.get());
100120

101121
ASSERT_EQ(data->GetTitle(), "Progress report 1");
102122
ASSERT_TRUE(data->GetCompleted());
123+
ASSERT_FALSE(data->IsFinite());
124+
ASSERT_EQ(data->GetMessage(), "Progress report 1: Starting report 1");
103125
}

0 commit comments

Comments
 (0)