s3_rotate 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb5f480435edb48a8d0d8195774fd5280d988ab2c219351a9fa18aba4ff5f89e
4
- data.tar.gz: 6da33cabbbd97c8b5256fcb4f0cbd282606745676b6fbaecb746a6b2868925a5
3
+ metadata.gz: 32f1d0d129368b12bdfbb621c06d0b7799f01aede254856ccdd63f1fac30da5b
4
+ data.tar.gz: 769f5b7aeb8123a1460ed2ade747863e5946b321f6f2211cb1dc4f647885f3ab
5
5
  SHA512:
6
- metadata.gz: c11dd83c9a0aa17194542d8e398af2f992d64a9c9b1d4a1182fbda65ba5aa67a2bcf368753d2f70e55f2e4827d7de6c54ba0db7457bb50a2b027a9c24ca04574
7
- data.tar.gz: 7375433ebc482f99592e8e1b241c4d479c72f2e54ef03dfde53d4eba2c078f703dfe1437dc68cf05310e06ae99e99c82faee57a0ac99e19a2a868689a324afba
6
+ metadata.gz: dbf4901fca73d394e29a5fcf8abff6d47d51be85e88b9daeb5333a9c300a8d9941e2f5fc305a9bca91891c36be8e10572d4a5dbf3d6087bb501620a79a8d65a1
7
+ data.tar.gz: 467ca125ee3a9e62f56a85d075fce1b5c07e98ec10fd8ee1e394dff8b454126d45ab2ed60667865a72a7376b29444039a2ef11c0eccc62bdb953d71befb5c75b
@@ -61,7 +61,7 @@ module S3Rotate
61
61
  # @return Fog::Storage::AWS::Directory instance.
62
62
  #
63
63
  def remote_backups(backup_name, type)
64
- connection.directories.get(bucket_name, prefix: "/#{backup_name}/#{type}")
64
+ connection.directories.get(bucket_name, prefix: "#{backup_name}/#{type}")
65
65
  end
66
66
 
67
67
  #
@@ -75,7 +75,7 @@ module S3Rotate
75
75
  # @return Boolean, True or False, whether the remote backup exists
76
76
  #
77
77
  def exists?(backup_name, backup_date, type, extension=nil)
78
- connection.directories.get(bucket_name, prefix: "/#{backup_name}/#{type}/#{backup_date.to_s}#{extension}").files.any?
78
+ connection.directories.get(bucket_name, prefix: "#{backup_name}/#{type}/#{backup_date.to_s}#{extension}").files.any?
79
79
  end
80
80
 
81
81
  #
@@ -90,10 +90,10 @@ module S3Rotate
90
90
  # @return created S3 Bucket File
91
91
  #
92
92
  def upload(backup_name, backup_date, type, extension, data)
93
- logger.info("uploading /#{backup_name}/#{type}/#{backup_date.to_s}#{extension}")
93
+ logger.info("uploading #{backup_name}/#{type}/#{backup_date.to_s}#{extension}")
94
94
 
95
95
  # 104857600 bytes => 100 megabytes
96
- bucket.files.create(key: "/#{backup_name}/#{type}/#{backup_date.to_s}#{extension}", body: data, multipart_chunk_size: 104857600)
96
+ bucket.files.create(key: "#{backup_name}/#{type}/#{backup_date.to_s}#{extension}", body: data, multipart_chunk_size: 104857600)
97
97
  end
98
98
 
99
99
  #
@@ -106,10 +106,25 @@ module S3Rotate
106
106
  # @return created S3 Bucket File
107
107
  #
108
108
  def copy(backup_name, file, type)
109
- logger.info("copying #{file.key} to /#{backup_name}/#{type}/#{file.key.split('/').last}")
109
+ logger.info("copying #{file.key} to #{backup_name}/#{type}/#{file.key.split('/').last}")
110
+
111
+ # can't copy files >5GB
112
+ # need to download them first, then re-upload them using multipart upload
113
+ # also download them to disk to prevent exceeding memory limits
114
+ open("s3_rotate.download.tmp", 'w+') do |f|
115
+ bucket.files.get(file.key) do |chunk,remaining_bytes,total_bytes|
116
+ f.write chunk
117
+ end
118
+ end
110
119
 
111
120
  # 104857600 bytes => 100 megabytes
112
- file.copy(@bucket_name, "/#{backup_name}/#{type}/#{file.key.split('/').last}")
121
+ remote_file = bucket.files.create(key: "#{backup_name}/#{type}/#{file.key.split('/').last}", body: File.open("s3_rotate.download.tmp"), multipart_chunk_size: 104857600)
122
+
123
+ # cleanup
124
+ File.delete("s3_rotate.download.tmp")
125
+
126
+ # return remote file
127
+ remote_file
113
128
  end
114
129
 
115
130
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.homepage = 'https://github.com/Whova/s3_rotate'
8
8
  s.license = 'MIT'
9
9
 
10
- s.version = '1.1.0'
10
+ s.version = '1.2.0'
11
11
  s.date = Date.today.to_s
12
12
 
13
13
  s.authors = ["Simon Ninon"]
@@ -65,23 +65,23 @@ describe S3Rotate::S3Client do
65
65
  describe '#remote_backups' do
66
66
 
67
67
  before do
68
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-01.tgz', body: 'some data')
69
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-02.tgz', body: 'some data')
70
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-02-03.tgz', body: 'some data')
71
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2021-02-04.tgz', body: 'some data')
72
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-03.tgz', body: 'some data')
73
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-04.tgz', body: 'some data')
74
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-05.tgz', body: 'some data')
68
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-01.tgz', body: 'some data')
69
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-02.tgz', body: 'some data')
70
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-02-03.tgz', body: 'some data')
71
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2021-02-04.tgz', body: 'some data')
72
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-03.tgz', body: 'some data')
73
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-04.tgz', body: 'some data')
74
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-05.tgz', body: 'some data')
75
75
  end
76
76
 
77
77
  it 'gets the remote backups' do
78
78
  expect(@client.remote_backups('backup_name', 'daily')).not_to eq nil
79
79
  expect(@client.remote_backups('backup_name', 'daily').files).not_to eq nil
80
80
  expect(@client.remote_backups('backup_name', 'daily').files.length).to eq 4
81
- expect(@client.remote_backups('backup_name', 'daily').files[0].key).to eq "/backup_name/daily/2020-01-01.tgz"
82
- expect(@client.remote_backups('backup_name', 'daily').files[1].key).to eq "/backup_name/daily/2020-01-02.tgz"
83
- expect(@client.remote_backups('backup_name', 'daily').files[2].key).to eq "/backup_name/daily/2020-02-03.tgz"
84
- expect(@client.remote_backups('backup_name', 'daily').files[3].key).to eq "/backup_name/daily/2021-02-04.tgz"
81
+ expect(@client.remote_backups('backup_name', 'daily').files[0].key).to eq "backup_name/daily/2020-01-01.tgz"
82
+ expect(@client.remote_backups('backup_name', 'daily').files[1].key).to eq "backup_name/daily/2020-01-02.tgz"
83
+ expect(@client.remote_backups('backup_name', 'daily').files[2].key).to eq "backup_name/daily/2020-02-03.tgz"
84
+ expect(@client.remote_backups('backup_name', 'daily').files[3].key).to eq "backup_name/daily/2021-02-04.tgz"
85
85
  end
86
86
 
87
87
  end
@@ -89,7 +89,7 @@ describe S3Rotate::S3Client do
89
89
  describe '#exists?' do
90
90
 
91
91
  before do
92
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-01.tgz', body: 'some data')
92
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-01.tgz', body: 'some data')
93
93
  end
94
94
 
95
95
  it 'returns true for existing backups' do
@@ -118,9 +118,9 @@ describe S3Rotate::S3Client do
118
118
 
119
119
  it 'uploads files' do
120
120
  @client.upload('backup_name', Date.new(2020, 1, 1), 'daily', '.tgz', 'hello world')
121
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily/2020-01-01.tgz').files.length).to eq 1
122
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily/2020-01-01.tgz').files.first.key).to eq '/backup_name/daily/2020-01-01.tgz'
123
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily/2020-01-01.tgz').files.first.body).to eq 'hello world'
121
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily/2020-01-01.tgz').files.length).to eq 1
122
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily/2020-01-01.tgz').files.first.key).to eq 'backup_name/daily/2020-01-01.tgz'
123
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily/2020-01-01.tgz').files.first.body).to eq 'hello world'
124
124
  end
125
125
 
126
126
  end
@@ -129,19 +129,19 @@ describe S3Rotate::S3Client do
129
129
 
130
130
  it 'copies backup' do
131
131
  # mock data
132
- file = @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
132
+ file = @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
133
133
 
134
134
  # perform test
135
135
  @client.copy('backup_name', file, 'weekly')
136
136
 
137
137
  # verify result
138
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 1
139
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-12.tgz'
140
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
138
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 1
139
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-12.tgz'
140
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
141
141
 
142
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 1
143
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
144
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
142
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 1
143
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
144
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
145
145
  end
146
146
 
147
147
  end
@@ -49,197 +49,197 @@ describe S3Rotate::BackupRotator do
49
49
 
50
50
  it 'rotates and cleanup when relevant' do
51
51
  # mock
52
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
53
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
54
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
55
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
56
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
57
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
58
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-06.tgz', body: 'some data')
59
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
60
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
52
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
53
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
54
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
55
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
56
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
57
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
58
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-06.tgz', body: 'some data')
59
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
60
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
61
61
 
62
62
  # perform test
63
63
  @rotator.rotate_daily('backup_name', 3)
64
64
 
65
65
  # verify result
66
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 3
67
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-15.tgz'
68
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
69
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-16.tgz'
70
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
71
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-17.tgz'
72
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
73
-
74
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
75
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-06.tgz'
76
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
77
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-01-13.tgz'
78
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
79
-
80
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
81
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
82
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
66
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 3
67
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-15.tgz'
68
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
69
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-16.tgz'
70
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
71
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-17.tgz'
72
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
73
+
74
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
75
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-06.tgz'
76
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
77
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-01-13.tgz'
78
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
79
+
80
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
81
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
82
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
83
83
  end
84
84
 
85
85
  it 'only cleanup when relevant' do
86
86
  # mock
87
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
88
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
89
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
90
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
91
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
92
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
93
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-11.tgz', body: 'some data')
94
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
95
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
87
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
88
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
89
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
90
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
91
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
92
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
93
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-11.tgz', body: 'some data')
94
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
95
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
96
96
 
97
97
  # perform test
98
98
  @rotator.rotate_daily('backup_name', 3)
99
99
 
100
100
  # verify result
101
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 3
102
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-15.tgz'
103
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
104
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-16.tgz'
105
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
106
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-17.tgz'
107
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
108
-
109
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 1
110
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-11.tgz'
111
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
112
-
113
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
114
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
115
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
101
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 3
102
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-15.tgz'
103
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
104
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-16.tgz'
105
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
106
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-17.tgz'
107
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
108
+
109
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 1
110
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-11.tgz'
111
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
112
+
113
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
114
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
115
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
116
116
  end
117
117
 
118
118
  it 'only rotates when relevant' do
119
119
  # mock
120
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
121
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
122
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
123
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-06.tgz', body: 'some data')
124
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
125
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
120
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
121
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
122
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
123
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-06.tgz', body: 'some data')
124
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
125
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
126
126
 
127
127
  # perform test
128
128
  @rotator.rotate_daily('backup_name', 3)
129
129
 
130
130
  # verify result
131
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 3
132
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
133
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
134
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
135
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
136
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
137
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
138
-
139
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
140
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-06.tgz'
141
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
142
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-01-13.tgz'
143
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
144
-
145
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
146
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
147
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
131
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 3
132
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
133
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
134
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
135
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
136
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
137
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
138
+
139
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
140
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-06.tgz'
141
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
142
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-01-13.tgz'
143
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
144
+
145
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
146
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
147
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
148
148
  end
149
149
 
150
150
  it 'rotates multiples when relevant' do
151
151
  # mock
152
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
153
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
154
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
155
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
156
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-20.tgz', body: 'some data')
157
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-21.tgz', body: 'some data')
158
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-24.tgz', body: 'some data')
159
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-27.tgz', body: 'some data')
160
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-29.tgz', body: 'some data')
161
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-06.tgz', body: 'some data')
162
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
163
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
152
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
153
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
154
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
155
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
156
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-20.tgz', body: 'some data')
157
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-21.tgz', body: 'some data')
158
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-24.tgz', body: 'some data')
159
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-27.tgz', body: 'some data')
160
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-29.tgz', body: 'some data')
161
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-06.tgz', body: 'some data')
162
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
163
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
164
164
 
165
165
  # perform test
166
166
  @rotator.rotate_daily('backup_name', 3)
167
167
 
168
168
  # verify result
169
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 3
170
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-24.tgz'
171
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
172
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-27.tgz'
173
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
174
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-29.tgz'
175
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
176
-
177
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 4
178
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-06.tgz'
179
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
180
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-01-13.tgz'
181
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
182
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].key).to eq '/backup_name/weekly/2020-01-20.tgz'
183
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].body).to eq 'some data'
184
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].key).to eq '/backup_name/weekly/2020-01-27.tgz'
185
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].body).to eq 'some data'
186
-
187
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
188
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
189
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
169
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 3
170
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-24.tgz'
171
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
172
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-27.tgz'
173
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
174
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-29.tgz'
175
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
176
+
177
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 4
178
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-06.tgz'
179
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
180
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-01-13.tgz'
181
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
182
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].key).to eq 'backup_name/weekly/2020-01-20.tgz'
183
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].body).to eq 'some data'
184
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].key).to eq 'backup_name/weekly/2020-01-27.tgz'
185
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].body).to eq 'some data'
186
+
187
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
188
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
189
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
190
190
  end
191
191
 
192
192
  it 'always promote when there is no weekly backup' do
193
193
  # mock
194
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
195
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
196
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
197
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
198
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
199
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
200
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
201
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
194
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
195
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
196
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
197
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
198
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
199
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
200
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
201
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
202
202
 
203
203
  # perform test
204
204
  @rotator.rotate_daily('backup_name', 3)
205
205
 
206
206
  # verify result
207
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 3
208
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-15.tgz'
209
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
210
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-16.tgz'
211
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
212
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-17.tgz'
213
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
214
-
215
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 1
216
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-12.tgz'
217
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
218
-
219
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
220
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
221
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
207
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 3
208
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-15.tgz'
209
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
210
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-16.tgz'
211
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
212
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-17.tgz'
213
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
214
+
215
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 1
216
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-12.tgz'
217
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
218
+
219
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
220
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
221
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
222
222
  end
223
223
 
224
224
  it 'does nothing where there is no daily backup' do
225
225
  # mock
226
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-01-06.tgz', body: 'some data')
227
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-06.tgz', body: 'some data')
228
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
226
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-01-06.tgz', body: 'some data')
227
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-06.tgz', body: 'some data')
228
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
229
229
 
230
230
  # perform test
231
231
  @rotator.rotate_daily('backup_name', 3)
232
232
 
233
233
  # verify result
234
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 0
234
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 0
235
235
 
236
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 1
237
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-06.tgz'
238
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
236
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 1
237
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-06.tgz'
238
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
239
239
 
240
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
241
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-06.tgz'
242
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
240
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
241
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-06.tgz'
242
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
243
243
  end
244
244
 
245
245
  end
@@ -248,265 +248,265 @@ describe S3Rotate::BackupRotator do
248
248
 
249
249
  it 'rotates and cleanup when relevant' do
250
250
  # mock
251
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
252
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
253
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
254
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
255
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
256
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
257
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
258
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
259
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
260
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
261
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
262
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
251
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
252
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
253
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
254
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
255
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
256
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
257
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
258
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
259
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
260
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
261
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
262
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
263
263
 
264
264
  # perform test
265
265
  @rotator.rotate_weekly('backup_name', 2)
266
266
 
267
267
  # verify result
268
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
269
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
270
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
271
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
272
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
273
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
274
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
275
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
276
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
277
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
278
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
279
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
280
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
281
-
282
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
283
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-21.tgz'
284
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
285
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-28.tgz'
286
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
287
-
288
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 2
289
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-12.tgz'
290
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
291
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].key).to eq '/backup_name/monthly/2020-02-14.tgz'
292
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].body).to eq 'some data'
268
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
269
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
270
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
271
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
272
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
273
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
274
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
275
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
276
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
277
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
278
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
279
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
280
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
281
+
282
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
283
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-21.tgz'
284
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
285
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-28.tgz'
286
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
287
+
288
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 2
289
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-12.tgz'
290
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
291
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].key).to eq 'backup_name/monthly/2020-02-14.tgz'
292
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].body).to eq 'some data'
293
293
  end
294
294
 
295
295
  it 'only cleanup when relevant' do
296
296
  # mock
297
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
298
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
299
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
300
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
301
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
302
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
303
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
304
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
305
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
306
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
307
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-29.tgz', body: 'some data')
308
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
297
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
298
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
299
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
300
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
301
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
302
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
303
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
304
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
305
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
306
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
307
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-29.tgz', body: 'some data')
308
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
309
309
 
310
310
  # perform test
311
311
  @rotator.rotate_weekly('backup_name', 2)
312
312
 
313
313
  # verify result
314
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
315
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
316
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
317
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
318
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
319
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
320
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
321
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
322
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
323
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
324
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
325
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
326
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
327
-
328
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
329
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-21.tgz'
330
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
331
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-28.tgz'
332
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
333
-
334
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
335
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-29.tgz'
336
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
314
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
315
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
316
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
317
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
318
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
319
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
320
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
321
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
322
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
323
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
324
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
325
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
326
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
327
+
328
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
329
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-21.tgz'
330
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
331
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-28.tgz'
332
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
333
+
334
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
335
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-29.tgz'
336
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
337
337
  end
338
338
 
339
339
  it 'only rotates when relevant' do
340
340
  # mock
341
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
342
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
343
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
344
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
345
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
346
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
347
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
348
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
349
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
350
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
341
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
342
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
343
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
344
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
345
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
346
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
347
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
348
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
349
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
350
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
351
351
 
352
352
  # perform test
353
353
  @rotator.rotate_weekly('backup_name', 2)
354
354
 
355
355
  # verify result
356
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
357
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
358
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
359
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
360
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
361
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
362
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
363
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
364
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
365
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
366
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
367
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
368
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
369
-
370
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
371
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-07.tgz'
372
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
373
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-14.tgz'
374
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
375
-
376
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 2
377
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-12.tgz'
378
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
379
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].key).to eq '/backup_name/monthly/2020-02-14.tgz'
380
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].body).to eq 'some data'
356
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
357
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
358
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
359
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
360
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
361
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
362
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
363
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
364
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
365
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
366
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
367
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
368
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
369
+
370
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
371
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-07.tgz'
372
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
373
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-14.tgz'
374
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
375
+
376
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 2
377
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-12.tgz'
378
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
379
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].key).to eq 'backup_name/monthly/2020-02-14.tgz'
380
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].body).to eq 'some data'
381
381
  end
382
382
 
383
383
  it 'rotates multiple when relevant' do
384
384
  # mock
385
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
386
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
387
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
388
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
389
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
390
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
391
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
392
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
393
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-03-06.tgz', body: 'some data')
394
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-03-13.tgz', body: 'some data')
395
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-04-05.tgz', body: 'some data')
396
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-04-12.tgz', body: 'some data')
397
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
398
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
385
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
386
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
387
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
388
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
389
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
390
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
391
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
392
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
393
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-03-06.tgz', body: 'some data')
394
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-03-13.tgz', body: 'some data')
395
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-04-05.tgz', body: 'some data')
396
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-04-12.tgz', body: 'some data')
397
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
398
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
399
399
 
400
400
  # perform test
401
401
  @rotator.rotate_weekly('backup_name', 2)
402
402
 
403
403
  # verify result
404
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
405
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
406
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
407
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
408
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
409
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
410
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
411
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
412
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
413
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
414
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
415
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
416
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
417
-
418
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
419
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-04-05.tgz'
420
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
421
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-04-12.tgz'
422
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
423
-
424
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 3
425
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-12.tgz'
426
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
427
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].key).to eq '/backup_name/monthly/2020-02-14.tgz'
428
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].body).to eq 'some data'
429
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[2].key).to eq '/backup_name/monthly/2020-04-05.tgz'
430
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[2].body).to eq 'some data'
404
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
405
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
406
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
407
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
408
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
409
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
410
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
411
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
412
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
413
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
414
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
415
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
416
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
417
+
418
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
419
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-04-05.tgz'
420
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
421
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-04-12.tgz'
422
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
423
+
424
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 3
425
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-12.tgz'
426
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
427
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].key).to eq 'backup_name/monthly/2020-02-14.tgz'
428
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].body).to eq 'some data'
429
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[2].key).to eq 'backup_name/monthly/2020-04-05.tgz'
430
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[2].body).to eq 'some data'
431
431
  end
432
432
 
433
433
  it 'always promote when there is no monthly backup' do
434
434
  # mock
435
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
436
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
437
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
438
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
439
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
440
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
441
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
442
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
443
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
444
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
445
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
435
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
436
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
437
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
438
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
439
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
440
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
441
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
442
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
443
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
444
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
445
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
446
446
 
447
447
  # perform test
448
448
  @rotator.rotate_weekly('backup_name', 2)
449
449
 
450
450
  # verify result
451
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
452
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
453
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
454
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
455
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
456
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
457
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
458
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
459
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
460
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
461
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
462
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
463
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
464
-
465
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 2
466
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-21.tgz'
467
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
468
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-28.tgz'
469
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
470
-
471
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
472
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-02-07.tgz'
473
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
451
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
452
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
453
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
454
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
455
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
456
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
457
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
458
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
459
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
460
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
461
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
462
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
463
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
464
+
465
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 2
466
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-21.tgz'
467
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
468
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-28.tgz'
469
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
470
+
471
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
472
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-02-07.tgz'
473
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
474
474
  end
475
475
 
476
476
  it 'does nothing where there is no weekly backup' do
477
477
  # mock
478
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
479
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
480
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
481
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
482
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
483
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
484
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
485
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
478
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
479
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
480
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
481
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
482
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
483
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
484
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
485
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
486
486
 
487
487
  # perform test
488
488
  @rotator.rotate_weekly('backup_name', 2)
489
489
 
490
490
  # verify result
491
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
492
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
493
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
494
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
495
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
496
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
497
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
498
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
499
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
500
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
501
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
502
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
503
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
504
-
505
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 0
506
-
507
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
508
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-12.tgz'
509
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
491
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
492
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
493
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
494
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
495
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
496
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
497
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
498
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
499
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
500
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
501
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
502
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
503
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
504
+
505
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 0
506
+
507
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
508
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-12.tgz'
509
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
510
510
  end
511
511
 
512
512
  end
@@ -515,148 +515,148 @@ describe S3Rotate::BackupRotator do
515
515
 
516
516
  it 'cleanup when relevant' do
517
517
  # mock
518
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
519
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
520
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
521
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
522
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
523
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
524
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
525
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
526
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
527
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
528
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
529
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-02-12.tgz', body: 'some data')
530
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-03-12.tgz', body: 'some data')
531
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-04-12.tgz', body: 'some data')
532
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
518
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
519
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
520
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
521
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
522
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
523
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
524
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
525
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
526
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
527
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
528
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
529
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-02-12.tgz', body: 'some data')
530
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-03-12.tgz', body: 'some data')
531
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-04-12.tgz', body: 'some data')
532
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
533
533
 
534
534
  # perform test
535
535
  @rotator.rotate_monthly('backup_name', 2)
536
536
 
537
537
  # verify result
538
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
539
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
540
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
541
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
542
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
543
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
544
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
545
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
546
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
547
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
548
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
549
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
550
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
551
-
552
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 4
553
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-07.tgz'
554
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
555
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-14.tgz'
556
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
557
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].key).to eq '/backup_name/weekly/2020-02-21.tgz'
558
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].body).to eq 'some data'
559
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].key).to eq '/backup_name/weekly/2020-02-28.tgz'
560
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].body).to eq 'some data'
561
-
562
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 2
563
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-03-12.tgz'
564
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
565
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].key).to eq '/backup_name/monthly/2020-04-12.tgz'
566
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[1].body).to eq 'some data'
538
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
539
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
540
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
541
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
542
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
543
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
544
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
545
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
546
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
547
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
548
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
549
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
550
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
551
+
552
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 4
553
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-07.tgz'
554
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
555
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-14.tgz'
556
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
557
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].key).to eq 'backup_name/weekly/2020-02-21.tgz'
558
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].body).to eq 'some data'
559
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].key).to eq 'backup_name/weekly/2020-02-28.tgz'
560
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].body).to eq 'some data'
561
+
562
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 2
563
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-03-12.tgz'
564
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
565
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].key).to eq 'backup_name/monthly/2020-04-12.tgz'
566
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[1].body).to eq 'some data'
567
567
  end
568
568
 
569
569
  it 'does not cleanup if not relevant' do
570
570
  # mock
571
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
572
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
573
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
574
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
575
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
576
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
577
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
578
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
579
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
580
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
581
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/monthly/2020-01-12.tgz', body: 'some data')
582
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
571
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
572
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
573
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
574
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
575
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
576
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
577
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
578
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
579
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
580
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
581
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/monthly/2020-01-12.tgz', body: 'some data')
582
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
583
583
 
584
584
  # perform test
585
585
  @rotator.rotate_monthly('backup_name', 2)
586
586
 
587
587
  # verify result
588
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
589
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
590
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
591
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
592
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
593
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
594
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
595
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
596
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
597
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
598
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
599
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
600
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
601
-
602
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 4
603
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-07.tgz'
604
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
605
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-14.tgz'
606
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
607
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].key).to eq '/backup_name/weekly/2020-02-21.tgz'
608
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].body).to eq 'some data'
609
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].key).to eq '/backup_name/weekly/2020-02-28.tgz'
610
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].body).to eq 'some data'
611
-
612
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 1
613
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].key).to eq '/backup_name/monthly/2020-01-12.tgz'
614
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files[0].body).to eq 'some data'
588
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
589
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
590
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
591
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
592
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
593
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
594
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
595
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
596
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
597
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
598
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
599
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
600
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
601
+
602
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 4
603
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-07.tgz'
604
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
605
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-14.tgz'
606
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
607
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].key).to eq 'backup_name/weekly/2020-02-21.tgz'
608
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].body).to eq 'some data'
609
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].key).to eq 'backup_name/weekly/2020-02-28.tgz'
610
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].body).to eq 'some data'
611
+
612
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 1
613
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].key).to eq 'backup_name/monthly/2020-01-12.tgz'
614
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files[0].body).to eq 'some data'
615
615
  end
616
616
 
617
617
  it 'does nothing if there is no monthly backup' do
618
618
  # mock
619
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
620
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-13.tgz', body: 'some data')
621
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-14.tgz', body: 'some data')
622
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-15.tgz', body: 'some data')
623
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-16.tgz', body: 'some data')
624
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-17.tgz', body: 'some data')
625
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-07.tgz', body: 'some data')
626
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-14.tgz', body: 'some data')
627
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-21.tgz', body: 'some data')
628
- @client.connection.directories.get('bucket').files.create(key: '/backup_name/weekly/2020-02-28.tgz', body: 'some data')
629
- @client.connection.directories.get('bucket').files.create(key: '/other_backup_name/daily/2020-01-07.tgz', body: 'some data')
619
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
620
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-13.tgz', body: 'some data')
621
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-14.tgz', body: 'some data')
622
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-15.tgz', body: 'some data')
623
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-16.tgz', body: 'some data')
624
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-17.tgz', body: 'some data')
625
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-07.tgz', body: 'some data')
626
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-14.tgz', body: 'some data')
627
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-21.tgz', body: 'some data')
628
+ @client.connection.directories.get('bucket').files.create(key: 'backup_name/weekly/2020-02-28.tgz', body: 'some data')
629
+ @client.connection.directories.get('bucket').files.create(key: 'other_backup_name/daily/2020-01-07.tgz', body: 'some data')
630
630
 
631
631
  # perform test
632
632
  @rotator.rotate_monthly('backup_name', 2)
633
633
 
634
634
  # verify result
635
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 6
636
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
637
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
638
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].key).to eq '/backup_name/daily/2020-01-13.tgz'
639
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[1].body).to eq 'some data'
640
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].key).to eq '/backup_name/daily/2020-01-14.tgz'
641
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[2].body).to eq 'some data'
642
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].key).to eq '/backup_name/daily/2020-01-15.tgz'
643
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[3].body).to eq 'some data'
644
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].key).to eq '/backup_name/daily/2020-01-16.tgz'
645
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[4].body).to eq 'some data'
646
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].key).to eq '/backup_name/daily/2020-01-17.tgz'
647
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[5].body).to eq 'some data'
648
-
649
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 4
650
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-02-07.tgz'
651
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
652
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].key).to eq '/backup_name/weekly/2020-02-14.tgz'
653
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[1].body).to eq 'some data'
654
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].key).to eq '/backup_name/weekly/2020-02-21.tgz'
655
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[2].body).to eq 'some data'
656
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].key).to eq '/backup_name/weekly/2020-02-28.tgz'
657
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[3].body).to eq 'some data'
658
-
659
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/monthly').files.length).to eq 0
635
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 6
636
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
637
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
638
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].key).to eq 'backup_name/daily/2020-01-13.tgz'
639
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[1].body).to eq 'some data'
640
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].key).to eq 'backup_name/daily/2020-01-14.tgz'
641
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[2].body).to eq 'some data'
642
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].key).to eq 'backup_name/daily/2020-01-15.tgz'
643
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[3].body).to eq 'some data'
644
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].key).to eq 'backup_name/daily/2020-01-16.tgz'
645
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[4].body).to eq 'some data'
646
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].key).to eq 'backup_name/daily/2020-01-17.tgz'
647
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[5].body).to eq 'some data'
648
+
649
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 4
650
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-02-07.tgz'
651
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
652
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].key).to eq 'backup_name/weekly/2020-02-14.tgz'
653
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[1].body).to eq 'some data'
654
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].key).to eq 'backup_name/weekly/2020-02-21.tgz'
655
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[2].body).to eq 'some data'
656
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].key).to eq 'backup_name/weekly/2020-02-28.tgz'
657
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[3].body).to eq 'some data'
658
+
659
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/monthly').files.length).to eq 0
660
660
  end
661
661
 
662
662
  end
@@ -750,19 +750,19 @@ describe S3Rotate::BackupRotator do
750
750
 
751
751
  it 'promotes backup' do
752
752
  # mock data
753
- file = @client.connection.directories.get('bucket').files.create(key: '/backup_name/daily/2020-01-12.tgz', body: 'some data')
753
+ file = @client.connection.directories.get('bucket').files.create(key: 'backup_name/daily/2020-01-12.tgz', body: 'some data')
754
754
 
755
755
  # perform test
756
756
  @rotator.promote('backup_name', file, 'weekly')
757
757
 
758
758
  # verify result
759
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files.length).to eq 1
760
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].key).to eq '/backup_name/weekly/2020-01-12.tgz'
761
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/weekly').files[0].body).to eq 'some data'
759
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files.length).to eq 1
760
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].key).to eq 'backup_name/weekly/2020-01-12.tgz'
761
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/weekly').files[0].body).to eq 'some data'
762
762
 
763
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files.length).to eq 1
764
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].key).to eq '/backup_name/daily/2020-01-12.tgz'
765
- expect(@client.connection.directories.get('bucket', prefix: '/backup_name/daily').files[0].body).to eq 'some data'
763
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files.length).to eq 1
764
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].key).to eq 'backup_name/daily/2020-01-12.tgz'
765
+ expect(@client.connection.directories.get('bucket', prefix: 'backup_name/daily').files[0].body).to eq 'some data'
766
766
  end
767
767
 
768
768
  end