PUBAPI-1233/PUBAPI-1234 - let fwrule and snapshot tests work even
when there isn't an existing machine to test with.
This commit is contained in:
parent
e6334db9e1
commit
690c6e5198
@ -23,6 +23,7 @@ var RULE = 'FROM any TO vm $id ALLOW tcp PORT 80';
|
||||
var RULE2 = 'FROM any TO vm $id BLOCK tcp port 25';
|
||||
var INST;
|
||||
var ID;
|
||||
var FAKE_INST_UUID = '89bcb9de-f174-4f20-bfa8-27d9749e6a2c';
|
||||
|
||||
// --- Tests
|
||||
|
||||
@ -33,11 +34,17 @@ test('triton fwrule', function (tt) {
|
||||
return t.end();
|
||||
|
||||
var rows = stdout.split('\n');
|
||||
try {
|
||||
INST = JSON.parse(rows[0]).id;
|
||||
t.ok(INST);
|
||||
|
||||
RULE = RULE.replace('$id', INST);
|
||||
RULE2 = RULE2.replace('$id', INST);
|
||||
} catch (e) {
|
||||
// if we don't have a VM already running to test with, we'll
|
||||
// run most tests with a fake UUID, and skip any tests that
|
||||
// require an actual machine UUID
|
||||
RULE = RULE.replace('$id', FAKE_INST_UUID);
|
||||
RULE2 = RULE2.replace('$id', FAKE_INST_UUID);
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
@ -148,6 +155,9 @@ test('triton fwrule', function (tt) {
|
||||
t.ok(machines[0].match(/ID\s+NAME\s+IMG\s+BRAND/));
|
||||
machines.shift();
|
||||
|
||||
if (!INST)
|
||||
return t.end();
|
||||
|
||||
t.equal(machines.length, 1, 'triton fwrule instances expected ' +
|
||||
'num machines');
|
||||
|
||||
|
@ -19,6 +19,7 @@ var test = require('tape');
|
||||
|
||||
var SNAP_NAME = 'test-snapshot';
|
||||
var INST;
|
||||
var DESTROY_INST = false;
|
||||
|
||||
// --- Tests
|
||||
|
||||
@ -29,11 +30,22 @@ test('triton snapshot', function (tt) {
|
||||
return t.end();
|
||||
|
||||
var rows = stdout.split('\n');
|
||||
|
||||
try {
|
||||
INST = JSON.parse(rows[0]).id;
|
||||
t.ok(INST);
|
||||
return t.end();
|
||||
} catch (e) {
|
||||
h.createMachine(function onCreate(err2, instId) {
|
||||
if (h.ifErr(t, err2, 'triton instance create'))
|
||||
return t.end();
|
||||
|
||||
INST = instId;
|
||||
DESTROY_INST = true;
|
||||
|
||||
t.end();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
tt.test(' triton snapshot create', function (t) {
|
||||
@ -113,4 +125,13 @@ test('triton snapshot', function (tt) {
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
tt.test('teardown', function (t) {
|
||||
if (!DESTROY_INST)
|
||||
return t.end();
|
||||
|
||||
h.triton('instance delete ' + INST, function () {
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -121,6 +121,8 @@ function triton(args, opts, cb) {
|
||||
}, cb);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* triton wrapper that:
|
||||
* - tests no error is present
|
||||
@ -172,6 +174,54 @@ function createClient() {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create a small instance.
|
||||
*/
|
||||
function createMachine(cb) {
|
||||
function jsonToObjs(jsons) {
|
||||
return jsons.split('\n').map(function (json) {
|
||||
try {
|
||||
return JSON.parse(json);
|
||||
} catch (e) {}
|
||||
}).filter(function (obj) {
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
|
||||
triton('package list -j', function (err, pkgJson) {
|
||||
if (err)
|
||||
return cb(err);
|
||||
|
||||
// pick the smallest package (ram-wise)
|
||||
var pkgs = jsonToObjs(pkgJson);
|
||||
var pkg = pkgs.sort(function (x, y) {
|
||||
return (x.memory > y.memory) ? 1 : -1;
|
||||
})[0];
|
||||
|
||||
triton('image list -j', function (err2, imgJson) {
|
||||
if (err2)
|
||||
return cb(err2);
|
||||
|
||||
// pick any smartos image
|
||||
var imgs = jsonToObjs(imgJson);
|
||||
var img = imgs.filter(function (i) {
|
||||
return i.os === 'smartos';
|
||||
})[0];
|
||||
|
||||
triton('instance create -w ' + img.id + ' ' + pkg.id,
|
||||
function (err3, stdout) {
|
||||
if (err3)
|
||||
return cb(err3);
|
||||
|
||||
var match = stdout.match(/Created .+? \((.+)\)/);
|
||||
var inst = match[1];
|
||||
cb(null, inst);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// --- exports
|
||||
|
||||
module.exports = {
|
||||
@ -179,5 +229,6 @@ module.exports = {
|
||||
triton: triton,
|
||||
safeTriton: safeTriton,
|
||||
createClient: createClient,
|
||||
createMachine: createMachine,
|
||||
ifErr: testcommon.ifErr
|
||||
};
|
||||
|
Reference in New Issue
Block a user