|
@@ -315,6 +315,42 @@ def test_execute_dump_command_runs_mysqldump_with_options():
|
|
|
)
|
|
|
|
|
|
|
|
|
+def test_execute_dump_command_runs_non_default_mysqldump():
|
|
|
+ process = flexmock()
|
|
|
+ flexmock(module.dump).should_receive('make_data_source_dump_filename').and_return('dump')
|
|
|
+ flexmock(module.os.path).should_receive('exists').and_return(False)
|
|
|
+ flexmock(module.dump).should_receive('create_named_pipe_for_dump')
|
|
|
+
|
|
|
+ flexmock(module).should_receive('execute_command').with_args(
|
|
|
+ (
|
|
|
+ 'custom_mysqldump', # Custom MySQL dump command
|
|
|
+ '--add-drop-database',
|
|
|
+ '--databases',
|
|
|
+ 'foo',
|
|
|
+ '--result-file',
|
|
|
+ 'dump',
|
|
|
+ ),
|
|
|
+ extra_environment=None,
|
|
|
+ run_to_completion=False,
|
|
|
+ ).and_return(process).once()
|
|
|
+
|
|
|
+ assert (
|
|
|
+ module.execute_dump_command(
|
|
|
+ database={
|
|
|
+ 'name': 'foo',
|
|
|
+ 'mysql_dump_command': 'custom_mysqldump',
|
|
|
+ }, # Custom MySQL dump command specified
|
|
|
+ log_prefix='log',
|
|
|
+ dump_path=flexmock(),
|
|
|
+ database_names=('foo',),
|
|
|
+ extra_environment=None,
|
|
|
+ dry_run=False,
|
|
|
+ dry_run_label='',
|
|
|
+ )
|
|
|
+ == process
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
def test_execute_dump_command_with_duplicate_dump_skips_mysqldump():
|
|
|
flexmock(module.dump).should_receive('make_data_source_dump_filename').and_return('dump')
|
|
|
flexmock(module.os.path).should_receive('exists').and_return(True)
|
|
@@ -435,6 +471,34 @@ def test_restore_data_source_dump_runs_mysql_with_options():
|
|
|
)
|
|
|
|
|
|
|
|
|
+def test_restore_data_source_dump_runs_non_default_mysql_with_options():
|
|
|
+ hook_config = [{'name': 'foo', 'mysql_command': 'custom_mysql', 'restore_options': '--harder'}]
|
|
|
+ extract_process = flexmock(stdout=flexmock())
|
|
|
+
|
|
|
+ flexmock(module).should_receive('execute_command_with_processes').with_args(
|
|
|
+ ('custom_mysql', '--batch', '--harder'),
|
|
|
+ processes=[extract_process],
|
|
|
+ output_log_level=logging.DEBUG,
|
|
|
+ input_file=extract_process.stdout,
|
|
|
+ extra_environment=None,
|
|
|
+ ).once()
|
|
|
+
|
|
|
+ module.restore_data_source_dump(
|
|
|
+ hook_config,
|
|
|
+ {},
|
|
|
+ 'test.yaml',
|
|
|
+ data_source=hook_config[0],
|
|
|
+ dry_run=False,
|
|
|
+ extract_process=extract_process,
|
|
|
+ connection_params={
|
|
|
+ 'hostname': None,
|
|
|
+ 'port': None,
|
|
|
+ 'username': None,
|
|
|
+ 'password': None,
|
|
|
+ },
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
def test_restore_data_source_dump_runs_mysql_with_hostname_and_port():
|
|
|
hook_config = [{'name': 'foo', 'hostname': 'database.example.org', 'port': 5433}]
|
|
|
extract_process = flexmock(stdout=flexmock())
|