| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Pierre Aubert | ||
| 3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #include <iostream> | ||
| 8 | #include <string> | ||
| 9 | #include <chrono> | ||
| 10 | #include <thread> | ||
| 11 | #include <sstream> | ||
| 12 | #include <vector> | ||
| 13 | |||
| 14 | #include "PMultiThreadProgress.h" | ||
| 15 | |||
| 16 | ///Fake data computing | ||
| 17 | /** @param progress : multiple progress bar | ||
| 18 | * @param vecComputeData : vector of compute data | ||
| 19 | * @param index : index of data to be computed | ||
| 20 | */ | ||
| 21 | 1 | void fake_compute_data(PMultiThreadProgress & progress, const std::vector<int> & vecComputeData, size_t index){ | |
| 22 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | std::stringstream name; |
| 23 |
2/2✓ Branch 0 (3→4) taken 1 times.
✓ Branch 2 (4→5) taken 1 times.
|
1 | name << "Some computing of data index " << index; |
| 24 | //Start the progress bar | ||
| 25 |
3/3✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (7→8) taken 1 times.
✓ Branch 4 (8→9) taken 1 times.
|
1 | size_t indexProgressBar = progress.addProgressBar(name.str(), vecComputeData[index]); |
| 26 | //Simulate computation which depends on input data | ||
| 27 |
2/2✓ Branch 0 (24→12) taken 3 times.
✓ Branch 1 (24→25) taken 1 times.
|
4 | for(int i(0); i < vecComputeData[index]; ++i){ //Simulate some avancement |
| 28 |
2/6✗ Branch 0 (13→14) not taken.
✓ Branch 1 (13→16) taken 3 times.
✗ Branch 2 (14→15) not taken.
✗ Branch 3 (14→16) not taken.
✗ Branch 4 (17→18) not taken.
✓ Branch 5 (17→19) taken 3 times.
|
3 | if(vecComputeData[index] == 5 && i == 3){ |
| 29 | ✗ | progress.setError(index); | |
| 30 | } | ||
| 31 |
1/1✓ Branch 0 (19→20) taken 3 times.
|
3 | progress.incrementProgress(indexProgressBar); //Update the progress bar |
| 32 |
1/1✓ Branch 0 (21→22) taken 3 times.
|
3 | std::this_thread::sleep_for(std::chrono::milliseconds(1)); //Simulate computation |
| 33 | } | ||
| 34 | // std::this_thread::sleep_for(std::chrono::seconds(vecComputeData[index])); | ||
| 35 | //Say the computation is finished | ||
| 36 |
1/1✓ Branch 0 (25→26) taken 1 times.
|
1 | progress.incrementProgress(indexProgressBar); |
| 37 | 1 | } | |
| 38 | |||
| 39 | 1 | int main(){ | |
| 40 | 1 | size_t nbValue(1lu); | |
| 41 | 1 | std::vector<int> vecComputeData; | |
| 42 |
2/2✓ Branch 0 (6→4) taken 1 times.
✓ Branch 1 (6→7) taken 1 times.
|
2 | for(size_t i(0lu); i < nbValue; ++i){ |
| 43 |
1/1✓ Branch 0 (4→5) taken 1 times.
|
1 | vecComputeData.push_back(3lu + ((i*11lu)%5lu)); |
| 44 | } | ||
| 45 |
2/2✓ Branch 0 (7→8) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
|
1 | std::cout << "Start computation" << std::endl; |
| 46 | |||
| 47 |
1/1✓ Branch 0 (9→10) taken 1 times.
|
1 | PMultiThreadProgress progress(nbValue); |
| 48 | |||
| 49 | 1 | std::vector<std::thread> vecThread; | |
| 50 |
1/1✓ Branch 0 (11→12) taken 1 times.
|
1 | vecThread.resize(nbValue); |
| 51 | |||
| 52 |
1/1✓ Branch 0 (13→14) taken 1 times.
|
1 | std::thread threadProgress(phoenix_print_parallel_progress, std::ref(progress), 1); |
| 53 |
2/2✓ Branch 0 (21→15) taken 1 times.
✓ Branch 1 (21→22) taken 1 times.
|
2 | for(size_t i(0lu); i < nbValue; ++i){ |
| 54 |
1/1✓ Branch 0 (16→17) taken 1 times.
|
1 | vecThread[i] = std::thread(fake_compute_data, std::ref(progress), vecComputeData, i); |
| 55 | } | ||
| 56 |
1/1✓ Branch 0 (22→23) taken 1 times.
|
1 | threadProgress.join(); |
| 57 |
2/2✓ Branch 0 (27→24) taken 1 times.
✓ Branch 1 (27→28) taken 1 times.
|
2 | for(size_t i(0lu); i < nbValue; ++i){ |
| 58 |
1/1✓ Branch 0 (25→26) taken 1 times.
|
1 | vecThread[i].join(); |
| 59 | } | ||
| 60 |
2/2✓ Branch 0 (28→29) taken 1 times.
✓ Branch 2 (29→30) taken 1 times.
|
1 | PMultiThreadProgress progressCopy(progress), progressEqual; |
| 61 |
1/1✓ Branch 0 (30→31) taken 1 times.
|
1 | progressEqual = progress; |
| 62 |
1/1✓ Branch 0 (31→32) taken 1 times.
|
1 | progressCopy.setNbExpectedProgressBar(0lu); |
| 63 |
1/1✓ Branch 0 (32→33) taken 1 times.
|
1 | progressEqual.setNbExpectedProgressBar(0lu); |
| 64 | |||
| 65 |
2/2✓ Branch 0 (33→34) taken 1 times.
✓ Branch 2 (34→35) taken 1 times.
|
1 | std::cout << "Done" << std::endl; |
| 66 | 1 | return 0; | |
| 67 | 1 | } | |
| 68 | |||
| 69 | |||
| 70 |