Mercurial > hg > thermostat-ng > web-client
changeset 133:35be935626f7
jvm-gc stats can be added to multicharts
Reviewed-by: almac
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-July/024199.html
author | Andrew Azores <aazores@redhat.com> |
---|---|
date | Thu, 20 Jul 2017 11:37:53 -0400 |
parents | 349cb0c9bf64 |
children | 3e5a357f275f |
files | src/app/components/jvm-info/jvm-gc/jvm-gc.controller.js src/app/components/jvm-info/jvm-gc/jvm-gc.controller.spec.js src/app/components/jvm-info/jvm-gc/jvm-gc.html src/app/components/jvm-info/jvm-gc/jvm-gc.service.js src/app/components/jvm-info/jvm-gc/jvm-gc.service.spec.js |
diffstat | 5 files changed, 64 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/app/components/jvm-info/jvm-gc/jvm-gc.controller.js Thu Jul 20 11:37:29 2017 -0400 +++ b/src/app/components/jvm-info/jvm-gc/jvm-gc.controller.js Thu Jul 20 11:37:53 2017 -0400 @@ -31,7 +31,7 @@ class JvmGcController { constructor (jvmId, $scope, $interval, dateFilter, DATE_FORMAT, - metricToNumberFilter, jvmGcService) { + metricToNumberFilter, jvmGcService, sanitizeService) { 'ngInject'; this.jvmId = jvmId; this.scope = $scope; @@ -40,6 +40,7 @@ this.dateFormat = DATE_FORMAT; this.metricToNumberFilter = metricToNumberFilter; this.jvmGcService = jvmGcService; + this.scope.sanitize = sanitizeService.sanitize; this.scope.refreshRate = '1000'; this.scope.dataAgeLimit = '30000'; @@ -218,6 +219,14 @@ this.constructChartData(); } + multichartFn (collector) { + return new Promise(resolve => { + this.jvmGcService.getJvmGcData(this.jvmId, 1, collector).then(resp => { + resolve(this.metricToNumberFilter(resp.data.response[0].wallTimeInMicros)); + }); + }); + } + } export default angular
--- a/src/app/components/jvm-info/jvm-gc/jvm-gc.controller.spec.js Thu Jul 20 11:37:29 2017 -0400 +++ b/src/app/components/jvm-info/jvm-gc/jvm-gc.controller.spec.js Thu Jul 20 11:37:53 2017 -0400 @@ -427,4 +427,31 @@ }); }); + describe('multichartFn', () => { + it('should return a promise', () => { + let res = ctrl.multichartFn(); + res.should.be.a.Promise(); + }); + + it('should resolve jvm-gc stat', done => { + promise.then.should.be.calledOnce(); + let res = ctrl.multichartFn(); + res.then(v => { + v.should.equal(400); + done(); + }); + promise.then.should.be.calledTwice(); + let prom = promise.then.secondCall.args[0]; + prom({ + data: { + response: [ + { + wallTimeInMicros: { $numberLong: '400' } + } + ] + } + }); + }); + }); + });
--- a/src/app/components/jvm-info/jvm-gc/jvm-gc.html Thu Jul 20 11:37:29 2017 -0400 +++ b/src/app/components/jvm-info/jvm-gc/jvm-gc.html Thu Jul 20 11:37:53 2017 -0400 @@ -35,6 +35,7 @@ </div> <div ng-repeat="collector in ctrl.collectors"> <div class="card-pf-body text-center"> + <mc-add class="pull-right" svc-name="{{ctrl.jvmId}}-{{sanitize(collector)}}-gc" get-fn="ctrl.multichartFn(collector)"></mc-add> <div pf-line-chart id="chart-{{collector}}" config="ctrl.chartConfigs[collector]" chart-data="ctrl.chartData[collector]" show-x-axis="true"
--- a/src/app/components/jvm-info/jvm-gc/jvm-gc.service.js Thu Jul 20 11:37:29 2017 -0400 +++ b/src/app/components/jvm-info/jvm-gc/jvm-gc.service.js Thu Jul 20 11:37:53 2017 -0400 @@ -35,14 +35,16 @@ this.gatewayUrl = gatewayUrl; } - getJvmGcData (jvmId, limit = 1) { - return this.http.get(urlJoin(this.gatewayUrl, 'jvm-gc', '0.0.2'), { - params: { - l: limit, - s: '-timeStamp', - q: 'jvmId==' + jvmId - } - }); + getJvmGcData (jvmId, limit = 1, collectorName) { + let params = { + l: limit, + s: '-timeStamp', + q: 'jvmId==' + jvmId + }; + if (collectorName) { + params.q += ',collectorName==' + collectorName; + } + return this.http.get(urlJoin(this.gatewayUrl, 'jvm-gc', '0.0.2'), { params: params }); } }
--- a/src/app/components/jvm-info/jvm-gc/jvm-gc.service.spec.js Thu Jul 20 11:37:29 2017 -0400 +++ b/src/app/components/jvm-info/jvm-gc/jvm-gc.service.spec.js Thu Jul 20 11:37:53 2017 -0400 @@ -54,7 +54,7 @@ should.exist(svc); }); - describe('getJvmGcdata(jvmId)', () => { + describe('getJvmGcdata(jvmId, limit, collectorName)', () => { it('should resolve mock data', done => { let expected = { metaspace: 100 @@ -84,6 +84,21 @@ httpBackend.flush(); scope.$apply(); }); + + it('should allow specifying collectorName', done => { + let expected = { + metaspace: 100 + }; + httpBackend.when('GET', 'http://example.com:1234/jvm-gc/0.0.2?l=5&q=jvmId%3D%3Dfoo-jvmId,collectorName%3D%3DfooCollector&s=-timeStamp') + .respond(expected); + svc.getJvmGcData('foo-jvmId', 5, 'fooCollector').then(res => { + res.data.should.deepEqual(expected); + done(); + }); + httpBackend.expectGET('http://example.com:1234/jvm-gc/0.0.2?l=5&q=jvmId%3D%3Dfoo-jvmId,collectorName%3D%3DfooCollector&s=-timeStamp'); + httpBackend.flush(); + scope.$apply(); + }); }); });