def test_start(self, mock_saveset, mock_inject, mock_calc, mock_verify, mock_subprocess): mock_subprocess.return_value = 0 mock_saveset.return_value = dict(id=555, saveset='test') mock_inject.return_value = dict(inject=dict( status='ok', saveset='test', file_count=444, skipped=0)) mock_calc.return_value = dict(calc_sums=dict( status='ok', saveset='test', size=150505, processed=4040)) mock_verify.return_value = dict(verify=dict(status='ok', saveset='test', count=444, errors=0, missing=0, skipped=0)) expected = dict(start=dict(status='ok', results=[ mock_inject.return_value, mock_calc. return_value, mock_verify.return_value ])) self.config.db_set('autoverify', 'true') obj = Actions(self.cli, db_engine=self.engine, db_session=self.session) ret = obj.start([self.testhost], self.volume) self.assertEqual(ret, expected) mock_saveset.assert_called_once_with(self.testhost, self.volume) mock_inject.assert_called_once_with( self.testhost, self.volume, '%s/%s' % (self.snapshot_root, Constants.SYNC_PATH), 555) mock_verify.assert_called_once_with(['test']) mock_subprocess.assert_called_once_with( ['rsnapshot', '-c', self.rsnapshot_conf, 'sync', self.testhost])
def main(): opts = Config().docopt_convert(docopt.docopt(__doc__)) Syslog.logger = Syslog(opts) obj = Actions(opts) result = {} status = 'ok' if (opts['list-hosts']): result = obj.list_hosts() elif (opts['list-savesets']): result = obj.list_savesets() elif (opts['list-volumes']): result = obj.list_volumes() elif (opts['verify']): result = obj.verify(opts['verify']) elif (opts['version']): result = dict(version=[dict(name='secondshot %s' % __version__)]) elif (opts['action'] == 'start'): result = obj.start(obj.hosts, obj.volume) status = result['start']['status'] elif (opts['action'] == 'rotate'): result = obj.rotate(opts['interval']) elif (opts['action'] == 'schema-update'): result = obj.schema_update() status = result['status'] else: sys.exit('Unknown action: %s' % opts['action']) if (opts['format'] == 'json'): sys.stdout.write(json.dumps(result) + '\n') elif (opts['format'] == 'text' and result and next(iter(result.keys())) in ['hosts', 'savesets', 'schema-update', 'version', 'volumes']): for item in result[next(iter(result.keys()))]: sys.stdout.write(item['name'] + '\n') if (status != 'ok'): exit(1)