sitespeed.io/test/graphiteTests.js

101 lines
2.5 KiB
JavaScript

import test from 'ava';
import dayjs from 'dayjs';
import { getLogger } from '@sitespeed.io/log';
// eslint-disable-next-line unicorn/no-named-default
import { default as GraphitePlugin } from '../lib/plugins/graphite/index.js';
import { GraphiteDataGenerator as DataGenerator } from '../lib/plugins/graphite/data-generator.js';
test(`Test dataGenerator`, t => {
const message = {
type: 'gpsi.pageSummary',
timestamp: '2016-01-08T12:59:06+01:00',
source: 'gpsi',
data: {
median: '13',
mean: '14.42',
min: '13',
p10: '13',
p70: '16',
p80: '16',
p90: '16',
p99: '16',
max: '16'
},
url: 'http://sub.domain.com/foo/bar'
};
let generator = new DataGenerator('ns', false, {
_: ['filename'],
browser: 'chrome',
browsertime: {
connectivity: {
profile: 'cable'
}
}
});
const data = generator.dataFromMessage(message, dayjs());
t.true(
data[0].startsWith(
'ns.pageSummary.sub_domain_com._foo_bar.gpsi.desktop.median 13'
)
);
});
test(`Test generate data in statsD format`, t => {
const message = {
type: 'domains.summary',
timestamp: '2016-01-08T12:59:06+01:00',
source: 'domains',
data: {
'www.sitespeed.io': {
dns: {
median: '0',
mean: '13',
min: '0',
p10: '0',
p90: '40',
p99: '40',
max: '40'
}
}
},
group: 'sub_domain_com'
};
let generator = new DataGenerator('ns', false, {
_: ['sub_domain_com'],
browser: 'chrome',
browsertime: {
connectivity: {
profile: 'cable'
}
},
graphite: { statsd: true }
});
const data = generator.dataFromMessage(message, dayjs());
const statsDFormat = new RegExp(
/ns.summary.sub_domain_com.chrome.cable.domains.www.sitespeed.io.dns.(median|mean|min|p10|p90|p99|max):\d+\|ms$/
);
for (let line of data) {
t.true(statsDFormat.test(line));
}
});
test(`Use graphite interface by default`, async t => {
const options = {
graphite: {
host: '127.0.0.1'
}
};
const { messageMaker } = await import('../lib/support/messageMaker.js');
const filterRegistry = await import('../lib/support/filterRegistry.js');
const statsHelpers = await import('../lib/support/statsHelpers.js');
const context = { messageMaker, filterRegistry, getLogger, statsHelpers };
const plugin = new GraphitePlugin(options, context);
plugin.open(context, options);
t.is(plugin.sender.facility, 'Graphite');
});