LCOV - code coverage report
Current view: top level - progs - test_sleep.cxx (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 42 0
Test Date: 2025-11-11 10:26:08 Functions: 0.0 % 3 0

            Line data    Source code
       1              : //
       2              : // test_sleep.cxx
       3              : //
       4              : // Test the sleep function
       5              : //
       6              : 
       7              : #include <stdio.h>
       8              : #include <signal.h> // SIGPIPE
       9              : #include <unistd.h> // alarm()
      10              : //#include <assert.h> // assert()
      11              : //#include <stdlib.h> // malloc()
      12              : //#include <math.h> // M_PI
      13              : 
      14              : //#include "midas.h"
      15              : #include "tmfe.h"
      16              : 
      17            0 : void test(double total_sleep, double call_sleep)
      18              : {
      19            0 :    double start_time = TMFE::GetTime();
      20            0 :    double count = 0;
      21            0 :    double incr = 0;
      22              : 
      23            0 :    int loops = total_sleep/call_sleep;
      24              : 
      25            0 :    for (int i=0; i<loops; i++) {
      26            0 :       TMFE::Sleep(call_sleep);
      27            0 :       count += 1.0;
      28            0 :       incr += call_sleep;
      29              :    }
      30              :    
      31            0 :    double end_time = TMFE::GetTime();
      32              : 
      33            0 :    double elapsed = end_time - start_time;
      34            0 :    double actual_sleep = elapsed/count;
      35              : 
      36            0 :    printf("sleep %7.0f loops, %12.3f usec per loop, %12.9f sec total, %12.9f sec actual total, %12.3f usec actual per loop, oversleep %8.3f usec, %6.1f%%\n",
      37              :           count,
      38              :           call_sleep*1e6,
      39              :           incr,
      40              :           elapsed,
      41              :           actual_sleep*1e6,
      42            0 :           (actual_sleep - call_sleep)*1e6,
      43            0 :           (actual_sleep - call_sleep)/call_sleep*100.0);
      44            0 : }
      45              : 
      46            0 : void test_alarm(int)
      47              : {
      48            0 :    printf("alarm!\n");
      49            0 : }
      50              : 
      51            0 : int main(int argc, char* argv[])
      52              : {
      53            0 :    setbuf(stdout, NULL);
      54            0 :    setbuf(stderr, NULL);
      55              : 
      56            0 :    signal(SIGPIPE, SIG_IGN);
      57            0 :    signal(SIGALRM, test_alarm);
      58              : 
      59              :    //TMFE::Sleep(-1.0);
      60              :    //TMFE::Sleep(-0.0);
      61              :    //TMFE::Sleep(+0.0);
      62              :    //TMFE::Sleep(0);
      63              :    //TMFE::Sleep(12345678901234567890.0);
      64              : 
      65              :    //::alarm(2);
      66              :    
      67              :    //TMFE* mfe = TMFE::Instance();
      68              : 
      69              :    if (1) {
      70            0 :       printf("test short sleep:\n");
      71              : 
      72            0 :       test(1.0, 0.1);
      73            0 :       test(1.0, 0.01);
      74            0 :       test(1.0, 0.001);
      75            0 :       test(1.0, 0.0001);
      76            0 :       test(1.0, 0.00001);
      77            0 :       test(1.0, 0.000001);
      78            0 :       test(0.1, 0.0000001);
      79            0 :       test(0.01, 0.00000001);
      80              :    }
      81              : 
      82              :    if (1) {
      83            0 :       double sleep_requested = 2.1*60; // 2.1 minutes
      84            0 :       printf("test long sleep: requested %.9f sec ... sleeping ...\n", sleep_requested);
      85            0 :       ::alarm(10);
      86            0 :       double t0 = TMFE::GetTime();
      87            0 :       TMFE::Sleep(sleep_requested);
      88            0 :       double t1 = TMFE::GetTime();
      89            0 :       double sleep_actual    = t1 - t0;
      90            0 :       printf("test long sleep: requested %.9f sec, actual %.9f sec\n", sleep_requested, sleep_actual);
      91              :    }
      92              : 
      93            0 :    return 0;
      94              : }
      95              : 
      96              : /* emacs
      97              :  * Local Variables:
      98              :  * tab-width: 8
      99              :  * c-basic-offset: 3
     100              :  * indent-tabs-mode: nil
     101              :  * End:
     102              :  */
        

Generated by: LCOV version 2.0-1