Skip to content

Commit 7464e17

Browse files
remove bucket env var req. & stop deleting all buckets
fixes #270 fixes #271
1 parent 1c2b45a commit 7464e17

File tree

3 files changed

+80
-67
lines changed

3 files changed

+80
-67
lines changed

CONTRIBUTING.md

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ $ npm test
2020
To run the regression tests, first create and configure a project in the Google Developers Console following the [instructions on how to run gcloud-node][elsewhere]. After that, set the following environment variables:
2121

2222
- **GCLOUD_TESTS_PROJECT_ID**: Developers Console project's ID (e.g. bamboo-shift-455)
23-
- **GCLOUD_TESTS_BUCKET_NAME**: The name of the bucket to use for the Cloud Storage API tests
2423
- **GCLOUD_TESTS_KEY**: The path to the JSON key file.
2524

2625
Install the [gcloud command-line tool][gcloudcli] to your machine and use it to create the indexes used in the datastore regression tests with indexes found in `regression/data/index/yaml`:

regression/env.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
'use strict';
1818

19-
if (!process.env.GCLOUD_TESTS_PROJECT_ID &&
20-
!process.env.GCLOUD_TESTS_BUCKET_NAME &&
21-
!process.env.GCLOUD_TESTS_KEY) {
19+
if (!process.env.GCLOUD_TESTS_PROJECT_ID && !process.env.GCLOUD_TESTS_KEY) {
2220
var error = [
2321
'To run the regression tests, you need to set some environment variables.',
2422
'Please check the Contributing guide for instructions.'
@@ -27,7 +25,6 @@ if (!process.env.GCLOUD_TESTS_PROJECT_ID &&
2725
}
2826

2927
module.exports = {
30-
projectId: process.env.GCLOUD_TESTS_PROJECT_ID,
31-
bucketName: process.env.GCLOUD_TESTS_BUCKET_NAME,
32-
keyFilename: process.env.GCLOUD_TESTS_KEY
28+
keyFilename: process.env.GCLOUD_TESTS_KEY,
29+
projectId: process.env.GCLOUD_TESTS_PROJECT_ID
3330
};

regression/storage.js

+77-60
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ var crypto = require('crypto');
2424
var fs = require('fs');
2525
var request = require('request');
2626
var tmp = require('tmp');
27+
var uuid = require('node-uuid');
2728

2829
var env = require('./env.js');
2930
var storage = require('../lib/storage')(env);
3031

32+
var BUCKET_NAME = generateBucketName();
33+
3134
var files = {
3235
logo: {
3336
path: 'regression/data/CloudPlatform_128px_Retina.png'
@@ -37,30 +40,6 @@ var files = {
3740
}
3841
};
3942

40-
function setHash(obj, file, done) {
41-
var hash = crypto.createHash('md5');
42-
fs.createReadStream(obj[file].path)
43-
.on('data', hash.update.bind(hash))
44-
.on('end', function() {
45-
obj[file].hash = hash.digest('base64');
46-
done();
47-
});
48-
}
49-
50-
function deleteBucketsAndFiles(callback) {
51-
storage.getBuckets(function(err, buckets) {
52-
if (err) {
53-
callback(err);
54-
return;
55-
}
56-
async.map(buckets, function(bucket, next) {
57-
deleteFiles(bucket, function() {
58-
bucket.delete(next);
59-
});
60-
}, callback);
61-
});
62-
}
63-
6443
function deleteFiles(bucket, callback) {
6544
bucket.getFiles(function(err, files) {
6645
if (err) {
@@ -73,55 +52,93 @@ function deleteFiles(bucket, callback) {
7352
});
7453
}
7554

55+
function generateBucketName() {
56+
return 'gcloud-test-bucket-temp-' + uuid.v1();
57+
}
58+
59+
function setHash(obj, file, done) {
60+
var hash = crypto.createHash('md5');
61+
fs.createReadStream(obj[file].path)
62+
.on('data', hash.update.bind(hash))
63+
.on('end', function() {
64+
obj[file].hash = hash.digest('base64');
65+
done();
66+
});
67+
}
68+
7669
describe('storage', function() {
7770
var bucket;
7871

7972
before(function(done) {
80-
deleteBucketsAndFiles(function() {
81-
storage.createBucket('new' + Date.now(), function(err, newBucket) {
82-
if (err) {
83-
done(err);
84-
return;
85-
}
86-
bucket = newBucket;
87-
done();
88-
});
73+
storage.createBucket(BUCKET_NAME, function(err, newBucket) {
74+
if (err) {
75+
done(err);
76+
return;
77+
}
78+
bucket = newBucket;
79+
done();
8980
});
9081
});
9182

92-
after(deleteBucketsAndFiles);
93-
94-
describe('creating a bucket', function() {
95-
it('should create a bucket', function(done) {
96-
storage.createBucket('a-new-bucket', function(err, bucket) {
97-
assert.ifError(err);
98-
bucket.delete(done);
99-
});
83+
after(function(done) {
84+
deleteFiles(bucket, function(err) {
85+
if (err) {
86+
done(err);
87+
return;
88+
}
89+
bucket.delete(done);
10090
});
10191
});
10292

10393
describe('getting buckets', function() {
94+
var bucketsToCreate = [
95+
generateBucketName(), generateBucketName(), generateBucketName()
96+
];
97+
98+
before(function(done) {
99+
async.map(bucketsToCreate, storage.createBucket.bind(storage), done);
100+
});
101+
102+
after(function(done) {
103+
async.parallel(bucketsToCreate.map(function(bucket) {
104+
return function(done) {
105+
storage.bucket(bucket).delete(done);
106+
};
107+
}), done);
108+
});
109+
104110
it('should get buckets', function(done) {
105-
var bucketsToCreate = [
106-
'new' + Date.now(),
107-
'newer' + Date.now(),
108-
'newest' + Date.now()
109-
];
110-
async.map(
111-
bucketsToCreate,
112-
storage.createBucket.bind(storage),
113-
function(err) {
114-
assert.ifError(err);
115-
storage.getBuckets(function(err, buckets) {
116-
assert.equal(
117-
buckets.filter(function(bucket) {
118-
return bucketsToCreate.indexOf(bucket.name) > -1;
119-
}).length,
120-
bucketsToCreate.length
121-
);
122-
done();
123-
});
111+
storage.getBuckets(getBucketsHandler);
112+
113+
var createdBuckets = [];
114+
var failedTests = 0;
115+
var MAX_TRIES = 2;
116+
117+
function getBucketsHandler(err, buckets, nextQuery) {
118+
buckets.forEach(function(bucket) {
119+
if (bucketsToCreate.indexOf(bucket.name) > -1) {
120+
createdBuckets.push(bucket);
121+
}
124122
});
123+
124+
function allCreated() {
125+
assert.equal(createdBuckets.length, bucketsToCreate.length);
126+
}
127+
128+
try {
129+
allCreated();
130+
done();
131+
} catch(e) {
132+
failedTests++;
133+
134+
if (failedTests <= MAX_TRIES) {
135+
storage.getBuckets(nextQuery, getBucketsHandler);
136+
} else {
137+
// Crash.
138+
allCreated();
139+
}
140+
}
141+
}
125142
});
126143
});
127144

0 commit comments

Comments
 (0)