diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-11-05 14:06:03 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-12-01 15:44:10 +1000 |
commit | 44f46d2b0dd0ef0265b823d0126857ec4458345b (patch) | |
tree | a53c2e407b3db86d88975df39777826965229bfb /libs/ardour/test | |
parent | 7f3118c8fe651c722b48ed3d9f47f998507237be (diff) |
Fix broken load-session utility and change it to load and save a session
Rename run-session-tests.sh script to load-save-session.sh and make it operate on
only a single session and add a separate load-save-session-collection.sh script
Add --massif option to load-save-session.sh script
Rename some poorly named variables and add some documentation to the
load-save-session.sh script
Diffstat (limited to 'libs/ardour/test')
-rw-r--r-- | libs/ardour/test/load_save_session.cc | 121 | ||||
-rw-r--r-- | libs/ardour/test/load_session.cc | 48 |
2 files changed, 121 insertions, 48 deletions
diff --git a/libs/ardour/test/load_save_session.cc b/libs/ardour/test/load_save_session.cc new file mode 100644 index 0000000000..ab4573c883 --- /dev/null +++ b/libs/ardour/test/load_save_session.cc @@ -0,0 +1,121 @@ +#include "test_util.h" + +#include <iostream> +#include <cstdlib> + +#include <glib.h> + +#include "pbd/failed_constructor.h" +#include "pbd/timing.h" + +#include "ardour/ardour.h" +#include "ardour/audioengine.h" +#include "ardour/session.h" + +#include "test_ui.h" + +using namespace std; +using namespace ARDOUR; + +static const char* localedir = LOCALEDIR; + +static const int sleep_seconds = 2; + +static +void +pause_for_effect() +{ + // It may be useful to pause to make it easier to see what is happening in a + // visual tool like massif visualizer + + std::cerr << "pausing for " << sleep_seconds << " seconds" << std::endl; + + g_usleep(sleep_seconds*1000000); +} + +int main (int argc, char* argv[]) +{ + if (argc != 3) { + cerr << "Syntax: " << argv[0] << " <dir> <snapshot-name>\n"; + exit (EXIT_FAILURE); + } + + std::cerr << "ARDOUR::init" << std::endl; + + PBD::Timing ardour_init_timing; + + ARDOUR::init (false, true, localedir); + ardour_init_timing.update(); + + TestUI* test_ui = new TestUI(); + + std::cerr << "ARDOUR::init time : " << ardour_init_timing.elapsed() + << " usecs" << std::endl; + + std::cerr << "Creating Dummy backend" << std::endl; + + create_and_start_dummy_backend (); + + std::cerr << "Loading session: " << argv[2] << std::endl; + + PBD::Timing load_session_timing; + + Session* s = 0; + + try { + s = load_session (argv[1], argv[2]); + } catch (failed_constructor& e) { + cerr << "failed_constructor: " << e.what() << "\n"; + exit (EXIT_FAILURE); + } catch (AudioEngine::PortRegistrationFailure& e) { + cerr << "PortRegistrationFailure: " << e.what() << "\n"; + exit (EXIT_FAILURE); + } catch (exception& e) { + cerr << "exception: " << e.what() << "\n"; + exit (EXIT_FAILURE); + } catch (...) { + cerr << "unknown exception.\n"; + exit (EXIT_FAILURE); + } + + load_session_timing.update(); + + std::cerr << "Loading session time : " << load_session_timing.elapsed() + << " usecs" << std::endl; + + PBD::Timing save_session_timing; + + pause_for_effect (); + + std::cerr << "Saving session: " << argv[2] << std::endl; + + s->save_state(""); + + save_session_timing.update(); + + std::cerr << "Saving session time : " << save_session_timing.elapsed() + << " usecs" << std::endl; + + std::cerr << "AudioEngine::remove_session" << std::endl; + + AudioEngine::instance()->remove_session (); + + PBD::Timing destroy_session_timing; + + delete s; + + destroy_session_timing.update(); + + std::cerr << "Destroy session time : " << destroy_session_timing.elapsed() + << " usecs" << std::endl; + + AudioEngine::instance()->stop (); + + AudioEngine::destroy (); + + delete test_ui; + + ARDOUR::cleanup (); + + return 0; +} diff --git a/libs/ardour/test/load_session.cc b/libs/ardour/test/load_session.cc deleted file mode 100644 index 41dc48ef2f..0000000000 --- a/libs/ardour/test/load_session.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include "test_util.h" -#include "pbd/failed_constructor.h" -#include "ardour/ardour.h" -#include "ardour/audioengine.h" -#include "ardour/session.h" -#include <iostream> -#include <cstdlib> - -using namespace std; -using namespace ARDOUR; - -static const char* localedir = LOCALEDIR; - -int main (int argc, char* argv[]) -{ - if (argc != 3) { - cerr << "Syntax: " << argv[0] << " <dir> <snapshot-name>\n"; - exit (EXIT_FAILURE); - } - - ARDOUR::init (false, true, localedir); - - Session* s = 0; - - try { - s = load_session (argv[1], argv[2]); - } catch (failed_constructor& e) { - cerr << "failed_constructor: " << e.what() << "\n"; - exit (EXIT_FAILURE); - } catch (AudioEngine::PortRegistrationFailure& e) { - cerr << "PortRegistrationFailure: " << e.what() << "\n"; - exit (EXIT_FAILURE); - } catch (exception& e) { - cerr << "exception: " << e.what() << "\n"; - exit (EXIT_FAILURE); - } catch (...) { - cerr << "unknown exception.\n"; - exit (EXIT_FAILURE); - } - - AudioEngine::instance()->remove_session (); - delete s; - AudioEngine::instance()->stop (); - - AudioEngine::destroy (); - - return 0; -} |