Skip to content

Commit 129f051

Browse files
committed
tests to ensure many uploads are working as expected
1 parent c23db61 commit 129f051

File tree

1 file changed

+54
-5
lines changed

1 file changed

+54
-5
lines changed

test/test.js

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ var crypto = require('crypto');
1010
var rimraf = require('rimraf');
1111
var StreamSink = require('streamsink');
1212
var tempDir = path.join(__dirname, 'tmp');
13+
var tempManyFilesDir = path.join(__dirname, 'tmp', 'many-files-dir');
1314
var localFile = path.join(tempDir, 'random.png');
1415
var remoteRoot = "node-s3-test/";
1516
var remoteFile = remoteRoot + "file.png";
1617
var remoteFile2 = remoteRoot + "file2.png";
1718
var remoteFile3 = remoteRoot + "file3.png";
1819
var remoteDir = remoteRoot + "dir1";
20+
var remoteManyFilesDir = remoteRoot + "many-files-dir";
1921

2022
var describe = global.describe;
2123
var it = global.it;
@@ -41,11 +43,11 @@ function createClient() {
4143
});
4244
}
4345

44-
function createBigFile(size, cb) {
45-
mkdirp(tempDir, function(err) {
46+
function createBigFile(file, size, cb) {
47+
mkdirp(path.dirname(file), function(err) {
4648
if (err) return cb(err);
4749
var md5sum = crypto.createHash('md5');
48-
var out = fs.createWriteStream(localFile);
50+
var out = fs.createWriteStream(file);
4951
out.on('error', function(err) {
5052
cb(err);
5153
});
@@ -63,6 +65,17 @@ function createBigFile(size, cb) {
6365
});
6466
}
6567

68+
function createFolderOfFiles(dir, numFiles, sizeOfFiles, cb) {
69+
for (var i = 0, j = numFiles; i < numFiles; i++) {
70+
createBigFile(path.join(dir, 'file' + i), sizeOfFiles, function () {
71+
j--;
72+
if (j === 0) {
73+
cb();
74+
}
75+
});
76+
}
77+
}
78+
6679
var file1Md5 = "b1946ac92492d2347c6235b4d2611184";
6780
describe("MultipartETag", function() {
6881
it("returns unmodified digest", function(done) {
@@ -123,7 +136,7 @@ describe("s3", function () {
123136
});
124137

125138
it("uploads", function(done) {
126-
createBigFile(120 * 1024, function (err, _hexdigest) {
139+
createBigFile(localFile, 120 * 1024, function (err, _hexdigest) {
127140
if (err) return done(err);
128141
hexdigest = _hexdigest;
129142
var client = createClient();
@@ -442,8 +455,44 @@ describe("s3", function () {
442455
});
443456
});
444457

458+
it("uploads folder with lots of files", function(done) {
459+
createFolderOfFiles(tempManyFilesDir, 100, 100 * 1024, function() {
460+
var client = createClient();
461+
var params = {
462+
localDir: tempManyFilesDir,
463+
deleteRemoved: true,
464+
s3Params: {
465+
Prefix: remoteManyFilesDir,
466+
Bucket: s3Bucket,
467+
},
468+
};
469+
var uploader = client.uploadDir(params);
470+
uploader.on('end', function() {
471+
// get a list of the remote files to ensure they all got created
472+
var params = {
473+
recursive: true,
474+
s3Params: {
475+
Bucket: s3Bucket,
476+
Prefix: remoteManyFilesDir,
477+
},
478+
};
479+
var client = createClient();
480+
var finder = client.listObjects(params);
481+
var found = false;
482+
finder.on('data', function(data) {
483+
assert.strictEqual(data.Contents.length, 100);
484+
found = true;
485+
});
486+
finder.on('end', function() {
487+
assert.strictEqual(found, true);
488+
done();
489+
});
490+
});
491+
});
492+
});
493+
445494
it("multipart upload", function(done) {
446-
createBigFile(16 * 1024 * 1024, function (err, _hexdigest) {
495+
createBigFile(localFile, 16 * 1024 * 1024, function (err, _hexdigest) {
447496
if (err) return done(err);
448497
hexdigest = _hexdigest;
449498
var client = createClient();

0 commit comments

Comments
 (0)