mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[filterBar/createFilter/dateHistogram] update tests
This commit is contained in:
parent
183ee291ab
commit
52d748baa5
2 changed files with 337 additions and 38 deletions
252
test/unit/fixtures/agg_resp/date_histogram.js
Normal file
252
test/unit/fixtures/agg_resp/date_histogram.js
Normal file
|
@ -0,0 +1,252 @@
|
||||||
|
define(function () {
|
||||||
|
return {
|
||||||
|
'took': 35,
|
||||||
|
'timed_out': false,
|
||||||
|
'_shards': {
|
||||||
|
'total': 2,
|
||||||
|
'successful': 2,
|
||||||
|
'failed': 0
|
||||||
|
},
|
||||||
|
'hits': {
|
||||||
|
'total': 32899,
|
||||||
|
'max_score': 0,
|
||||||
|
'hits': []
|
||||||
|
},
|
||||||
|
'aggregations': {
|
||||||
|
'1': {
|
||||||
|
'buckets': [
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T01:00:00.000Z',
|
||||||
|
'key': 1422579600000,
|
||||||
|
'doc_count': 18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T02:00:00.000Z',
|
||||||
|
'key': 1422583200000,
|
||||||
|
'doc_count': 68
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T03:00:00.000Z',
|
||||||
|
'key': 1422586800000,
|
||||||
|
'doc_count': 146
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T04:00:00.000Z',
|
||||||
|
'key': 1422590400000,
|
||||||
|
'doc_count': 149
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T05:00:00.000Z',
|
||||||
|
'key': 1422594000000,
|
||||||
|
'doc_count': 363
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T06:00:00.000Z',
|
||||||
|
'key': 1422597600000,
|
||||||
|
'doc_count': 555
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T07:00:00.000Z',
|
||||||
|
'key': 1422601200000,
|
||||||
|
'doc_count': 878
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T08:00:00.000Z',
|
||||||
|
'key': 1422604800000,
|
||||||
|
'doc_count': 1133
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T09:00:00.000Z',
|
||||||
|
'key': 1422608400000,
|
||||||
|
'doc_count': 1438
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T10:00:00.000Z',
|
||||||
|
'key': 1422612000000,
|
||||||
|
'doc_count': 1719
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T11:00:00.000Z',
|
||||||
|
'key': 1422615600000,
|
||||||
|
'doc_count': 1813
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T12:00:00.000Z',
|
||||||
|
'key': 1422619200000,
|
||||||
|
'doc_count': 1790
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T13:00:00.000Z',
|
||||||
|
'key': 1422622800000,
|
||||||
|
'doc_count': 1582
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T14:00:00.000Z',
|
||||||
|
'key': 1422626400000,
|
||||||
|
'doc_count': 1439
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T15:00:00.000Z',
|
||||||
|
'key': 1422630000000,
|
||||||
|
'doc_count': 1154
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T16:00:00.000Z',
|
||||||
|
'key': 1422633600000,
|
||||||
|
'doc_count': 847
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T17:00:00.000Z',
|
||||||
|
'key': 1422637200000,
|
||||||
|
'doc_count': 588
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T18:00:00.000Z',
|
||||||
|
'key': 1422640800000,
|
||||||
|
'doc_count': 374
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T19:00:00.000Z',
|
||||||
|
'key': 1422644400000,
|
||||||
|
'doc_count': 152
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T20:00:00.000Z',
|
||||||
|
'key': 1422648000000,
|
||||||
|
'doc_count': 140
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T21:00:00.000Z',
|
||||||
|
'key': 1422651600000,
|
||||||
|
'doc_count': 73
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T22:00:00.000Z',
|
||||||
|
'key': 1422655200000,
|
||||||
|
'doc_count': 28
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-30T23:00:00.000Z',
|
||||||
|
'key': 1422658800000,
|
||||||
|
'doc_count': 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T00:00:00.000Z',
|
||||||
|
'key': 1422662400000,
|
||||||
|
'doc_count': 29
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T01:00:00.000Z',
|
||||||
|
'key': 1422666000000,
|
||||||
|
'doc_count': 38
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T02:00:00.000Z',
|
||||||
|
'key': 1422669600000,
|
||||||
|
'doc_count': 70
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T03:00:00.000Z',
|
||||||
|
'key': 1422673200000,
|
||||||
|
'doc_count': 136
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T04:00:00.000Z',
|
||||||
|
'key': 1422676800000,
|
||||||
|
'doc_count': 173
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T05:00:00.000Z',
|
||||||
|
'key': 1422680400000,
|
||||||
|
'doc_count': 370
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T06:00:00.000Z',
|
||||||
|
'key': 1422684000000,
|
||||||
|
'doc_count': 545
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T07:00:00.000Z',
|
||||||
|
'key': 1422687600000,
|
||||||
|
'doc_count': 845
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T08:00:00.000Z',
|
||||||
|
'key': 1422691200000,
|
||||||
|
'doc_count': 1070
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T09:00:00.000Z',
|
||||||
|
'key': 1422694800000,
|
||||||
|
'doc_count': 1419
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T10:00:00.000Z',
|
||||||
|
'key': 1422698400000,
|
||||||
|
'doc_count': 1725
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T11:00:00.000Z',
|
||||||
|
'key': 1422702000000,
|
||||||
|
'doc_count': 1801
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T12:00:00.000Z',
|
||||||
|
'key': 1422705600000,
|
||||||
|
'doc_count': 1823
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T13:00:00.000Z',
|
||||||
|
'key': 1422709200000,
|
||||||
|
'doc_count': 1657
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T14:00:00.000Z',
|
||||||
|
'key': 1422712800000,
|
||||||
|
'doc_count': 1454
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T15:00:00.000Z',
|
||||||
|
'key': 1422716400000,
|
||||||
|
'doc_count': 1131
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T16:00:00.000Z',
|
||||||
|
'key': 1422720000000,
|
||||||
|
'doc_count': 810
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T17:00:00.000Z',
|
||||||
|
'key': 1422723600000,
|
||||||
|
'doc_count': 583
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T18:00:00.000Z',
|
||||||
|
'key': 1422727200000,
|
||||||
|
'doc_count': 384
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T19:00:00.000Z',
|
||||||
|
'key': 1422730800000,
|
||||||
|
'doc_count': 165
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T20:00:00.000Z',
|
||||||
|
'key': 1422734400000,
|
||||||
|
'doc_count': 135
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T21:00:00.000Z',
|
||||||
|
'key': 1422738000000,
|
||||||
|
'doc_count': 72
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'key_as_string': '2015-01-31T22:00:00.000Z',
|
||||||
|
'key': 1422741600000,
|
||||||
|
'doc_count': 8
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
|
@ -1,55 +1,102 @@
|
||||||
define(function (require) {
|
define(function (require) {
|
||||||
var _ = require('lodash');
|
|
||||||
var moment = require('moment');
|
|
||||||
describe('AggConfig Filters', function () {
|
describe('AggConfig Filters', function () {
|
||||||
describe('date_historgram', function () {
|
describe('date_histogram', function () {
|
||||||
var AggConfig;
|
var _ = require('lodash');
|
||||||
var indexPattern;
|
var moment = require('moment');
|
||||||
var Vis;
|
var sinon = require('test_utils/auto_release_sinon');
|
||||||
var createFilter;
|
var aggResp = require('fixtures/agg_resp/date_histogram');
|
||||||
|
|
||||||
|
var vis;
|
||||||
|
var agg;
|
||||||
|
var field;
|
||||||
|
var filter;
|
||||||
|
var bucketKey;
|
||||||
|
var bucketStart;
|
||||||
|
var getIntervalStub;
|
||||||
|
var intervalOptions;
|
||||||
|
|
||||||
|
var init;
|
||||||
|
|
||||||
beforeEach(module('kibana'));
|
beforeEach(module('kibana'));
|
||||||
beforeEach(inject(function (Private) {
|
beforeEach(inject(function (Private, $injector) {
|
||||||
Vis = Private(require('components/vis/vis'));
|
var Vis = Private(require('components/vis/vis'));
|
||||||
AggConfig = Private(require('components/vis/_agg_config'));
|
var indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern'));
|
||||||
indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern'));
|
var createFilter = Private(require('components/agg_types/buckets/create_filter/date_histogram'));
|
||||||
createFilter = Private(require('components/agg_types/buckets/create_filter/date_histogram'));
|
var TimeBuckets = Private(require('components/time_buckets/time_buckets'));
|
||||||
}));
|
intervalOptions = Private(require('components/agg_types/buckets/_interval_options'));
|
||||||
|
|
||||||
var runTest = function (intervalString, interval) {
|
init = function (interval, duration) {
|
||||||
it('should return a range filter for ' + intervalString, function () {
|
interval = interval || 'auto';
|
||||||
var vis = new Vis(indexPattern, {
|
duration = duration || moment.duration(15, 'minutes');
|
||||||
|
|
||||||
|
bucketKey = _.sample(aggResp.aggregations['1'].buckets).key;
|
||||||
|
bucketStart = moment(bucketKey);
|
||||||
|
|
||||||
|
var timePad = moment.duration(duration / 2);
|
||||||
|
var timeBuckets = new TimeBuckets();
|
||||||
|
timeBuckets.setBounds({
|
||||||
|
min: bucketStart.clone().subtract(timePad),
|
||||||
|
max: bucketStart.clone().add(timePad),
|
||||||
|
});
|
||||||
|
timeBuckets.setInterval(interval);
|
||||||
|
|
||||||
|
field = _.sample(indexPattern.fields.byType.date);
|
||||||
|
vis = new Vis(indexPattern, {
|
||||||
type: 'histogram',
|
type: 'histogram',
|
||||||
aggs: [
|
aggs: [
|
||||||
{
|
{
|
||||||
type: 'date_histogram',
|
type: 'date_histogram',
|
||||||
schema: 'segment',
|
schema: 'segment',
|
||||||
params: { field: '@timestamp', interval: intervalString }
|
params: { field: field.name, interval: interval, buckets: timeBuckets }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
var aggConfig = vis.aggs.byTypeName.date_histogram[0];
|
|
||||||
var date = moment('2014-01-01 12:00');
|
agg = vis.aggs[0];
|
||||||
var max = date.clone().add(interval, 'ms');
|
filter = createFilter(agg, bucketKey);
|
||||||
var filter = createFilter(aggConfig, date.valueOf());
|
};
|
||||||
expect(filter).to.have.property('range');
|
}));
|
||||||
expect(filter).to.have.property('meta');
|
|
||||||
expect(filter.range).to.have.property('@timestamp');
|
it('creates a valid range filter', function () {
|
||||||
expect(filter.range['@timestamp']).to.have.property('gte', date.valueOf());
|
init();
|
||||||
expect(filter.range['@timestamp']).to.have.property('lte', max.valueOf());
|
|
||||||
expect(filter.meta).to.have.property('index', indexPattern.id);
|
expect(filter).to.have.property('range');
|
||||||
|
expect(filter.range).to.have.property(field.name);
|
||||||
|
|
||||||
|
var fieldParams = filter.range[field.name];
|
||||||
|
expect(fieldParams).to.have.property('gte');
|
||||||
|
expect(fieldParams.gte).to.be.a('number');
|
||||||
|
|
||||||
|
expect(fieldParams).to.have.property('lte');
|
||||||
|
expect(fieldParams.lte).to.be.a('number');
|
||||||
|
|
||||||
|
expect(fieldParams.gte).to.be.lessThan(fieldParams.lte);
|
||||||
|
|
||||||
|
expect(filter).to.have.property('meta');
|
||||||
|
expect(filter.meta).to.have.property('index', vis.indexPattern.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('extends the filter edge to 1ms before the next bucket for all interval options', function () {
|
||||||
|
intervalOptions.forEach(function (option) {
|
||||||
|
var duration;
|
||||||
|
if (moment(1, option.val).isValid()) {
|
||||||
|
duration = moment.duration(10, option.val);
|
||||||
|
|
||||||
|
if (+duration < 10) {
|
||||||
|
throw new Error('unable to create interval for ' + option.val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init(option.val, duration);
|
||||||
|
|
||||||
|
var interval = agg.params.buckets.getInterval();
|
||||||
|
var params = filter.range[field.name];
|
||||||
|
|
||||||
|
expect(params.gte).to.be(+bucketStart);
|
||||||
|
expect(params.lte).to.be(+bucketStart.clone().add(interval).subtract(1, 'ms'));
|
||||||
});
|
});
|
||||||
};
|
});
|
||||||
|
|
||||||
runTest('auto', 30000);
|
|
||||||
runTest('second', 10000);
|
|
||||||
runTest('minute', 60000);
|
|
||||||
runTest('hour', 3600000);
|
|
||||||
runTest('day', 86400000);
|
|
||||||
runTest('week', 604800000);
|
|
||||||
runTest('month', 2592000000);
|
|
||||||
runTest('year', 31536000000);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue