cloud-blender
Version:
A high level library for cloud compute operations
200 lines (169 loc) • 5.97 kB
JavaScript
var should = require('should'),
underscore = require('underscore'),
execCloudTests = process.env.EXEC_CLOUD_TESTS,
hpUSWestSettings = require('../examples/hpcs_uswest_13_5'),
compute = require('../lib/hpcs_compute_13_5.js');
// in the form of http://proxy.com:8080 - change to your own proxy
compute.setProxy(process.env.TUNNELING_PROXY);
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
describe('checking hpcs-compute local atomic lib', function() {
it('should create an authentication context', function() {
var regionContext = compute.createRegionContext({
accessKey: 'dummyAccess',
secretKey: 'dummySecret',
tenantId: 'dummyTenantId',
region: 'dummyRegion',
availabilityZone: 'dummyavailabilityZone'
});
should.exist(regionContext.identitySettings);
should.exist(regionContext.identitySettings.auth);
should.exist(regionContext.identitySettings.url);
should.exist(regionContext.computeSettings);
should.exist(regionContext.computeSettings.url);
});
});
if (execCloudTests !== 'true') {
return;
}
describe('checking hpcs-compute online atomic lib', function() {
var g_node = '',
g_imageId = '',
g_nodes,
regionContext = compute.createRegionContext(hpUSWestSettings);
it('should create a node on hpcs-compute', function(done) {
var name = 'createdByStorm',
settings = {
regionContext: regionContext,
nodeParams: {
imageId: '27be722e-d2d0-44f0-bebe-471c4af76039', //ubuntu 12.04
instanceType: 100, // standard.xlarge
tags: {
jobId: 'dummyJobId',
env: 'test',
role: 'injector-Test',
logicName: name
},
keyName: 'stormRegion2',
securityGroups: ['injector-linux'],
// userData: {
// 'key1': 'param1'
// },
vendorSpecificParams: {}
}
};
this.timeout(240000);
compute.createNode(settings, function(error, result) {
should.not.exist(error);
should.exist(result.rawResult);
should.exist(result.node);
should.exist(result.node.id);
should.exist(result.node.tags);
should.exist(result.node.addresses);
should.exist(result.node.addresses[0]);
should.exist(result.node.addresses[1]);
should.exist(result.node.releaseInfo);
g_node = result.node;
//console.log(JSON.stringify(result.node, null, ' '));
done();
});
});
it('should get a list of nodes from hpcs-compute', function(done) {
var settings = {
regionContext: regionContext
};
this.timeout(20000);
compute.listNodes(settings, function(error, result) {
var node;
should.not.exist(error);
should.exist(result.rawResult);
should.exist(result.nodes);
console.log(JSON.stringify(result.nodes, null, ' '));
node = underscore.find(result.nodes, function (node) {
return node.id === g_node.id;
});
should.exist(node);
done();
});
});
it('should create image from a node on hpcs-compute', function(done) {
var settings = {
regionContext: regionContext,
imageParams: {
nodeId: g_node.id,
tags: {
'creationDate': new Date(),
'createdFor': 'test purposes',
'logicName': 'dummy-image'
},
vendorSpecificParams: {}
}
};
this.timeout(20000);
// wait is needed since image can be taken only on running/stopped state...
// we wait instead of polling since polling is higher level.
compute.createImage(settings, function(error, result) {
should.not.exist(error);
should.exist(result.rawResult);
should.exist(result.imageId);
g_imageId = result.imageId;
// console.log(g_imageId);
done();
});
});
it('should get a list of images from hpcs-compute', function(done) {
var settings = {
regionContext: regionContext
};
this.timeout(20000);
compute.listImages(settings, function(error, result) {
//console.log(JSON.stringify(result.images, null, ' '));
should.not.exist(error);
should.exist(result);
should.exist(result.images);
should.exist(result.rawResult);
done();
});
});
it('should delete an image from hpcs-compute', function(done) {
var settings = {
regionContext: regionContext,
imageParams: {
imageId: g_imageId
}
};
this.timeout(10000);
compute.deleteImage(settings, function(error, result) {
should.not.exist(error);
should.exist(result);
should.exist(result.result);
g_imageId = '';
//console.log(result);
done();
});
});
it('should delete a node from hpcs-compute', function(done) {
var settings = {
regionContext: regionContext,
node: g_node
};
this.timeout(40000);
compute.deleteNode(settings, function(error, result) {
should.not.exist(error);
should.exist(result);
should.exist(result.result);
//console.log(result);
done();
});
});
// it ('should check account limits', function(done) {
// var settings = {
// regionContext: regionContext
// };
// this.timeout(20000);
// compute.getLimits(settings, function(error, result) {
// console.log(JSON.stringify(result, null, ' '));
// should.not.exist(error);
// done();
// });
// });
});