Files
smartbooking/src/main/webapp/app/admin/metrics/metrics.component.spec.ts

272 lines
6.2 KiB
TypeScript

import { shallowMount } from '@vue/test-utils';
import axios from 'axios';
import sinon from 'sinon';
import MetricsService from './metrics.service';
import Metrics from './metrics.vue';
type MetricsComponentType = InstanceType<typeof Metrics>;
const axiosStub = {
get: sinon.stub(axios, 'get'),
};
describe('Metrics Component', () => {
let metricsComponent: MetricsComponentType;
const response = {
jvm: {
'PS Eden Space': {
committed: 5.57842432e8,
max: 6.49592832e8,
used: 4.20828184e8,
},
'Code Cache': {
committed: 2.3461888e7,
max: 2.5165824e8,
used: 2.2594368e7,
},
'Compressed Class Space': {
committed: 1.2320768e7,
max: 1.073741824e9,
used: 1.1514008e7,
},
'PS Survivor Space': {
committed: 1.5204352e7,
max: 1.5204352e7,
used: 1.2244376e7,
},
'PS Old Gen': {
committed: 1.10624768e8,
max: 1.37887744e9,
used: 4.1390776e7,
},
Metaspace: {
committed: 9.170944e7,
max: -1.0,
used: 8.7377552e7,
},
},
databases: {
min: {
value: 10.0,
},
max: {
value: 10.0,
},
idle: {
value: 10.0,
},
usage: {
'0.0': 0.0,
'1.0': 0.0,
max: 0.0,
totalTime: 4210.0,
mean: 701.6666666666666,
'0.5': 0.0,
count: 6,
'0.99': 0.0,
'0.75': 0.0,
'0.95': 0.0,
},
pending: {
value: 0.0,
},
active: {
value: 0.0,
},
acquire: {
'0.0': 0.0,
'1.0': 0.0,
max: 0.0,
totalTime: 0.884426,
mean: 0.14740433333333333,
'0.5': 0.0,
count: 6,
'0.99': 0.0,
'0.75': 0.0,
'0.95': 0.0,
},
creation: {
'0.0': 0.0,
'1.0': 0.0,
max: 0.0,
totalTime: 27.0,
mean: 3.0,
'0.5': 0.0,
count: 9,
'0.99': 0.0,
'0.75': 0.0,
'0.95': 0.0,
},
connections: {
value: 10.0,
},
},
'http.server.requests': {
all: {
count: 5,
},
percode: {
'200': {
max: 0.0,
mean: 298.9012628,
count: 5,
},
},
},
cache: {
usersByEmail: {
'cache.gets.miss': 0.0,
'cache.puts': 0.0,
'cache.gets.hit': 0.0,
'cache.removals': 0.0,
'cache.evictions': 0.0,
},
usersByLogin: {
'cache.gets.miss': 1.0,
'cache.puts': 1.0,
'cache.gets.hit': 1.0,
'cache.removals': 0.0,
'cache.evictions': 0.0,
},
'tech.jhipster.domain.Authority': {
'cache.gets.miss': 0.0,
'cache.puts': 2.0,
'cache.gets.hit': 0.0,
'cache.removals': 0.0,
'cache.evictions': 0.0,
},
'tech.jhipster.domain.User.authorities': {
'cache.gets.miss': 0.0,
'cache.puts': 1.0,
'cache.gets.hit': 0.0,
'cache.removals': 0.0,
'cache.evictions': 0.0,
},
'tech.jhipster.domain.User': {
'cache.gets.miss': 0.0,
'cache.puts': 1.0,
'cache.gets.hit': 0.0,
'cache.removals': 0.0,
'cache.evictions': 0.0,
},
},
garbageCollector: {
'jvm.gc.max.data.size': 1.37887744e9,
'jvm.gc.pause': {
'0.0': 0.0,
'1.0': 0.0,
max: 0.0,
totalTime: 242.0,
mean: 242.0,
'0.5': 0.0,
count: 1,
'0.99': 0.0,
'0.75': 0.0,
'0.95': 0.0,
},
'jvm.gc.memory.promoted': 2.992732e7,
'jvm.gc.memory.allocated': 1.26362872e9,
classesLoaded: 17393.0,
'jvm.gc.live.data.size': 3.1554408e7,
classesUnloaded: 0.0,
},
services: {
'/management/info': {
GET: {
max: 0.0,
mean: 104.952893,
count: 1,
},
},
'/api/authenticate': {
POST: {
max: 0.0,
mean: 909.53003,
count: 1,
},
},
'/api/account': {
GET: {
max: 0.0,
mean: 141.209628,
count: 1,
},
},
'/**': {
GET: {
max: 0.0,
mean: 169.4068815,
count: 2,
},
},
},
processMetrics: {
'system.load.average.1m': 3.63,
'system.cpu.usage': 0.5724934148485453,
'system.cpu.count': 4.0,
'process.start.time': 1.548140811306e12,
'process.files.open': 205.0,
'process.cpu.usage': 0.003456347568026252,
'process.uptime': 88404.0,
'process.files.max': 1048576.0,
},
threads: [{ name: 'test1', threadState: 'RUNNABLE' }],
};
beforeEach(() => {
axiosStub.get.resolves({ data: { timers: [], gauges: [] } });
const wrapper = shallowMount(Metrics, {
global: {
stubs: {
bModal: true,
bProgress: true,
bProgressBar: true,
'font-awesome-icon': true,
'metrics-modal': true,
},
directives: {
'b-modal': {},
'b-progress': {},
'b-progress-bar': {},
},
provide: {
metricsService: new MetricsService(),
},
},
});
metricsComponent = wrapper.vm;
});
describe('refresh', () => {
it('should call refresh on init', async () => {
// GIVEN
axiosStub.get.resolves({ data: response });
// WHEN
await metricsComponent.refresh();
await metricsComponent.$nextTick();
// THEN
expect(axiosStub.get.calledWith('management/jhimetrics')).toBeTruthy();
expect(axiosStub.get.calledWith('management/threaddump')).toBeTruthy();
expect(metricsComponent.metrics).toHaveProperty('jvm');
expect(metricsComponent.metrics).toEqual(response);
expect(metricsComponent.threadStats).toEqual({
threadDumpRunnable: 1,
threadDumpWaiting: 0,
threadDumpTimedWaiting: 0,
threadDumpBlocked: 0,
threadDumpAll: 1,
});
});
});
describe('isNan', () => {
it('should return if a variable is NaN', () => {
expect(metricsComponent.filterNaN(1)).toBe(1);
expect(metricsComponent.filterNaN('test')).toBe(0);
});
});
});