|
1 | 1 | /* Copyright (C) 2016 NooBaa */ |
| 2 | +/* eslint max-lines-per-function: ["error", 2000]*/ |
2 | 3 | 'use strict'; |
3 | 4 |
|
4 | 5 | // setup coretest first to prepare the env |
@@ -50,23 +51,22 @@ mocha.describe('md_store', function() { |
50 | 51 | assert_equal(res.obj.num_parts, 88); |
51 | 52 | }); |
52 | 53 |
|
53 | | - const date_now = Date.now(); |
54 | | - const now = new Date(date_now); |
| 54 | + const now = new Date(); |
55 | 55 | const info1 = { |
56 | 56 | _id: md_store.make_md_id(), |
57 | 57 | system: system_id, |
58 | 58 | bucket: bucket_id, |
59 | | - key: 'lala_1' + date_now.toString(36), |
| 59 | + key: 'lala_1' + now.getTime().toString(36), |
60 | 60 | create_time: now, |
61 | | - content_type: 'lulu_' + date_now.toString(36), |
| 61 | + content_type: 'lulu_' + now.getTime().toString(36), |
62 | 62 | }; |
63 | 63 | const info2 = { |
64 | 64 | _id: md_store.make_md_id(), |
65 | 65 | system: system_id, |
66 | 66 | bucket: bucket_id, |
67 | | - key: 'lala_2' + date_now.toString(36), |
| 67 | + key: 'lala_2' + now.getTime().toString(36), |
68 | 68 | create_time: now, |
69 | | - content_type: 'lulu_' + date_now.toString(36), |
| 69 | + content_type: 'lulu_' + now.getTime().toString(36), |
70 | 70 | }; |
71 | 71 | const max_create_time = now.getTime() / 1000 - 60; // 1 minute ago |
72 | 72 |
|
@@ -197,6 +197,27 @@ mocha.describe('md_store', function() { |
197 | 197 | return md_store.aggregate_objects_by_delete_dates(from_time, till_time); |
198 | 198 | }); |
199 | 199 |
|
| 200 | + mocha.it('find_deleted_objects returns deleted and reclaimed objects', async function() { |
| 201 | + if (config.DB_TYPE !== 'postgres') this.skip(); // eslint-disable-line no-invalid-this |
| 202 | + for (let i = 0; i < 50; i++) { // create 50 objects |
| 203 | + info1._id = md_store.make_md_id(); |
| 204 | + info1.key = `lala_${i}_${now.getTime().toString(36)}`; |
| 205 | + await md_store.insert_object(info1); |
| 206 | + } |
| 207 | + // mark all 50 objects as deleted |
| 208 | + const deleted_objects = await md_store.delete_objects_by_query({ |
| 209 | + key: /^lala_/, |
| 210 | + bucket_id: bucket_id, |
| 211 | + limit: 50, |
| 212 | + return_results: true, |
| 213 | + }); |
| 214 | + // mark all 50 deleted objects as reclaimed |
| 215 | + await md_store.update_objects_by_ids(deleted_objects.map(obj => obj._id), { reclaimed: new Date() }); |
| 216 | + // find 25 objects that are deleted and reclaimed |
| 217 | + const objects = await md_store.find_deleted_objects(now.getTime() + 60 * 1000, 25); |
| 218 | + assert_equal(objects.length, 25); |
| 219 | + }); |
| 220 | + |
200 | 221 | }); |
201 | 222 |
|
202 | 223 |
|
|
0 commit comments