Skip to content

Commit f26854e

Browse files
committed
Test and some fixes
Signed-off-by: Aayush Chouhan <[email protected]>
1 parent aa4238e commit f26854e

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

src/endpoint/s3/ops/s3_get_object.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ async function get_object(req, res) {
4949
}
5050
}
5151
http_utils.set_response_headers_from_request(req, res);
52-
await http_utils.set_expiration_header(req, res, object_md); // setting expiration header for bucket lifecycle
52+
if (!version_id) await http_utils.set_expiration_header(req, res, object_md); // setting expiration header for bucket lifecycle
5353
const obj_size = object_md.size;
5454
const params = {
5555
object_md,

src/endpoint/s3/ops/s3_head_object.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ async function head_object(req, res) {
2929
s3_utils.set_response_object_md(res, object_md);
3030
s3_utils.set_encryption_response_headers(req, res, object_md.encryption);
3131
http_utils.set_response_headers_from_request(req, res);
32-
await http_utils.set_expiration_header(req, res, object_md); // setting expiration header for bucket lifecycle
32+
if (!params.version_id) await http_utils.set_expiration_header(req, res, object_md); // setting expiration header for bucket lifecycle
3333
}
3434

3535
module.exports = {

src/test/unit_tests/test_lifecycle.js

+10-8
Original file line numberDiff line numberDiff line change
@@ -829,11 +829,13 @@ mocha.describe('lifecycle', () => {
829829
};
830830

831831
function generate_rule(id, prefix, tags, size_gt, size_lt, expiration_days) {
832-
const filter = {};
833-
if (prefix) filter.Prefix = prefix;
834-
if (tags.length) filter.Tags = tags;
835-
if (size_gt !== undefined) filter.ObjectSizeGreaterThan = size_gt;
836-
if (size_lt !== undefined) filter.ObjectSizeLessThan = size_lt;
832+
const filters = {};
833+
if (prefix) filters.Prefix = prefix;
834+
if (Array.isArray(tags) && tags.length) filters.Tags = tags;
835+
if (size_gt !== undefined) filters.ObjectSizeGreaterThan = size_gt;
836+
if (size_lt !== undefined) filters.ObjectSizeLessThan = size_lt;
837+
838+
const filter = Object.keys(filters).length > 1 ? { And: filters } : filters;
837839

838840
return {
839841
ID: id,
@@ -849,11 +851,11 @@ mocha.describe('lifecycle', () => {
849851
console.log("match: ", match);
850852

851853
const [, expiry_str, rule_id] = match;
852-
const expiration_date = new Date(expiry_str);
854+
const expiration = new Date(expiry_str);
853855
const start = new Date(start_time);
854-
start_time.setUTCHours(0, 0, 0, 0); // adjusting to midnight UTC otherwise the tests will fail - similar to ceph-s3 tests
856+
start.setUTCHours(0, 0, 0, 0); // adjusting to midnight UTC otherwise the tests will fail - fix for ceph-s3 tests
855857

856-
const days_diff = Math.floor((expiration_date.getTime() - start.getTime()) / (24 * 60 * 60 * 1000));
858+
const days_diff = Math.floor((expiration.getTime() - start.getTime()) / (24 * 60 * 60 * 1000));
857859

858860
return days_diff === delta_days && rule_id === expected_rule_id;
859861
}

src/util/lifecycle_utils.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,16 @@ function get_lifecycle_rule_for_object(rules, object_info) {
8989
for (const rule of rules) {
9090
if (rule?.status !== 'Enabled') continue;
9191

92-
const filter = rule?.filter || {};
92+
const filter_func = build_lifecycle_filter(rule);
93+
if (!filter_func(object_info)) continue;
9394

94-
const filter_func = build_lifecycle_filter(filter);
95-
96-
if (!filter_func(object_info)) { continue; }
97-
98-
const new_priority = get_rule_priority(filter);
95+
const new_priority = get_rule_priority(rule.filter);
9996

10097
if (compare_rule_priority(curr_priority, new_priority)) {
10198
matched_rule = rule;
10299
curr_priority = new_priority;
103100
}
104101
}
105-
106102
return matched_rule;
107103
}
108104

0 commit comments

Comments
 (0)