5 #include <windows.h> // only for Sleep
8 #include <glibmm/miscutils.h>
10 #include "ardour/jack_utils.h"
12 #include "jack_utils_test.h"
14 CPPUNIT_TEST_SUITE_REGISTRATION (JackUtilsTest);
17 using namespace ARDOUR;
20 JackUtilsTest::test_driver_names ()
22 vector<string> driver_names;
24 get_jack_audio_driver_names (driver_names);
26 CPPUNIT_ASSERT(!driver_names.empty());
29 cout << "Number of possible JACK Audio drivers found on this system: " << driver_names.size () << endl;
31 for (vector<string>::const_iterator i = driver_names.begin(); i != driver_names.end(); ++i) {
32 cout << "JACK Audio driver found: " << *i << endl;
35 string default_audio_driver;
36 get_jack_default_audio_driver_name (default_audio_driver);
38 cout << "The default audio driver on this system is: " << default_audio_driver << endl;
42 get_jack_midi_system_names (default_audio_driver, driver_names);
44 CPPUNIT_ASSERT(!driver_names.empty());
46 cout << "Number of possible JACK MIDI drivers found on this system for default audio driver: " << driver_names.size () << endl;
48 for (vector<string>::const_iterator i = driver_names.begin(); i != driver_names.end(); ++i) {
49 cout << "JACK MIDI driver found: " << *i << endl;
52 string default_midi_driver;
53 get_jack_default_midi_system_name (default_audio_driver, default_midi_driver);
55 cout << "The default midi driver on this system is: " << default_midi_driver << endl;
59 devices_string (const vector<string>& devices)
62 for (vector<string>::const_iterator i = devices.begin(); i != devices.end();) {
64 if (++i != devices.end()) str += ", ";
70 JackUtilsTest::test_device_names ()
72 vector<string> driver_names;
74 get_jack_audio_driver_names (driver_names);
76 CPPUNIT_ASSERT(!driver_names.empty());
80 for (vector<string>::const_iterator i = driver_names.begin(); i != driver_names.end(); ++i) {
81 string devices = devices_string (get_jack_device_names_for_audio_driver (*i));
82 cout << "JACK Audio driver found: " << *i << " with devices: " << devices << endl;
87 JackUtilsTest::test_samplerates ()
89 vector<string> samplerates;
91 get_jack_sample_rate_strings (samplerates);
93 cout << "Number of possible Samplerates supported by JACK: " << samplerates.size () << endl;
95 for (vector<string>::const_iterator i = samplerates.begin(); i != samplerates.end(); ++i) {
96 cout << "Samplerate: " << *i << endl;
101 JackUtilsTest::test_period_sizes ()
103 vector<string> period_sizes;
105 get_jack_period_size_strings (period_sizes);
107 cout << "Number of possible Period sizes supported by JACK: " << period_sizes.size () << endl;
109 for (vector<string>::const_iterator i = period_sizes.begin(); i != period_sizes.end(); ++i) {
110 cout << "Period size: " << *i << endl;
115 JackUtilsTest::test_dither_modes ()
117 vector<string> driver_names;
119 get_jack_audio_driver_names (driver_names);
121 CPPUNIT_ASSERT(!driver_names.empty());
125 for (vector<string>::const_iterator i = driver_names.begin(); i != driver_names.end(); ++i) {
126 vector<string> dither_modes;
128 get_jack_dither_mode_strings (*i, dither_modes);
129 cout << "Number of possible Dither Modes supported by JACK driver " << *i <<
130 ": " << dither_modes.size () << endl;
131 for (vector<string>::const_iterator j = dither_modes.begin(); j != dither_modes.end(); ++j) {
132 cout << "Dither Mode: " << *j << endl;
140 JackUtilsTest::test_connect_server ()
143 if (jack_server_running ()) {
144 cout << "Jack server running " << endl;
146 cout << "Jack server not running " << endl;
151 JackUtilsTest::test_set_jack_path_env ()
155 bool path_env_set = false;
157 string path_env = Glib::getenv ("PATH", path_env_set);
160 cout << "PATH env set to: " << path_env << endl;
162 cout << "PATH env not set" << endl;
164 vector<string> server_dirs;
165 get_jack_server_dir_paths (server_dirs);
166 set_path_env_for_jack_autostart (server_dirs);
168 path_env_set = false;
170 path_env = Glib::getenv ("PATH", path_env_set);
172 CPPUNIT_ASSERT (path_env_set);
174 cout << "After set_jack_path_env PATH env set to: " << path_env << endl;
178 JackUtilsTest::test_server_paths ()
182 vector<std::string> server_dirs;
184 CPPUNIT_ASSERT (get_jack_server_dir_paths (server_dirs));
186 cout << "Number of Directories that may contain JACK servers: " << server_dirs.size () << endl;
188 for (vector<std::string>::const_iterator i = server_dirs.begin(); i != server_dirs.end(); ++i) {
189 cout << "JACK server directory path: " << *i << endl;
192 vector<string> server_names;
194 CPPUNIT_ASSERT (get_jack_server_application_names (server_names));
196 cout << "Number of possible JACK server names on this system: " << server_names.size () << endl;
198 for (vector<string>::const_iterator i = server_names.begin(); i != server_names.end(); ++i) {
199 cout << "JACK server name: " << *i << endl;
202 vector<std::string> server_paths;
204 CPPUNIT_ASSERT (get_jack_server_paths (server_dirs, server_names, server_paths));
206 cout << "Number of JACK servers on this system: " << server_paths.size () << endl;
208 for (vector<std::string>::const_iterator i = server_paths.begin(); i != server_paths.end(); ++i) {
209 cout << "JACK server path: " << *i << endl;
212 vector<std::string> server_paths2;
214 CPPUNIT_ASSERT (get_jack_server_paths (server_paths2));
216 CPPUNIT_ASSERT (server_paths.size () == server_paths2.size ());
218 std::string default_server_path;
220 CPPUNIT_ASSERT (get_jack_default_server_path (default_server_path));
222 cout << "The default JACK server on this system: " << default_server_path << endl;
226 JackUtilsTest::test_config ()
232 JackUtilsTest::test_command_line ()
236 JackCommandLineOptions options;
238 CPPUNIT_ASSERT (get_jack_default_server_path (options.server_path));
240 get_jack_default_audio_driver_name (options.driver);
244 // should fail, haven't set any device yet
245 CPPUNIT_ASSERT (!get_jack_command_line_string (options, command_line));
247 vector<string> devices = get_jack_device_names_for_audio_driver (options.driver);
249 if (!devices.empty()) {
250 options.input_device = devices.front ();
251 options.output_device = devices.front ();
253 cout << "No audio devices available using default JACK driver using Dummy driver" << endl;
254 options.driver = dummy_driver_name;
255 devices = get_jack_device_names_for_audio_driver (options.driver);
256 CPPUNIT_ASSERT (!devices.empty ());
257 options.input_device = devices.front ();
258 options.output_device = devices.front ();
261 options.input_device = devices.front ();
262 options.output_device = devices.front ();
266 get_jack_default_midi_system_name (options.driver, options.midi_driver);
268 // this at least should create a valid jack command line
269 CPPUNIT_ASSERT (get_jack_command_line_string (options, command_line));
271 cout << "Default JACK command line: " << command_line << endl;
275 JackUtilsTest::test_start_server ()
280 JackCommandLineOptions options;
282 CPPUNIT_ASSERT (get_jack_default_server_path (options.server_path));
284 cout << "Starting JACK server at path: " << options.server_path << endl;
286 get_jack_default_audio_driver_name (options.driver);
288 vector<string> devices = get_jack_device_names_for_audio_driver (options.driver);
290 if (!devices.empty()) {
291 options.input_device = devices.front ();
292 options.output_device = devices.front ();
294 cout << "No audio devices available using default JACK driver using Dummy driver" << endl;
295 options.driver = dummy_driver_name;
296 devices = get_jack_device_names_for_audio_driver (options.driver);
297 CPPUNIT_ASSERT (!devices.empty ());
298 options.input_device = devices.front ();
299 options.output_device = devices.front ();
303 // this at least should create a valid jack command line
304 CPPUNIT_ASSERT (get_jack_command_line_string (options, command_line));
306 cout << "Calling start_jack_server with command line: " << command_line << endl;
308 CPPUNIT_ASSERT (start_jack_server (command_line));
310 // sleep for 10 seconds
313 CPPUNIT_ASSERT (jack_server_running ());