apply backup retention policy

part of #441
This commit is contained in:
Girish Ramakrishnan
2020-05-14 20:05:27 -07:00
parent d992702b87
commit af9e3e38ce
7 changed files with 140 additions and 85 deletions
+14 -14
View File
@@ -80,7 +80,7 @@ describe('backups', function () {
provider: 'filesystem',
password: 'supersecret',
backupFolder: BACKUP_DIR,
retentionPolicy: { keepWithin: 1 },
retentionPolicy: { keepWithinSecs: 1 },
format: 'tgz'
})
], done);
@@ -277,25 +277,26 @@ describe('backups', function () {
describe('filesystem', function () {
var backupInfo1;
var gBackupConfig = {
var backupConfig = {
provider: 'filesystem',
backupFolder: path.join(os.tmpdir(), 'backups-test-filesystem'),
format: 'tgz'
format: 'tgz',
retentionPolicy: { keepWithinSecs: 10000 }
};
before(function (done) {
rimraf.sync(gBackupConfig.backupFolder);
rimraf.sync(backupConfig.backupFolder);
done();
});
after(function (done) {
rimraf.sync(gBackupConfig.backupFolder);
rimraf.sync(backupConfig.backupFolder);
done();
});
it('fails to set backup config for non-existing folder', function (done) {
settings.setBackupConfig(gBackupConfig, function (error) {
settings.setBackupConfig(backupConfig, function (error) {
expect(error).to.be.a(BoxError);
expect(error.reason).to.equal(BoxError.BAD_FIELD);
@@ -304,9 +305,9 @@ describe('backups', function () {
});
it('succeeds to set backup config', function (done) {
mkdirp.sync(gBackupConfig.backupFolder);
mkdirp.sync(backupConfig.backupFolder);
settings.setBackupConfig(gBackupConfig, function (error) {
settings.setBackupConfig(backupConfig, function (error) {
expect(error).to.be(null);
done();
@@ -318,10 +319,9 @@ describe('backups', function () {
if (require('child_process').execSync('/usr/bin/mysqldump --version').toString().indexOf('MariaDB') !== -1) return done();
createBackup(function (error, result) {
console.dir(error);
expect(error).to.be(null);
expect(fs.statSync(path.join(gBackupConfig.backupFolder, 'snapshot/box.tar.gz')).nlink).to.be(2); // hard linked to a rotated backup
expect(fs.statSync(path.join(gBackupConfig.backupFolder, `${result.id}.tar.gz`)).nlink).to.be(2);
expect(fs.statSync(path.join(backupConfig.backupFolder, 'snapshot/box.tar.gz')).nlink).to.be(2); // hard linked to a rotated backup
expect(fs.statSync(path.join(backupConfig.backupFolder, `${result.id}.tar.gz`)).nlink).to.be(2);
backupInfo1 = result;
@@ -335,9 +335,9 @@ console.dir(error);
createBackup(function (error, result) {
expect(error).to.be(null);
expect(fs.statSync(path.join(gBackupConfig.backupFolder, 'snapshot/box.tar.gz')).nlink).to.be(2); // hard linked to a rotated backup
expect(fs.statSync(path.join(gBackupConfig.backupFolder, `${result.id}.tar.gz`)).nlink).to.be(2); // hard linked to new backup
expect(fs.statSync(path.join(gBackupConfig.backupFolder, `${backupInfo1.id}.tar.gz`)).nlink).to.be(1); // not hard linked anymore
expect(fs.statSync(path.join(backupConfig.backupFolder, 'snapshot/box.tar.gz')).nlink).to.be(2); // hard linked to a rotated backup
expect(fs.statSync(path.join(backupConfig.backupFolder, `${result.id}.tar.gz`)).nlink).to.be(2); // hard linked to new backup
expect(fs.statSync(path.join(backupConfig.backupFolder, `${backupInfo1.id}.tar.gz`)).nlink).to.be(1); // not hard linked anymore
done();
});