UNPKG

acs

Version:
243 lines (214 loc) 8.18 kB
var nexpect = require('nexpect'), temp = require('temp'), chai = require('chai'), should = chai.should(), path = require('path'), chaiHttp = require('chai-http'), utils = require('./utils'), config = require('./config.json'); const { step } = require('mocha-steps'); const argv = require('minimist')(process.argv.slice(2)); var ack="ack" chai.use(chaiHttp); describe(">>>>>>>>> smoke test >>>>>>>>>", function() { let customNamespace = 'smoketest'; let customRelease = 'acksample'; let sampleChartName = 'acksamplechart'; let temdir = temp.mkdirSync('arssmoketest'); let nginxHost= ''; let nexpectOpts = {stripColors: true, stream: 'all'}; this.timeout(300000); before(function(done) { done(); }); // ack init // ack install // ack list namespace // ack get status // ack get deployments // ack get pods // verify server size // ack get ingresses // verify hosts describe(">>>>>>>>> install a release", function() { step(`should create a sample helm chart`, function(done) { nexpect.spawn(ack, ['new', sampleChartName, '-d', temdir], nexpectOpts) .wait('New project created at', (line) => { utils.logOutput(line) }) .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); step(`should find no ${customNamespace} namespace`, function(done) { nexpect.spawn(ack, ['list', customNamespace], nexpectOpts) .wait('no namespace found', (line) => { utils.logOutput(line) }) .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(1); done(); }); }); step(`should create ${customNamespace} namespace`, function(done) { let params = [ 'init', customNamespace, '-o', argv.orgid || config.orgid ]; utils.logOutput('ack', params.join(' ')); nexpect.spawn(ack, params, nexpectOpts) .wait('Namespace created successfully', (line) => { utils.logOutput(line) }) .wait('Name: ' + customNamespace) .expect('- Default Domain:') .expect('- Default Server Size: Dev') .expect('- Default Proxy: Enabled') .expect('- Creation At:') .expect('- Status: Active') .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); step(`should list namespace ${customNamespace}`, function(done) { let chain = nexpect.spawn(ack, ['list', customNamespace], nexpectOpts) chain.wait("-- Used", function(){utils.logOutput(arguments)}) chain.wait(`Name: ${customNamespace}`); chain.wait(`- Default Domain:`, function(line){ // '83360f3dc3db548af5e6dd5054c3045e.chart.jin.apirs.net'; nginxHost = line.split(':')[1].trim(); console.log('nginxHost', nginxHost); }); chain.wait(`- Default Server Size: Dev`); chain.wait(`- Default Proxy: Enabled`); chain.wait(`- Creation At:`); chain.wait(`- Status: Active`); // chain.expect('==========='); chain.run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); step(`should install release ${customRelease} into namespace ${customNamespace}`, function(done) { let params = [ 'install', customRelease, '-n', customNamespace, '-f', path.join(temdir, sampleChartName) ]; utils.logOutput('ack', params.join(' ')); nexpect.spawn(ack, params, nexpectOpts) .wait('Release installed successfully', (line) => { utils.logOutput(line) }) .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); // ack get status step(`should get release status "Deployed" in namespace ${customNamespace}`, function(done) { function getStatus(runHandler) { utils.logOutput("ack get status...") nexpect.spawn(ack, ['get', 'status', '-n', customNamespace], nexpectOpts) .wait('- Status: deployed', (line) => { utils.logOutput(line) }) .wait('- Description: Install complete', (line) => { utils.logOutput(line) }) .run(runHandler); } utils.runCommandAndWait(getStatus, 30, done); }); // ack get deployments step(`should get deployments in namespace ${customNamespace}`, function(done) { function getDeployment(runHandler) { utils.logOutput("ack get deployment...") let chain = nexpect.spawn(ack, ['get', 'deployments', '-n', customNamespace], nexpectOpts) chain.wait('Name: acksample', (line) => { utils.logOutput(line) }) utils.verifyAdjentLines(chain, utils.getDeployInfo(customNamespace, 1, 1 ,1)); chain.run(runHandler); } utils.runCommandAndWait(getDeployment, 20, 5000, done); }); // check pods step(`should get pods from namespace ${customNamespace}`, function(done) { let chain = nexpect.spawn(ack, ['get', 'pods', '-n', customNamespace], nexpectOpts) chain.wait('Name: acksample', (line) => { utils.logOutput(line) }); utils.verifyAdjentLines(chain, utils.getPodInfo(customNamespace, 'Dev')); chain.run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); // check ingresses step(`should get ingresses from namespace ${customNamespace}`, function(done) { let chain = nexpect.spawn(ack, ['get', 'ingresses', '-n', customNamespace], nexpectOpts) chain.wait('Name: acksample', (line) => { utils.logOutput(line) }); utils.verifyAdjentLines(chain, utils.getIngressInfo(customNamespace, nginxHost, 'acksample')); chain.run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); step('should be able to access nginx from outside', function(done) { function getResult(endHandler) { chai.request(nginxHost) .get(`/`) .end(endHandler); } utils.sendRequestAndWait(getResult, 30, 2000, done); }); step(`should remove release ${customRelease} from namespace ${customNamespace}`, function(done) { nexpect.spawn(ack, ['rm', 'release', customRelease, '-n', customNamespace], nexpectOpts) .wait('Release removed successfully', (line) => { utils.logOutput(line) }) .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); step(`should remove namespace ${customNamespace}`, function(done) { nexpect.spawn(ack, ['rm', 'namespace', customNamespace, '-o', (argv.orgid || config.orgid)], nexpectOpts) .wait('Namespace removed successfully', (line) => { utils.logOutput(line) }) .wait('Kubeconfig file deleted', (line) => { utils.logOutput(line) }) .run(function (err, stdout, exitcode) { utils.logOutput('stdout', stdout); utils.logOutput('exitcode', exitcode); should.not.exist(err); exitcode.should.equal(0); done(); }); }); }); after(function(done) { nexpect.spawn(ack, ['rm', 'release', customRelease, '-n', customNamespace], nexpectOpts) .run(function (err, stdout, exitcode) { nexpect.spawn(ack, ['rm', 'namespace', customNamespace, '-o', (argv.orgid || config.orgid)], nexpectOpts) .run(function (err, stdout, exitcode) { nexpect.spawn("rm", ['-rf', path.join(temdir, sampleChartName)], nexpectOpts) .run(function (err, stdout, exitcode) { done(); }); }); }); }); });