From e168952f63a7fca009d1dcc8fdc879b9fb4188fd Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Tue, 5 Apr 2016 18:33:11 -0700 Subject: [PATCH] check app graphs --- cloudron.js | 33 ++++++++++++++++++++++++++++++++- test/app-flow-test.js | 4 ++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/cloudron.js b/cloudron.js index fee63cb..def31d0 100644 --- a/cloudron.js +++ b/cloudron.js @@ -10,7 +10,8 @@ var assert = require('assert'), request = require('superagent-sync'), semver = require('semver'), sleep = require('sleep').sleep, - url = require('url'); + url = require('url'), + util = require('util'); exports = module.exports = Cloudron; @@ -305,6 +306,36 @@ Cloudron.prototype.checkA = function (callback) { }); }; +Cloudron.prototype.checkGraphs = function (appId) { + var timePeriod = 2 * 60; // in minutes + var timeBucketSize = 30; // in minutes + + var target = 'summarize(collectd.localhost.table-' + appId + '-memory.gauge-rss, "' + timeBucketSize + 'min", "avg")'; + + var params = { + target: [ target ], + format: 'json', + from: '-' + timePeriod + 'min', + access_token: this._credentials.accessToken + }; + + var res; + for (var i = 0; i < 40; i++) { + sleep(10); + res = request.get(this._origin + '/api/v1/cloudron/graphs').query(params).end(); + if (res.statusCode === 200) { + if (util.isArray(res.body) && res.body.length !== 0 && res.body[0].target && res.body[0].datapoints && res.body[0].datapoints.length !== 0) { + console.log(); + console.log(res.body); + break; + } + } + process.stdout.write('.'); + } + + assert(false, 'Graphs are not populated'); +}; + Cloudron.prototype.checkSPF = function (callback) { var that = this; dns.resolveTxt(this._box.domain, function (error, records) { diff --git a/test/app-flow-test.js b/test/app-flow-test.js index 9dffb21..a35cbb1 100644 --- a/test/app-flow-test.js +++ b/test/app-flow-test.js @@ -75,6 +75,10 @@ describe('Application flow test', function () { cloudron.checkAddons(location, owner); }); + it('displays app graphs', function () { + cloudron.checkGraps(appId); + }); + it('can configure app', function () { location = location + 'x'; cloudron.configureApp(appId, location);