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, cassandra_backup.backup_data("blah", ""))

        flexmock(cassandra_backup).should_receive("clear_old_snapshots").and_return()

        # Test with failure to create new snapshots.
        flexmock(cassandra_backup).should_receive("create_snapshot").and_return(False)
        self.assertEquals(None, cassandra_backup.backup_data("", ""))

        # Test with missing Cassandra snapshots.
        flexmock(cassandra_backup).should_receive("create_snapshot").and_return(True)
        flexmock(backup_recovery_helper).should_receive("get_snapshot_paths").and_return([])
        self.assertEquals(None, cassandra_backup.backup_data("", ""))

        # Test with at least one Cassandra snapshot and not enough disk space.
        flexmock(backup_recovery_helper).should_receive("get_snapshot_paths").and_return(["some/snapshot"])
        flexmock(backup_recovery_helper).should_receive("enough_disk_space").with_args("cassandra").and_return(False)
        self.assertEquals(None, cassandra_backup.backup_data("", ""))

        # Test with at least one Cassandra snapshot and failure to create the tar.
        flexmock(backup_recovery_helper).should_receive("enough_disk_space").with_args("cassandra").and_return(True)
        flexmock(backup_recovery_helper).should_receive("tar_backup_files").and_return(None)
        flexmock(cassandra_backup).should_receive("clear_old_snapshots").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, cassandra_backup.backup_data("", ""))

        # Test with successful tar creation and local storage.
        flexmock(backup_recovery_helper).should_receive("get_snapshot_paths").and_return(["some/snapshot"])
        flexmock(backup_recovery_helper).should_receive("tar_backup_files").and_return("some/tar")
        flexmock(cassandra_backup).should_receive("clear_old_snapshots").and_return()
        flexmock(backup_recovery_helper).should_receive("delete_secondary_backup").and_return()
        self.assertIsNotNone(cassandra_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(cassandra_backup).should_receive("clear_old_snapshots").and_return()
        flexmock(backup_recovery_helper).should_receive("delete_local_backup_file").and_return()
        self.assertEquals(None, cassandra_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(cassandra_backup).should_receive("clear_old_snapshots").and_return()
        flexmock(backup_recovery_helper).should_receive("delete_local_backup_file").and_return()
        self.assertIsNotNone(cassandra_backup.backup_data(backup_recovery_constants.StorageTypes.GCS, ""))
Example #2
0
  def do_cassandra_backup(self, storage, path):
    """ Top level function for doing Cassandra 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 db backup.")
      self.__cassandra_backup_lock.acquire(True)
      logging.info("Got the lock for db backup.")
      if not cassandra_backup.backup_data(storage, path):
        return self.bad_request("DB backup failed!")
      else:
        logging.info("Successful db backup!")
    except backup_exceptions.BRException, exception:
      logging.error("Unable to complete db backup: {0}".format(exception))
      success = False
      reason = str(exception)
Example #3
0
    def do_cassandra_backup(self, storage, path):
        """ Top level function for doing Cassandra 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 db backup.")
            self.__cassandra_backup_lock.acquire(True)
            logging.info("Got the lock for db backup.")
            if not cassandra_backup.backup_data(storage, path):
                return self.bad_request("DB backup failed!")
            else:
                logging.info("Successful db backup!")
        except backup_exceptions.BRException, exception:
            logging.error(
                "Unable to complete db backup: {0}".format(exception))
            success = False
            reason = str(exception)
  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, cassandra_backup.backup_data('blah', ''))

    flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
      and_return()

    # Test with failure to create new snapshots.
    flexmock(cassandra_backup).should_receive('create_snapshot').\
      and_return(False)
    self.assertEquals(None, cassandra_backup.backup_data('', ''))

    # Test with missing Cassandra snapshots.
    flexmock(cassandra_backup).should_receive('create_snapshot').\
      and_return(True)
    flexmock(cassandra_backup).\
      should_receive('get_cassandra_snapshot_file_names').\
      and_return([])
    self.assertEquals(None, cassandra_backup.backup_data('', ''))

    # Test with at least one Cassandra snapshot and failure to create the tar.
    flexmock(cassandra_backup).\
      should_receive('get_cassandra_snapshot_file_names').\
      and_return(['some/snapshot'])
    flexmock(cassandra_backup).should_receive('tar_backup_files').\
      and_return(None)
    flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
      and_return()
    flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
      and_return()
    flexmock(cassandra_backup).should_receive('move_secondary_backup').\
      and_return()
    self.assertEquals(None, cassandra_backup.backup_data('', ''))

    # Test with successful tar creation and local storage.
    flexmock(cassandra_backup).\
      should_receive('get_cassandra_snapshot_file_names').\
      and_return(['some/snapshot'])
    flexmock(cassandra_backup).should_receive('tar_backup_files').\
      and_return('some/tar')
    flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
      and_return()
    flexmock(cassandra_backup).should_receive('delete_secondary_backup').\
      and_return()
    self.assertIsNotNone(cassandra_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(cassandra_backup).should_receive('move_secondary_backup').\
      and_return()
    flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
      and_return()
    flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
      and_return()
    self.assertEquals(None, cassandra_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(cassandra_backup).should_receive('delete_secondary_backup').\
      and_return()
    flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
      and_return()
    flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
      and_return()
    self.assertIsNotNone(cassandra_backup.backup_data(
      backup_recovery_constants.StorageTypes.GCS, ''))
Example #5
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, cassandra_backup.backup_data('blah', ''))

        flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
          and_return()

        # Test with failure to create new snapshots.
        flexmock(cassandra_backup).should_receive('create_snapshot').\
          and_return(False)
        self.assertEquals(None, cassandra_backup.backup_data('', ''))

        # Test with missing Cassandra snapshots.
        flexmock(cassandra_backup).should_receive('create_snapshot').\
          and_return(True)
        flexmock(cassandra_backup).\
          should_receive('get_cassandra_snapshot_file_names').\
          and_return([])
        self.assertEquals(None, cassandra_backup.backup_data('', ''))

        # Test with at least one Cassandra snapshot and failure to create the tar.
        flexmock(cassandra_backup).\
          should_receive('get_cassandra_snapshot_file_names').\
          and_return(['some/snapshot'])
        flexmock(cassandra_backup).should_receive('tar_backup_files').\
          and_return(None)
        flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
          and_return()
        flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
          and_return()
        flexmock(cassandra_backup).should_receive('move_secondary_backup').\
          and_return()
        self.assertEquals(None, cassandra_backup.backup_data('', ''))

        # Test with successful tar creation and local storage.
        flexmock(cassandra_backup).\
          should_receive('get_cassandra_snapshot_file_names').\
          and_return(['some/snapshot'])
        flexmock(cassandra_backup).should_receive('tar_backup_files').\
          and_return('some/tar')
        flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
          and_return()
        flexmock(cassandra_backup).should_receive('delete_secondary_backup').\
          and_return()
        self.assertIsNotNone(cassandra_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(cassandra_backup).should_receive('move_secondary_backup').\
          and_return()
        flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
          and_return()
        flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
          and_return()
        self.assertEquals(
            None,
            cassandra_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(cassandra_backup).should_receive('delete_secondary_backup').\
          and_return()
        flexmock(cassandra_backup).should_receive('clear_old_snapshots').\
          and_return()
        flexmock(cassandra_backup).should_receive('delete_local_backup_file').\
          and_return()
        self.assertIsNotNone(
            cassandra_backup.backup_data(
                backup_recovery_constants.StorageTypes.GCS, ''))