Beispiel #1
0
    def test_backup_data(self):
        # Test for unsupported storage backend.
        flexmock(backup_recovery_constants.StorageTypes()).\
          should_receive("get_storage_types").and_return([])
        self.assertEquals(None, zookeeper_backup.backup_data('blah', ''))

        # Test with failure to tar ZK data file.
        flexmock(zookeeper_backup).should_receive('dump_zk').\
          and_return()
        flexmock(backup_recovery_helper).should_receive('tar_backup_files').\
          and_return(None)
        flexmock(backup_recovery_helper).should_receive('remove').\
          and_return()
        flexmock(backup_recovery_helper).\
          should_receive('delete_local_backup_file').\
          and_return()
        flexmock(backup_recovery_helper).should_receive('move_secondary_backup').\
          and_return()
        self.assertEquals(None, zookeeper_backup.backup_data('', ''))

        # Test with successful tar creation and local storage.
        flexmock(backup_recovery_helper).should_receive('tar_backup_files').\
          and_return('some/snapshot')
        flexmock(backup_recovery_helper).should_receive('remove').\
          and_return()
        flexmock(backup_recovery_helper).\
          should_receive('delete_secondary_backup').\
          and_return()
        self.assertEquals('some/snapshot',
                          zookeeper_backup.backup_data('', ''))

        # Test with GCS as storage backend and failure to upload.
        flexmock(gcs_helper).should_receive('upload_to_bucket').and_return(
            False)
        flexmock(backup_recovery_helper).should_receive('move_secondary_backup').\
          and_return()
        flexmock(backup_recovery_helper).should_receive('remove').\
          and_return()
        flexmock(backup_recovery_helper).\
          should_receive('delete_local_backup_file').\
          and_return()
        self.assertEquals(
            None,
            zookeeper_backup.backup_data(
                backup_recovery_constants.StorageTypes.GCS, ''))

        # Test with GCS as storage backend and successful upload.
        flexmock(gcs_helper).should_receive('upload_to_bucket').and_return(
            True)
        flexmock(backup_recovery_helper).\
          should_receive('delete_secondary_backup').\
          and_return()
        flexmock(backup_recovery_helper).should_receive('remove').\
          and_return()
        flexmock(backup_recovery_helper).\
          should_receive('delete_local_backup_file').\
          and_return()
        self.assertIsNotNone(
            zookeeper_backup.backup_data(
                backup_recovery_constants.StorageTypes.GCS, ''))
  def test_backup_data(self):
    # Test for unsupported storage backend.
    flexmock(backup_recovery_constants.StorageTypes()).\
      should_receive("get_storage_types").and_return([])
    self.assertEquals(None, zookeeper_backup.backup_data('blah', ''))

    # Test with failure to tar ZK data file.
    flexmock(zookeeper_backup).should_receive('dump_zk').\
      and_return()
    flexmock(backup_recovery_helper).should_receive('tar_backup_files').\
      and_return(None)
    flexmock(backup_recovery_helper).should_receive('remove').\
      and_return()
    flexmock(backup_recovery_helper).\
      should_receive('delete_local_backup_file').\
      and_return()
    flexmock(backup_recovery_helper).should_receive('move_secondary_backup').\
      and_return()
    self.assertEquals(None, zookeeper_backup.backup_data('', ''))

    # Test with successful tar creation and local storage.
    flexmock(backup_recovery_helper).should_receive('tar_backup_files').\
      and_return('some/snapshot')
    flexmock(backup_recovery_helper).should_receive('remove').\
      and_return()
    flexmock(backup_recovery_helper).\
      should_receive('delete_secondary_backup').\
      and_return()
    self.assertEquals('some/snapshot', zookeeper_backup.backup_data('', ''))

    # Test with GCS as storage backend and failure to upload.
    flexmock(gcs_helper).should_receive('upload_to_bucket').and_return(False)
    flexmock(backup_recovery_helper).should_receive('move_secondary_backup').\
      and_return()
    flexmock(backup_recovery_helper).should_receive('remove').\
      and_return()
    flexmock(backup_recovery_helper).\
      should_receive('delete_local_backup_file').\
      and_return()
    self.assertEquals(None, zookeeper_backup.backup_data(
      backup_recovery_constants.StorageTypes.GCS, ''))

    # Test with GCS as storage backend and successful upload.
    flexmock(gcs_helper).should_receive('upload_to_bucket').and_return(True)
    flexmock(backup_recovery_helper).\
      should_receive('delete_secondary_backup').\
      and_return()
    flexmock(backup_recovery_helper).should_receive('remove').\
      and_return()
    flexmock(backup_recovery_helper).\
      should_receive('delete_local_backup_file').\
      and_return()
    self.assertIsNotNone(zookeeper_backup.backup_data(
      backup_recovery_constants.StorageTypes.GCS, ''))
Beispiel #3
0
  def do_zookeeper_backup(self, storage, path):
    """ Top level function for doing Zookeeper backups.

    Args:
      storage: A str, one of the StorageTypes class members.
      path: A str, the name of the backup file to be created.
    Returns:
      A JSON string to return to the client.
    """
    success = True
    reason = "success"
    try:
      logging.info("Acquiring lock for zk backup.")
      self.__zookeeper_backup_lock.acquire(True)
      logging.info("Got the lock for zk backup.")
      if not zookeeper_backup.backup_data(storage, path):
        return self.bad_request("ZK backup failed!")
      else:
        logging.info("Successful zk backup!")
    except backup_exceptions.BRException, exception:
      logging.error("Unable to complete zk backup: {0}".format(exception))
      success = False
      reason = str(exception)
Beispiel #4
0
    def do_zookeeper_backup(self, storage, path):
        """ Top level function for doing Zookeeper backups.

    Args:
      storage: A str, one of the StorageTypes class members.
      path: A str, the name of the backup file to be created.
    Returns:
      A JSON string to return to the client.
    """
        success = True
        reason = "success"
        try:
            logging.info("Acquiring lock for zk backup.")
            self.__zookeeper_backup_lock.acquire(True)
            logging.info("Got the lock for zk backup.")
            if not zookeeper_backup.backup_data(storage, path):
                return self.bad_request("ZK backup failed!")
            else:
                logging.info("Successful zk backup!")
        except backup_exceptions.BRException, exception:
            logging.error(
                "Unable to complete zk backup: {0}".format(exception))
            success = False
            reason = str(exception)