| Line |
Branch |
Decision |
Call |
Exec |
Source |
| 1 |
|
|
|
|
#include "TaskGroup.h" |
| 2 |
|
|
|
|
|
| 3 |
|
|
|
|
#include "TaskGroupException.h" |
| 4 |
|
|
|
|
|
| 5 |
|
|
|
|
#include <atomic> |
| 6 |
|
|
|
|
#include <memory> |
| 7 |
|
|
|
|
|
| 8 |
|
|
|
|
using namespace CLO3D; |
| 9 |
|
|
|
|
|
| 10 |
|
|
10/10
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
|
786 |
TaskGroup::TaskGroup(const QString& name): BaseTask(name) {} |
| 11 |
|
|
|
|
|
| 12 |
|
|
|
786 |
void TaskGroup::wait() { |
| 13 |
2/4
✓ Branch 6 taken 786 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 786 times.
✗ Branch 10 not taken.
|
|
7/7
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 8 invoked.
|
786 |
TaskGroupException groupException(name()); |
| 14 |
2/2
✓ Branch 13 taken 3930 times.
✓ Branch 14 taken 786 times.
|
2/2
✓ Decision 'true' taken 3930 times.
✓ Decision 'false' taken 786 times.
|
13/13
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 10 invoked.
✓ Call 11 invoked.
✓ Call 12 invoked.
|
4716 |
for (const auto& task : tasks_) { |
| 15 |
|
|
|
|
try { |
| 16 |
2/2
✓ Branch 9 taken 3926 times.
✓ Branch 10 taken 4 times.
|
|
9/9
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
|
3930 |
task->wait(); |
| 17 |
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
|
2/2
✓ Call 2 invoked.
✓ Call 3 invoked.
|
4 |
} catch (const BaseTaskException& e) { |
| 18 |
1/2
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
|
2/2
✓ Call 0 invoked.
✓ Call 1 invoked.
|
4 |
groupException.addException(e); |
| 19 |
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
|
1/2
✓ Call 0 invoked.
✗ Call 3 not invoked.
|
4 |
} |
| 20 |
|
|
|
|
} |
| 21 |
3/4
✓ Branch 2 taken 786 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 784 times.
|
0/1
? Decision couldn't be analyzed.
|
6/6
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
|
786 |
if (!groupException.empty()) throw groupException; |
| 22 |
|
|
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
|
1570 |
} |
| 23 |
|
|
|
|
|
| 24 |
|
|
|
786 |
void TaskGroup::run(const std::function<void()>& onSuccess, const std::function<void(const BaseTaskException&)>& onException) { |
| 25 |
1/2
✓ Branch 8 taken 786 times.
✗ Branch 9 not taken.
|
|
9/10
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 10 invoked.
✗ Call 11 not invoked.
|
786 |
const auto remaining = std::make_shared<std::atomic<size_t>>(tasks_.size()); |
| 26 |
2/2
✓ Branch 13 taken 3930 times.
✓ Branch 14 taken 786 times.
|
2/2
✓ Decision 'true' taken 3930 times.
✓ Decision 'false' taken 786 times.
|
13/13
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 10 invoked.
✓ Call 11 invoked.
✓ Call 12 invoked.
|
4716 |
for (const auto& task : tasks_) { |
| 27 |
4/10
✓ Branch 10 taken 3930 times.
✗ Branch 11 not taken.
✓ Branch 17 taken 3930 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 3930 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 3930 times.
✗ Branch 26 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
|
|
25/32
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✓ Call 8 invoked.
✓ Call 9 invoked.
✓ Call 12 invoked.
✓ Call 13 invoked.
✓ Call 14 invoked.
✓ Call 15 invoked.
✓ Call 16 invoked.
✓ Call 19 invoked.
✓ Call 20 invoked.
✓ Call 23 invoked.
✓ Call 24 invoked.
✓ Call 27 invoked.
✓ Call 28 invoked.
✓ Call 29 invoked.
✓ Call 30 invoked.
✓ Call 31 invoked.
✓ Call 32 invoked.
✗ Call 33 not invoked.
✗ Call 34 not invoked.
✗ Call 37 not invoked.
✗ Call 38 not invoked.
✗ Call 39 not invoked.
✗ Call 40 not invoked.
✗ Call 41 not invoked.
|
11790 |
task->run([remaining, onSuccess] -> void { |
| 28 |
2/2
✓ Branch 4 taken 784 times.
✓ Branch 5 taken 3142 times.
|
2/2
✓ Decision 'true' taken 784 times.
✓ Decision 'false' taken 3142 times.
|
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
|
7852 |
if (remaining->fetch_sub(1, std::memory_order_release) == 1) { |
| 29 |
|
|
|
|
std::atomic_thread_fence(std::memory_order_acquire); |
| 30 |
|
|
3/3
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
|
784 |
onSuccess(); |
| 31 |
|
|
|
|
} |
| 32 |
1/4
✓ Branch 3 taken 3930 times.
✗ Branch 4 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
|
6/9
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 5 invoked.
✓ Call 6 invoked.
✓ Call 7 invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
|
7860 |
}, [remaining, onException](const BaseTaskException& e) -> void { |
| 33 |
2/2
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
|
2/2
✓ Decision 'true' taken 2 times.
✓ Decision 'false' taken 2 times.
|
4/4
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
|
8 |
if (remaining->fetch_sub(1, std::memory_order_release) == 1) { |
| 34 |
|
|
|
|
std::atomic_thread_fence(std::memory_order_acquire); |
| 35 |
|
|
3/3
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
|
2 |
onException(e); |
| 36 |
|
|
|
|
} |
| 37 |
|
|
|
4 |
}); |
| 38 |
|
|
|
|
} |
| 39 |
|
|
1/2
✓ Call 0 invoked.
✗ Call 1 not invoked.
|
1572 |
} |
| 40 |
|
|
|
|
|
| 41 |
|
|
|
3930 |
void TaskGroup::addTask(std::unique_ptr<BaseTask> task) { |
| 42 |
|
|
6/6
✓ Call 0 invoked.
✓ Call 1 invoked.
✓ Call 2 invoked.
✓ Call 3 invoked.
✓ Call 4 invoked.
✓ Call 5 invoked.
|
3930 |
tasks_.push_back(std::move(task)); |
| 43 |
|
|
|
3930 |
} |
| 44 |
|
|
|
|
|