Skip to content

Commit

Permalink
CBQE-5999: [37/n] [28/n] Add additional restore start/end tests
Browse files Browse the repository at this point in the history
Change-Id: Ifbdc8a2e10300559bf5d6ed8ca4b7b129e357d3e
Reviewed-on: http://review.couchbase.org/c/testrunner/+/131363
Tested-by: Thuan Nguyen <soccon@gmail.com>
Reviewed-by: Thuan Nguyen <soccon@gmail.com>
Reviewed-by: Carlos Gonzalez <carlos.gonzalez@couchbase.com>
Reviewed-on: http://review.couchbase.org/c/testrunner/+/136186
Reviewed-by: James Lee <james.lee@couchbase.com>
Tested-by: Asad Zaidi <asad.zaidi@couchbase.com>
  • Loading branch information
jamesl33 authored and Asad Zaidi committed Sep 16, 2020
1 parent 4ff396f commit 2b535e8
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 10 deletions.
4 changes: 4 additions & 0 deletions conf/entbackuprestore/entbackuprestore-objstore.conf
Expand Up @@ -47,4 +47,8 @@ ent_backup_restore.enterprise_backup_restore_test.EnterpriseBackupRestoreTest:
test_config_create_multiple_repos_with_remove_staging_directory,objstore_provider=s3,GROUP=P1
test_info_with_remove_staging_directory,objstore_provider=s3,GROUP=P1
test_remove_with_remove_staging_directory,objstore_provider=s3,GROUP=P1
test_restore_single_full_backup,objstore_provider=s3
test_restore_single_incr_backup,objstore_provider=s3
test_restore_with_remove_staging_directory,objstore_provider=s3,GROUP=P1
test_start_full_end_incr,objstore_provider=s3
test_start_incr_end_full,objstore_provider=s3
4 changes: 4 additions & 0 deletions conf/entbackuprestore/py-entbackuprestore.conf
@@ -1,5 +1,9 @@
ent_backup_restore.enterprise_backup_restore_test.EnterpriseBackupRestoreTest:
test_backup_restore_sanity,items=1000
test_restore_single_full_backup
test_restore_single_incr_backup
test_start_full_end_incr
test_start_incr_end_full
test_backup_restore_sanity,lww_new=True,items=1000,expected_error=Error restoring cluster: Unable to restore data because the backup for the `default` uses seqno based conflict resolution, but the target bucket `default` uses lww based conflict resolution
test_backup_restore_sanity,lww=True,lww_new=False,items=1000,expected_error=Error restoring cluster: Unable to restore data because the backup for the `default` uses lww based conflict resolution, but the target bucket `default` uses seqno based conflict resolution
# MB-21795
Expand Down
22 changes: 12 additions & 10 deletions pytests/ent_backup_restore/enterprise_backup_restore_base.py
Expand Up @@ -553,16 +553,17 @@ def backup_cluster(self, threads_count=1):
if "4.6" <= self.cbbkmgr_version[:3]:
self.cluster_flag = "--cluster"

args = "backup --archive {}{} ".format(self.objstore_provider.schema_prefix() + self.backupset.objstore_bucket + '/' if self.objstore_provider else '', self.backupset.directory)
args += "--repo {} ".format(self.backupset.name)
args += "{} http{}://{}:{}{} ".format(self.cluster_flag, url_format, self.backupset.cluster_host.ip, secure_port, self.backupset.cluster_host.port)
args += "{} ".format(user_input)
args += "{} ".format(password_input)
args += "{} ".format('--obj-staging-dir ' + self.backupset.objstore_staging_directory if self.objstore_provider else '')
args += "{} ".format('--obj-endpoint ' + self.backupset.objstore_endpoint if self.objstore_provider and self.backupset.objstore_endpoint else '')
args += "{} ".format('--obj-region ' + self.backupset.objstore_region if self.objstore_provider and self.backupset.objstore_region else '')
args += "{} ".format('--obj-access-key-id ' + self.backupset.objstore_access_key_id if self.objstore_provider and self.backupset.objstore_access_key_id else '')
args += "{}".format('--obj-secret-access-key ' + self.backupset.objstore_secret_access_key if self.objstore_provider and self.backupset.objstore_secret_access_key else '')
args = "backup --archive {}{}".format(self.objstore_provider.schema_prefix() + self.backupset.objstore_bucket + '/' if self.objstore_provider else '', self.backupset.directory)
args += " --repo {}".format(self.backupset.name)
args += " {} http{}://{}:{}{}".format(self.cluster_flag, url_format, self.backupset.cluster_host.ip, secure_port, self.backupset.cluster_host.port)
args += " {}".format(user_input)
args += " {}".format(password_input)
args += "{}".format(' --full-backup' if self.backupset.full_backup else '')
args += "{}".format(' --obj-staging-dir ' + self.backupset.objstore_staging_directory if self.objstore_provider else '')
args += "{}".format(' --obj-endpoint ' + self.backupset.objstore_endpoint if self.objstore_provider and self.backupset.objstore_endpoint else '')
args += "{}".format(' --obj-region ' + self.backupset.objstore_region if self.objstore_provider and self.backupset.objstore_region else '')
args += "{}".format(' --obj-access-key-id ' + self.backupset.objstore_access_key_id if self.objstore_provider and self.backupset.objstore_access_key_id else '')
args += "{}".format(' --obj-secret-access-key ' + self.backupset.objstore_secret_access_key if self.objstore_provider and self.backupset.objstore_secret_access_key else '')
args += "{}".format(' --s3-force-path-style' if self.objstore_provider and self.objstore_provider.schema_prefix() == 's3://' else '')

if self.backupset.no_ssl_verify:
Expand Down Expand Up @@ -2736,6 +2737,7 @@ def __init__(self):
self.current_bkrs_client_version = None
self.bkrs_client_upgrade = False
self.bwc_version = None
self.full_backup = False

# Common configuration which is to be shared accross cloud providers
self.objstore_access_key_id = ""
Expand Down
48 changes: 48 additions & 0 deletions pytests/ent_backup_restore/enterprise_backup_restore_test.py
Expand Up @@ -4637,3 +4637,51 @@ def test_restore_start_after_end(self):
self.assertEqual(len(output), 1)
self.assertIn("start point", output[0])
self.assertIn("is after end point", output[0])

def test_restore_single_full_backup(self):
gen = BlobGenerator("ent-backup", "ent-backup-", self.value_size, end=self.num_items)
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_create_validate()
self.backup_cluster_validate()
self.backupset.start = 1
self.backupset.end = 1
self._all_buckets_flush()
self.backup_restore_validate()

def test_restore_single_incr_backup(self):
gen = BlobGenerator("ent-backup", "ent-backup-", self.value_size, end=self.num_items)
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_create_validate()
for _ in range(2):
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_cluster_validate()
self.backupset.start = 2
self.backupset.end = 2
self._all_buckets_flush()
self.backup_restore_validate()

def test_start_full_end_incr(self):
gen = BlobGenerator("ent-backup", "ent-backup-", self.value_size, end=self.num_items)
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_create_validate()
for _ in range(2):
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_cluster_validate()
self.backupset.start = 1
self.backupset.end = 2
self._all_buckets_flush()
self.backup_restore_validate()

def test_start_incr_end_full(self):
gen = BlobGenerator("ent-backup", "ent-backup-", self.value_size, end=self.num_items)
self._load_all_buckets(self.master, gen, "create", 0)
self.backup_create_validate()
for _ in range(2):
self.backup_cluster_validate()
self._load_all_buckets(self.master, gen, "create", 0)
self.backupset.full_backup = True
self.backup_cluster_validate()
self.backupset.start = 2
self.backupset.end = 3
self._all_buckets_flush()
self.backup_restore_validate()

0 comments on commit 2b535e8

Please sign in to comment.