| 10 | |
| 11 | |
| 12 | TEST(CTimer, DISABLED_SleeptoAccuracy) |
| 13 | { |
| 14 | using namespace std; |
| 15 | using namespace srt::sync; |
| 16 | |
| 17 | const int num_samples = 1000; |
| 18 | array<uint64_t, num_samples> sleeps_us; |
| 19 | |
| 20 | const uint64_t sleep_intervals_us[] = { 1, 5, 10, 50, 100, 250, 500, 1000, 5000, 10000 }; |
| 21 | |
| 22 | CTimer timer; |
| 23 | |
| 24 | for (uint64_t interval_us : sleep_intervals_us) |
| 25 | { |
| 26 | for (int i = 0; i < num_samples; i++) |
| 27 | { |
| 28 | steady_clock::time_point currtime = steady_clock::now(); |
| 29 | timer.sleep_until(currtime + microseconds_from(interval_us)); |
| 30 | |
| 31 | steady_clock::time_point new_time = steady_clock::now(); |
| 32 | sleeps_us[i] = count_microseconds(new_time - currtime); |
| 33 | } |
| 34 | |
| 35 | cerr << "Target sleep duration: " << interval_us << " us\n"; |
| 36 | cerr << "avg sleep duration: " << accumulate(sleeps_us.begin(), sleeps_us.end(), (uint64_t) 0) / num_samples << " us\n"; |
| 37 | cerr << "min sleep duration: " << *min_element(sleeps_us.begin(), sleeps_us.end()) << " us\n"; |
| 38 | cerr << "max sleep duration: " << *max_element(sleeps_us.begin(), sleeps_us.end()) << " us\n"; |
| 39 | cerr << "\n"; |
| 40 | } |
| 41 | } |
| 42 | |
| 43 |
nothing calls this directly
no test coverage detected