Skip to content

Commit 76addf8

Browse files
committed
test many chunk split
1 parent 9de7841 commit 76addf8

File tree

1 file changed

+58
-39
lines changed

1 file changed

+58
-39
lines changed

tests/functional/raw-node/test/trailingChecksums.js

Lines changed: 58 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const HttpRequestAuthV4 = require('../utils/HttpRequestAuthV4');
66
const bucket = 'testunsupportedchecksumsbucket';
77
const objectKey = 'key';
88
const objData = Buffer.alloc(1024, 'a');
9+
// note this is not the correct checksum in objDataWithTrailingChecksum
910
const objDataWithTrailingChecksum = '10\r\n0123456789abcdef\r\n0\r\nx-amz-checksum-crc64nvme:YeIDuLa7tU0=\r\n';
1011
const objDataWithoutTrailingChecksum = '0123456789abcdef';
1112

@@ -47,51 +48,69 @@ describe('trailing checksum requests:', () => {
4748
});
4849
});
4950

50-
it('should accept unsigned trailing checksum', done => {
51-
const req = new HttpRequestAuthV4(
52-
`http://localhost:8000/${bucket}/${objectKey}`,
53-
Object.assign(
54-
{
55-
method: 'PUT',
56-
headers: {
57-
'content-length': objDataWithTrailingChecksum.length,
58-
'x-amz-decoded-content-length': objDataWithoutTrailingChecksum.length,
59-
'x-amz-content-sha256': 'STREAMING-UNSIGNED-PAYLOAD-TRAILER',
60-
'x-amz-trailer': 'x-amz-checksum-crc64nvme',
51+
const objDataChunkings = [
52+
[objDataWithTrailingChecksum],
53+
[objDataWithTrailingChecksum.substring(0, 1), objDataWithTrailingChecksum.substring(1)],
54+
[objDataWithTrailingChecksum.substring(0, 2), objDataWithTrailingChecksum.substring(2)],
55+
[objDataWithTrailingChecksum.substring(0, 3), objDataWithTrailingChecksum.substring(3)],
56+
[objDataWithTrailingChecksum.substring(0, 4), objDataWithTrailingChecksum.substring(4)],
57+
[objDataWithTrailingChecksum.substring(0, 10), objDataWithTrailingChecksum.substring(10)],
58+
[objDataWithTrailingChecksum.substring(0, 20), objDataWithTrailingChecksum.substring(20)],
59+
[objDataWithTrailingChecksum.substring(0, 21), objDataWithTrailingChecksum.substring(21)],
60+
[objDataWithTrailingChecksum.substring(0, 22), objDataWithTrailingChecksum.substring(22)],
61+
];
62+
63+
objDataChunkings.forEach((objDataChunks, index) => {
64+
it(`should accept unsigned trailing checksum, chunk configuration ${index + 1}`, done => {
65+
const req = new HttpRequestAuthV4(
66+
`http://localhost:8000/${bucket}/${objectKey}`,
67+
Object.assign(
68+
{
69+
method: 'PUT',
70+
headers: {
71+
'content-length': objDataWithTrailingChecksum.length,
72+
'x-amz-decoded-content-length': objDataWithoutTrailingChecksum.length,
73+
'x-amz-content-sha256': 'STREAMING-UNSIGNED-PAYLOAD-TRAILER',
74+
'x-amz-trailer': 'x-amz-checksum-crc64nvme',
75+
},
6176
},
62-
},
63-
authCredentials
64-
),
65-
res => {
66-
assert.strictEqual(res.statusCode, 200);
67-
res.on('data', () => {});
68-
res.on('end', done);
69-
}
70-
);
77+
authCredentials
78+
),
79+
res => {
80+
assert.strictEqual(res.statusCode, 200);
81+
res.on('data', () => {});
82+
res.on('end', done);
83+
}
84+
);
7185

72-
req.on('error', err => {
73-
assert.ifError(err);
74-
});
86+
req.on('error', err => {
87+
assert.ifError(err);
88+
});
7589

76-
req.write(objDataWithTrailingChecksum);
90+
// write the data in two chunks
91+
objDataChunks.forEach(chunk => {
92+
req.write(chunk);
93+
}
94+
);
7795

78-
req.once('drain', () => {
79-
req.end();
96+
req.once('drain', () => {
97+
req.end();
98+
});
8099
});
81-
});
82100

83-
it('should have correct object content for unsigned trailing checksum', done => {
84-
makeS3Request({
85-
method: 'GET',
86-
authCredentials,
87-
bucket,
88-
objectKey,
89-
}, (err, res) => {
90-
assert.ifError(err);
91-
assert.strictEqual(res.statusCode, 200);
92-
// check that the object data is the input stripped of the trailing checksum
93-
assert.strictEqual(res.body, objDataWithoutTrailingChecksum);
94-
return done();
101+
it('should have correct object content for unsigned trailing checksum', done => {
102+
makeS3Request({
103+
method: 'GET',
104+
authCredentials,
105+
bucket,
106+
objectKey,
107+
}, (err, res) => {
108+
assert.ifError(err);
109+
assert.strictEqual(res.statusCode, 200);
110+
// check that the object data is the input stripped of the trailing checksum
111+
assert.strictEqual(res.body, objDataWithoutTrailingChecksum);
112+
return done();
113+
});
95114
});
96115
});
97116

0 commit comments

Comments
 (0)