示例#1
0
  def testArgsForGCDEmulator(self):
    gcd_root_mock = self.StartObjectPatch(datastore_util, 'GetGCDRoot')
    gcd_root_mock.return_value = 'pathtogcdroot'

    emulator_executable = 'cloud_datastore_emulator'
    gcd_executable = os.path.join(gcd_root_mock.return_value,
                                  emulator_executable)
    if platforms.OperatingSystem.IsWindows():
      gcd_executable += '.cmd'
      args_tool = execution_utils.ArgsForCMDTool
    else:
      args_tool = execution_utils.ArgsForExecutableTool
    self.assertEqual(args_tool(gcd_executable, 'args'),
                     datastore_util.ArgsForGCDEmulator(['args']))
示例#2
0
  def _DoTestPrepareGCDDataDir(self):
    gcd_root_mock = self.StartObjectPatch(datastore_util, 'GetGCDRoot')
    gcd_root_mock.return_value = 'pathtogcdroot'
    exec_mock = self.StartObjectPatch(util, 'Exec')
    process = mock.Mock()
    process.poll.return_value = 0
    exec_mock.return_value.__enter__.return_value = process
    prefix_mock = self.StartObjectPatch(util, 'PrefixOutput')

    data_dir = self.CreateTempDir()
    args = type(str('args_mock'),
                (object,),
                dict(data_dir=data_dir))

    # Nothing should be done if data-dir is non-empty
    tmp_file = self.Touch(directory=data_dir)
    datastore_util.PrepareGCDDataDir(args)
    self.assertFalse(exec_mock.called)

    # gcd create should be called if data-dr is empty
    exec_mock.reset_mock()
    prefix_mock.reset_mock()
    os.remove(tmp_file)
    datastore_util.PrepareGCDDataDir(args)
    create_args = ['create',
                   '--project_id={0}'.format(self.Project()),
                   data_dir,]
    exec_args = datastore_util.ArgsForGCDEmulator(create_args)
    exec_mock.assert_called_once_with(exec_args)
    prefix_mock.assert_called_once_with(process, 'datastore')

    # gcd create should be called if data-dir does not exist
    exec_mock.reset_mock()
    prefix_mock.reset_mock()
    os.rmdir(data_dir)
    datastore_util.PrepareGCDDataDir(args)
    exec_mock.assert_called_once_with(exec_args)
    prefix_mock.assert_called_once_with(process, 'datastore')

    # Should throw exception if PrepareGCDDataDir fails
    process.poll.return_value = 1
    with self.assertRaises(datastore_util.UnableToPrepareDataDir):
      datastore_util.PrepareGCDDataDir(args)
示例#3
0
  def _DoTestStartGCDEmulator(self):
    gcd_root_mock = self.StartObjectPatch(datastore_util, 'GetGCDRoot')
    gcd_root_mock.return_value = 'pathtogcdroot'
    exec_mock = self.StartObjectPatch(util, 'Exec')

    args = type(str('args_mock'),
                (object,),
                dict(host_port=arg_parsers.HostPort('localhost', '8080'),
                     store_on_disk=True,
                     data_dir='temp_dir',
                     consistency=0.7))
    datastore_util.StartGCDEmulator(args)
    start_args = ['start',
                  '--host=localhost',
                  '--port=8080',
                  '--store_on_disk=True',
                  '--consistency=0.7',
                  '--allow_remote_shutdown',
                  'temp_dir',]
    exec_args = datastore_util.ArgsForGCDEmulator(start_args)
    exec_mock.assert_called_once_with(exec_args, log_file=None)