ardour
timer_test.h
Go to the documentation of this file.
1 #include <cppunit/TestFixture.h>
2 #include <cppunit/extensions/HelperMacros.h>
3 
4 #include "glibmm/main.h"
5 
6 #include "pbd/timing.h"
7 
33 class TimerTest : public CppUnit::TestFixture
34 {
42 #ifdef PLATFORM_WINDOWS
43  CPPUNIT_TEST (testGlibTimeoutSourcesHR);
44  CPPUNIT_TEST (testGlibmmSignalTimeoutsHR);
45  CPPUNIT_TEST (testGlibmmTimeoutSourcesHR);
46  CPPUNIT_TEST (testTimersHR);
47  CPPUNIT_TEST (testTimersIdleFrequencyHR);
48  CPPUNIT_TEST (testTimersBlockIdleHR);
49 #endif
51 
52 public:
53 
55  : m_connect_idle(false)
56  , m_block_idle(false)
57  { }
58 
62  void _testTimers ();
64  void _testTimersBlockIdle ();
65 
66  void testGlibTimeoutSources ();
69  void testTimers ();
71  void testTimersBlockIdle ();
72 
73 #ifdef PLATFORM_WINDOWS
74  void testGlibTimeoutSourcesHR ();
75  void testGlibmmSignalTimeoutsHR ();
76  void testGlibmmTimeoutSourcesHR ();
77  void testTimersHR ();
78  void testTimersIdleFrequencyHR ();
79  void testTimersBlockIdleHR ();
80 #endif
81 
82 private:
83 
84  static guint64 second_timer_usecs ()
85  { return 1000000; }
86 
87  static guint64 fast_timer_usecs ()
88  { return 100000; }
89 
90  static guint64 rapid1_timer_usecs ()
91  { return 40000; }
92 
93  static guint64 rapid2_timer_usecs ()
94  { return 15000; }
95 
96  static guint64 second_timer_ms ()
97  { return second_timer_usecs () / 1000; }
98 
99  static guint64 fast_timer_ms ()
100  { return fast_timer_usecs () / 1000; }
101 
102  static guint64 rapid1_timer_ms ()
103  { return rapid1_timer_usecs () / 1000; }
104 
105  static guint64 rapid2_timer_ms ()
106  { return rapid2_timer_usecs () / 1000; }
107 
108  static guint64 test_length_ms ()
109  { return 2 * 1000; }
110 
111  std::string m_current_test_name;
112 
115 
116  bool on_idle_handler ();
117  bool on_quit_handler ();
118 
119  void on_second_timeout ();
120  void on_fast_timeout ();
121  void on_rapid1_timeout ();
122  void on_rapid2_timeout ();
123 
124  bool on_second_timeout_glibmm ();
125  bool on_fast_timeout_glibmm ();
126  bool on_rapid1_timeout_glibmm ();
127  bool on_rapid2_timeout_glibmm ();
128 
129  static gboolean _second_timeout_handler (void*);
130  static gboolean _fast_timeout_handler (void*);
131  static gboolean _rapid1_timeout_handler (void*);
132  static gboolean _rapid2_timeout_handler (void*);
133 
134  void start_timing ();
135  void reset_timing ();
136 
137  void reset_timing_run_main ();
138 
139  static void
140  simulate_load (const std::string& name, guint64 time_usecs);
141  Glib::RefPtr<Glib::MainLoop> m_main;
142  Glib::RefPtr<Glib::MainContext> m_context;
143 
144  void connect_idle_handler ();
145  void connect_quit_timeout ();
146 
152 };
static void simulate_load(const std::string &name, guint64 time_usecs)
Definition: timer_test.cc:64
bool on_quit_handler()
Definition: timer_test.cc:181
bool on_idle_handler()
Definition: timer_test.cc:171
void testGlibmmSignalTimeouts()
Definition: timer_test.cc:315
PBD::TimingData m_fast_timing_data
Definition: timer_test.h:149
static guint64 rapid2_timer_ms()
Definition: timer_test.h:105
bool m_block_idle
Definition: timer_test.h:114
void testTimersIdleFrequency()
Definition: timer_test.cc:446
std::string m_current_test_name
Definition: timer_test.h:111
void testGlibmmTimeoutSources()
Definition: timer_test.cc:347
PBD::TimingData m_second_timing_data
Definition: timer_test.h:148
void on_fast_timeout()
Definition: timer_test.cc:117
void on_rapid1_timeout()
Definition: timer_test.cc:135
CPPUNIT_TEST_SUITE(TimerTest)
PBD::TimingData m_idle_timing_data
Definition: timer_test.h:147
PBD::TimingData m_rapid1_timing_data
Definition: timer_test.h:150
void testGlibTimeoutSources()
Definition: timer_test.cc:251
void connect_quit_timeout()
Definition: timer_test.cc:400
static gboolean _fast_timeout_handler(void *)
Definition: timer_test.cc:215
bool on_rapid1_timeout_glibmm()
Definition: timer_test.cc:146
static guint64 second_timer_ms()
Definition: timer_test.h:96
void start_timing()
Definition: timer_test.cc:198
Glib::RefPtr< Glib::MainContext > m_context
Definition: timer_test.h:142
PBD::TimingData m_rapid2_timing_data
Definition: timer_test.h:151
void testTimersBlockIdle()
Definition: timer_test.cc:465
void reset_timing()
Definition: timer_test.cc:189
static gboolean _second_timeout_handler(void *)
Definition: timer_test.cc:207
Glib::RefPtr< Glib::MainLoop > m_main
Definition: timer_test.h:141
static guint64 rapid2_timer_usecs()
Definition: timer_test.h:93
void connect_idle_handler()
Definition: timer_test.cc:391
static guint64 rapid1_timer_ms()
Definition: timer_test.h:102
static gboolean _rapid1_timeout_handler(void *)
Definition: timer_test.cc:223
void on_second_timeout()
Definition: timer_test.cc:89
static gboolean _rapid2_timeout_handler(void *)
Definition: timer_test.cc:231
static guint64 fast_timer_ms()
Definition: timer_test.h:99
void _testGlibmmTimeoutSources()
Definition: timer_test.cc:354
const char * name
bool on_fast_timeout_glibmm()
Definition: timer_test.cc:128
static guint64 second_timer_usecs()
Definition: timer_test.h:84
bool m_connect_idle
Definition: timer_test.h:113
void _testTimersBlockIdle()
Definition: timer_test.cc:472
CPPUNIT_TEST(testGlibTimeoutSources)
void _testGlibTimeoutSources()
Definition: timer_test.cc:258
void _testTimers()
Definition: timer_test.cc:416
static guint64 fast_timer_usecs()
Definition: timer_test.h:87
void reset_timing_run_main()
Definition: timer_test.cc:239
bool on_second_timeout_glibmm()
Definition: timer_test.cc:110
bool on_rapid2_timeout_glibmm()
Definition: timer_test.cc:164
void _testTimersIdleFrequency()
Definition: timer_test.cc:453
void _testGlibmmSignalTimeouts()
Definition: timer_test.cc:322
void testTimers()
Definition: timer_test.cc:409
CPPUNIT_TEST_SUITE_END()
static guint64 test_length_ms()
Definition: timer_test.h:108
void on_rapid2_timeout()
Definition: timer_test.cc:153
static guint64 rapid1_timer_usecs()
Definition: timer_test.h:90