Ejemplo n.º 1
0
    def test_run_backup(self):
        zookeeper = flexmock()

        # Test with entities.
        fake_backup = flexmock(
            backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                   []))
        fake_backup.should_receive("get_entity_batch").\
          and_return([FAKE_ENCODED_ENTITY])
        fake_backup.should_receive("process_entity").\
          with_args(FAKE_ENCODED_ENTITY).and_return()
        fake_backup.should_receive("get_entity_batch").\
          and_return([])
        self.assertEquals(None, fake_backup.run_backup())

        # Test with no entities.
        fake_backup = flexmock(
            backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                   []))
        fake_backup.should_receive("get_entity_batch").and_return([])
        self.assertEquals(None, fake_backup.run_backup())

        # Test with exception tossed.
        fake_backup = flexmock(
            backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                   []))
        fake_backup.should_receive("get_entity_batch").\
          and_raise(AppScaleDBConnectionError)
        flexmock(time).should_receive('sleep').and_return()
        fake_backup.should_receive("get_entity_batch").and_return([])
        self.assertEquals(None, fake_backup.run_backup())
Ejemplo n.º 2
0
    def test_run(self):
        zookeeper = flexmock()
        ds_factory = flexmock(appscale_datastore_batch.DatastoreFactory)
        ds_factory.should_receive("getDatastore").and_return(FakeDatastore())
        fake_backup = flexmock(
            backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                   []))
        fake_backup.should_receive('set_filename').and_return()
        fake_backup.should_receive('backup_source_code').at_most().times(1).\
          and_return()

        # Test with failure to get the backup lock.
        fake_backup.should_receive('get_backup_lock').and_return(False)
        flexmock(time).should_receive('sleep').and_return()

        # Test with successfully obtaining the backup lock.
        fake_backup.should_receive('get_backup_lock').and_return('some/path')
        fake_backup.should_receive('run_backup').and_return()

        # ... and successfully releasing the lock.
        zookeeper.should_receive('release_lock_with_path').and_return(True)
        self.assertEquals(None, fake_backup.run())

        # ... and failure to release the lock.
        zookeeper.should_receive('release_lock_with_path').\
          and_raise(ZKTransactionException)
        self.assertEquals(None, fake_backup.run())
Ejemplo n.º 3
0
 def test_get_entity_batch(self):
     zookeeper = flexmock()
     fake_backup = flexmock(
         backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                []))
     fake_backup.db_access = FakeDatastore()
     self.assertEquals([],
                       fake_backup.get_entity_batch('app_id', 100, True))
Ejemplo n.º 4
0
  def test_get_backup_lock(self):
    zookeeper = flexmock()
    zookeeper.should_receive("get_lock_with_path").and_return(True)
    fake_backup = flexmock(backup.DatastoreBackup('app_id', zookeeper,
      "cassandra", False, []))

    # Test with successfully obtaining the backup lock.
    self.assertEquals(True, fake_backup.get_backup_lock())
Ejemplo n.º 5
0
    def test_process_entity(self):
        zookeeper = flexmock()
        fake_backup = flexmock(
            backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                   []))

        flexmock(re).should_receive('match').at_least().times(2).and_return(
            None)
        flexmock(entity_utils).\
          should_receive('get_prefix_from_entity_key').and_return('app_prefix')
        flexmock(entity_utils).\
          should_receive('get_root_key_from_entity_key').and_return('root_key')
        fake_backup.zoo_keeper.should_receive('get_transaction_id').\
          and_return('txn_id')

        # Test successful operation.
        fake_backup.zoo_keeper.should_receive('acquire_lock').and_return(True)

        # ... with valid entity.
        fake_backup.should_receive('verify_entity').and_return(True)
        fake_backup.should_receive('dump_entity').and_return(True)
        fake_backup.zoo_keeper.should_receive("release_lock").and_return()
        self.assertEquals(True,
                          fake_backup.process_entity(FAKE_ENCODED_ENTITY))

        # ... with blacklisted entity.
        fake_backup.should_receive('verify_entity').and_return(False)
        flexmock(entity_utils).should_receive('fetch_journal_entry').\
          and_return(FAKE_ENCODED_ENTITY)
        fake_backup.should_receive('dump_entity').and_return(True)
        fake_backup.zoo_keeper.should_receive("release_lock").and_return()
        self.assertEquals(True,
                          fake_backup.process_entity(FAKE_ENCODED_ENTITY))

        # Test with failure to get the entity lock.
        fake_backup.zoo_keeper.should_receive('acquire_lock').and_return(False)
        fake_backup.zoo_keeper.\
          should_receive("notify_failed_transaction").and_return()
        fake_backup.zoo_keeper.should_receive("release_lock").and_return()
        flexmock(time).should_receive('sleep').and_return()
        fake_backup.zoo_keeper.should_receive('acquire_lock').and_return(True)
        self.assertEquals(True,
                          fake_backup.process_entity(FAKE_ENCODED_ENTITY))
Ejemplo n.º 6
0
  def test_verify_entity(self):
    zookeeper = flexmock()
    fake_backup = flexmock(backup.DatastoreBackup('app_id', zookeeper,
      "cassandra", False, []))
    flexmock(entity_utils).\
      should_receive('get_prefix_from_entity_key').and_return('app_prefix')

    # Test with valid entity.
    zookeeper.should_receive('is_blacklisted').and_return(False)
    self.assertEquals(True, fake_backup.verify_entity('key', 'txn_id'))

    # Test with blacklisted entity.
    zookeeper.should_receive('is_blacklisted').and_return(True)
    self.assertEquals(False, fake_backup.verify_entity('key', 'txn_id'))

    # Test with exception tossed.
    zookeeper.should_receive('is_blacklisted').and_raise(ZKTransactionException)
    flexmock(time).should_receive('sleep').and_return()
    flexmock(entity_utils).\
      should_receive('get_prefix_from_entity_key').and_return('app_prefix')
    fake_backup.verify_entity('key', 'txn_id')
Ejemplo n.º 7
0
 def test_init(self):
     zookeeper = flexmock()
     fake_backup = flexmock(
         backup.DatastoreBackup('app_id', zookeeper, "cassandra", False,
                                []))