Skip to content

Commit 7ef0e9e

Browse files
committedAug 7, 2018
Better debugging for task manager tests
1 parent c905352 commit 7ef0e9e

File tree

1 file changed

+100
-40
lines changed

1 file changed

+100
-40
lines changed
 

‎tests/src/core/testqgstaskmanager.cpp

Lines changed: 100 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,20 @@ class TestTask : public QgsTask
2828

2929
public:
3030

31-
TestTask( const QString &desc = QString() ) : QgsTask( desc ) {}
32-
TestTask( const QString &desc, const QgsTask::Flags &flags ) : QgsTask( desc, flags ) {}
31+
TestTask( const QString &desc = QString() ) : QgsTask( desc )
32+
{
33+
qDebug() << "created task " << desc;
34+
}
35+
36+
TestTask( const QString &desc, const QgsTask::Flags &flags ) : QgsTask( desc, flags )
37+
{
38+
qDebug() << "created task " << desc;
39+
}
40+
41+
~TestTask() override
42+
{
43+
qDebug() << "deleting task " << description();
44+
}
3345

3446
void emitProgressChanged( double progress ) { setProgress( progress ); }
3547
void emitTaskStopped() { }
@@ -53,7 +65,15 @@ class ProgressReportingTask : public QgsTask
5365

5466
public:
5567

56-
ProgressReportingTask( const QString &desc = QString() ) : QgsTask( desc ) {}
68+
ProgressReportingTask( const QString &desc = QString() ) : QgsTask( desc )
69+
{
70+
qDebug() << "created task " << desc;
71+
}
72+
73+
~ProgressReportingTask() override
74+
{
75+
qDebug() << "deleting task " << description();
76+
}
5777

5878
void emitProgressChanged( double progress ) { setProgress( progress ); }
5979

@@ -80,6 +100,8 @@ class TestTerminationTask : public TestTask
80100

81101
public:
82102

103+
TestTerminationTask( const QString &desc = QString() ) : TestTask( desc ) {}
104+
83105
~TestTerminationTask() override
84106
{
85107
//make sure task has been terminated by manager prior to deletion
@@ -102,11 +124,17 @@ class CancelableTask : public QgsTask
102124

103125
public:
104126

127+
CancelableTask( const QString &desc = QString() ) : QgsTask( desc )
128+
{
129+
qDebug() << "created task " << desc;
130+
}
131+
105132
~CancelableTask() override
106133
{
134+
qDebug() << "deleting task " << description();
135+
107136
int i = 1;
108137
i++;
109-
110138
}
111139

112140
protected:
@@ -123,6 +151,18 @@ class SuccessTask : public QgsTask
123151
{
124152
Q_OBJECT
125153

154+
public:
155+
156+
SuccessTask( const QString &desc = QString() ) : QgsTask( desc )
157+
{
158+
qDebug() << "created task " << desc;
159+
}
160+
161+
~SuccessTask() override
162+
{
163+
qDebug() << "deleting task " << description();
164+
}
165+
126166
protected:
127167

128168
bool run() override
@@ -135,6 +175,18 @@ class FailTask : public QgsTask
135175
{
136176
Q_OBJECT
137177

178+
public:
179+
180+
FailTask( const QString &desc = QString() ) : QgsTask( desc )
181+
{
182+
qDebug() << "created task " << desc;
183+
}
184+
185+
~FailTask() override
186+
{
187+
qDebug() << "deleting task " << description();
188+
}
189+
138190
protected:
139191

140192
bool run() override
@@ -150,10 +202,18 @@ class FinishTask : public QgsTask
150202

151203
public:
152204

153-
FinishTask( bool *result )
154-
: desiredResult( false )
205+
FinishTask( bool *result, const QString &desc )
206+
: QgsTask( desc )
207+
, desiredResult( false )
155208
, resultObtained( result )
156-
{}
209+
{
210+
qDebug() << "created task " << desc;
211+
}
212+
213+
~FinishTask() override
214+
{
215+
qDebug() << "deleting task " << description();
216+
}
157217

158218
bool desiredResult;
159219
bool *resultObtained = nullptr;
@@ -235,9 +295,9 @@ void TestQgsTaskManager::cleanup()
235295

236296
void TestQgsTaskManager::task()
237297
{
238-
std::unique_ptr< TestTask > task( new TestTask( QStringLiteral( "desc" ) ) );
298+
std::unique_ptr< TestTask > task( new TestTask( QStringLiteral( "test_task_desc" ) ) );
239299
QCOMPARE( task->status(), QgsTask::Queued );
240-
QCOMPARE( task->description(), QString( "desc" ) );
300+
QCOMPARE( task->description(), QStringLiteral( "test_task_desc" ) );
241301
QVERIFY( !task->isActive() );
242302
QVERIFY( task->canCancel() );
243303
QVERIFY( task->flags() & QgsTask::CanCancel );
@@ -253,7 +313,7 @@ void TestQgsTaskManager::task()
253313
QCOMPARE( static_cast< QgsTask::TaskStatus >( statusSpy.at( 1 ).at( 0 ).toInt() ), QgsTask::Complete );
254314

255315
//test that calling stopped sets correct state
256-
std::unique_ptr< FailTask > failTask( new FailTask() );
316+
std::unique_ptr< FailTask > failTask( new FailTask( QStringLiteral( "task_fail" ) ) );
257317
QSignalSpy stoppedSpy( failTask.get(), &QgsTask::taskTerminated );
258318
QSignalSpy statusSpy2( failTask.get(), &QgsTask::statusChanged );
259319
failTask->start();
@@ -264,7 +324,7 @@ void TestQgsTaskManager::task()
264324
QCOMPARE( static_cast< QgsTask::TaskStatus >( statusSpy2.last().at( 0 ).toInt() ), QgsTask::Terminated );
265325

266326
//test that calling completed sets correct state
267-
task.reset( new TestTask() );
327+
task.reset( new TestTask( QStringLiteral( "test_task_3" ) ) );
268328
QSignalSpy completeSpy( task.get(), &QgsTask::taskCompleted );
269329
QSignalSpy statusSpy3( task.get(), &QgsTask::statusChanged );
270330
task->start();
@@ -275,26 +335,26 @@ void TestQgsTaskManager::task()
275335
QCOMPARE( static_cast< QgsTask::TaskStatus >( statusSpy3.last().at( 0 ).toInt() ), QgsTask::Complete );
276336

277337
// test that canceling tasks which have not begin immediately ends them
278-
task.reset( new TestTask() );
338+
task.reset( new TestTask( QStringLiteral( "test_task_4" ) ) );
279339
task->cancel(); // Queued task
280340
QCOMPARE( task->status(), QgsTask::Terminated );
281-
task.reset( new TestTask() );
341+
task.reset( new TestTask( QStringLiteral( "test_task_5" ) ) );
282342
task->hold(); // OnHold task
283343
task->cancel();
284344
QCOMPARE( task->status(), QgsTask::Terminated );
285345

286346
// test flags
287-
task.reset( new TestTask( QStringLiteral( "desc" ), nullptr ) );
347+
task.reset( new TestTask( QStringLiteral( "test_task_6" ), nullptr ) );
288348
QVERIFY( !task->canCancel() );
289349
QVERIFY( !( task->flags() & QgsTask::CanCancel ) );
290-
task.reset( new TestTask( QStringLiteral( "desc" ), QgsTask::CanCancel ) );
350+
task.reset( new TestTask( QStringLiteral( "test_task_7" ), QgsTask::CanCancel ) );
291351
QVERIFY( task->canCancel() );
292352
QVERIFY( task->flags() & QgsTask::CanCancel );
293353
}
294354

295355
void TestQgsTaskManager::taskResult()
296356
{
297-
std::unique_ptr< QgsTask > task( new SuccessTask() );
357+
std::unique_ptr< QgsTask > task( new SuccessTask( QStringLiteral( "task_result_1" ) ) );
298358
QCOMPARE( task->status(), QgsTask::Queued );
299359
QSignalSpy statusSpy( task.get(), &QgsTask::statusChanged );
300360

@@ -304,7 +364,7 @@ void TestQgsTaskManager::taskResult()
304364
QCOMPARE( static_cast< QgsTask::TaskStatus >( statusSpy.at( 1 ).at( 0 ).toInt() ), QgsTask::Complete );
305365
QCOMPARE( task->status(), QgsTask::Complete );
306366

307-
task.reset( new FailTask() );
367+
task.reset( new FailTask( QStringLiteral( "task_result_2" ) ) );
308368
QCOMPARE( task->status(), QgsTask::Queued );
309369
QSignalSpy statusSpy2( task.get(), &QgsTask::statusChanged );
310370

@@ -333,8 +393,9 @@ void TestQgsTaskManager::addTask()
333393
QVERIFY( !manager.addTask( nullptr ) );
334394

335395
//add a task
336-
CancelableTask *task = new CancelableTask();
396+
CancelableTask *task = new CancelableTask( QStringLiteral( "add_task_1" ) );
337397
long id = manager.addTask( task );
398+
338399
QCOMPARE( id, 1L );
339400
QCOMPARE( manager.tasks().count(), 1 );
340401
QCOMPARE( manager.count(), 1 );
@@ -353,7 +414,7 @@ void TestQgsTaskManager::addTask()
353414
QCOMPARE( manager.tasks().at( 0 ), task );
354415

355416
//add a second task
356-
CancelableTask *task2 = new CancelableTask();
417+
CancelableTask *task2 = new CancelableTask( QStringLiteral( "add_task_2" ) );
357418
id = manager.addTask( task2 );
358419
QCOMPARE( id, 2L );
359420
QCOMPARE( manager.tasks().count(), 2 );
@@ -388,7 +449,7 @@ void TestQgsTaskManager::taskTerminationBeforeDelete()
388449
QgsTaskManager *manager = new QgsTaskManager();
389450

390451
//TestTerminationTask will assert that it's been terminated prior to deletion
391-
TestTask *task = new TestTerminationTask();
452+
TestTask *task = new TestTerminationTask( QStringLiteral( "termination_task_1" ) );
392453
manager->addTask( task );
393454

394455
// wait till task spins up
@@ -411,7 +472,7 @@ void TestQgsTaskManager::taskFinished()
411472
QgsTaskManager manager;
412473

413474
bool resultObtained = false;
414-
FinishTask *task = new FinishTask( &resultObtained );
475+
FinishTask *task = new FinishTask( &resultObtained, QStringLiteral( "finished_task_1" ) );
415476
task->desiredResult = true;
416477
manager.addTask( task );
417478
while ( task->status() == QgsTask::Running
@@ -426,7 +487,7 @@ void TestQgsTaskManager::taskFinished()
426487
flushEvents();
427488
QCOMPARE( resultObtained, true );
428489

429-
task = new FinishTask( &resultObtained );
490+
task = new FinishTask( &resultObtained, QStringLiteral( "finished_task_2" ) );
430491
task->desiredResult = false;
431492
manager.addTask( task );
432493

@@ -448,8 +509,8 @@ void TestQgsTaskManager::subTask()
448509
QgsTaskManager manager;
449510

450511
// parent with one subtask
451-
ProgressReportingTask *parent = new ProgressReportingTask();
452-
QPointer<ProgressReportingTask> subTask( new ProgressReportingTask() );
512+
ProgressReportingTask *parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_1" ) );
513+
QPointer<ProgressReportingTask> subTask( new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_1" ) ) );
453514

454515
parent->addSubTask( subTask );
455516

@@ -458,21 +519,20 @@ void TestQgsTaskManager::subTask()
458519
QVERIFY( !subTask.data() );
459520

460521
// parent with grand children
461-
parent = new ProgressReportingTask();
462-
subTask = new ProgressReportingTask();
463-
QPointer< ProgressReportingTask> subsubTask( new ProgressReportingTask() );
522+
parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_2" ) );
523+
subTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_2" ) );
524+
QPointer< ProgressReportingTask> subsubTask( new ProgressReportingTask( QStringLiteral( "sub_task_subsub_task_2" ) ) );
464525
subTask->addSubTask( subsubTask );
465526
parent->addSubTask( subTask );
466527

467528
delete parent;
468529
QVERIFY( !subTask.data() );
469530
QVERIFY( !subsubTask.data() );
470531

471-
472532
// test parent task progress
473-
parent = new ProgressReportingTask();
474-
subTask = new ProgressReportingTask();
475-
QPointer< ProgressReportingTask > subTask2( new ProgressReportingTask() );
533+
parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_3" ) );
534+
subTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_3" ) );
535+
QPointer< ProgressReportingTask > subTask2( new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_3a" ) ) );
476536

477537
parent->addSubTask( subTask );
478538
parent->addSubTask( subTask2 );
@@ -518,9 +578,9 @@ void TestQgsTaskManager::subTask()
518578
subTask->terminate();
519579

520580
// test canceling task with subtasks
521-
parent = new ProgressReportingTask();
522-
subTask = new ProgressReportingTask();
523-
subsubTask = new ProgressReportingTask();
581+
parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_4" ) );
582+
subTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_4" ) );
583+
subsubTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_sub_task_4" ) );
524584
subTask->addSubTask( subsubTask );
525585
parent->addSubTask( subTask );
526586

@@ -532,9 +592,9 @@ void TestQgsTaskManager::subTask()
532592
delete parent;
533593

534594
// test that if a subtask terminates the parent task is canceled
535-
parent = new ProgressReportingTask();
536-
subTask = new ProgressReportingTask();
537-
subsubTask = new ProgressReportingTask();
595+
parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_5" ) );
596+
subTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_5" ) );
597+
subsubTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_sub_task_5" ) );
538598
subTask->addSubTask( subsubTask );
539599
parent->addSubTask( subTask );
540600

@@ -563,9 +623,9 @@ void TestQgsTaskManager::subTask()
563623
QVERIFY( subsubTerminated.count() > 0 );
564624

565625
// test that a task is not marked complete until all subtasks are complete
566-
parent = new ProgressReportingTask();
567-
subTask = new ProgressReportingTask();
568-
subsubTask = new ProgressReportingTask();
626+
parent = new ProgressReportingTask( QStringLiteral( "sub_task_parent_task_6" ) );
627+
subTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_task_6" ) );
628+
subsubTask = new ProgressReportingTask( QStringLiteral( "sub_task_sub_sub_task_6" ) );
569629
subTask->addSubTask( subsubTask );
570630
parent->addSubTask( subTask );
571631
manager.addTask( parent );

0 commit comments

Comments
 (0)
Please sign in to comment.