* EsArchiver: support for injecting kibana version and use it for speeding up spaces tests * Use kbn/utils to get current kibana version in tests * Review feedback: improve test by splitting variable over chunks # Conflicts: # x-pack/test/functional/es_archives/saved_objects_management/spaces_integration/mappings.json # x-pack/test/saved_object_api_integration/common/fixtures/es_archiver/saved_objects/spaces/mappings.json # x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/mappings.json
This commit is contained in:
parent
17cdb8107c
commit
953ee4bdc3
5 changed files with 41 additions and 9 deletions
|
@ -9,7 +9,12 @@
|
|||
import Stream, { PassThrough, Readable, Writable, Transform } from 'stream';
|
||||
import { createGzip } from 'zlib';
|
||||
|
||||
import { createConcatStream, createListStream, createPromiseFromStreams } from '@kbn/utils';
|
||||
import {
|
||||
createConcatStream,
|
||||
createListStream,
|
||||
createPromiseFromStreams,
|
||||
kibanaPackageJson,
|
||||
} from '@kbn/utils';
|
||||
|
||||
import { createParseArchiveStreams } from './parse';
|
||||
|
||||
|
@ -54,6 +59,17 @@ describe('esArchiver createParseArchiveStreams', () => {
|
|||
expect(output).toEqual([{ a: 1 }, 1]);
|
||||
});
|
||||
|
||||
it('replaces $KIBANA_PACKAGE_VERSION with the current kibana version', async () => {
|
||||
const output = await createPromiseFromStreams([
|
||||
createListStream([
|
||||
Buffer.from('{"$KIBANA'),
|
||||
Buffer.from('_PACKAGE_VERSION": "enabled"}'),
|
||||
]),
|
||||
...createParseArchiveStreams({ gzip: false }),
|
||||
]);
|
||||
return expect(output).toEqual({ [kibanaPackageJson.version]: 'enabled' });
|
||||
});
|
||||
|
||||
it('provides each JSON object as soon as it is parsed', async () => {
|
||||
let onReceived: (resolved: any) => void;
|
||||
const receivedPromise = new Promise((resolve) => (onReceived = resolve));
|
||||
|
@ -74,11 +90,13 @@ describe('esArchiver createParseArchiveStreams', () => {
|
|||
createConcatStream([]),
|
||||
] as [Readable, ...Writable[]]);
|
||||
|
||||
input.write(Buffer.from('{"a": 1}\n\n{"a":'));
|
||||
// before emitting a result, the buffer waits until it at least receives toReplace.length bytes
|
||||
// so we need a long second object to ensure that the first gets emitted.
|
||||
input.write(Buffer.from('{"a": 1}\n\n{"propertyNameLongerThanToReplace":'));
|
||||
expect(await receivedPromise).toEqual({ a: 1 });
|
||||
input.write(Buffer.from('2}'));
|
||||
input.end();
|
||||
expect(await finalPromise).toEqual([{ a: 1 }, { a: 2 }]);
|
||||
expect(await finalPromise).toEqual([{ a: 1 }, { propertyNameLongerThanToReplace: 2 }]);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -136,6 +154,18 @@ describe('esArchiver createParseArchiveStreams', () => {
|
|||
|
||||
expect(output).toEqual([{ a: 1 }, { a: 2 }]);
|
||||
});
|
||||
|
||||
it('replaces $KIBANA_PACKAGE_VERSION with the current kibana version', async () => {
|
||||
const output = await createPromiseFromStreams([
|
||||
createListStream([
|
||||
Buffer.from('{"$KIBANA_PACKAGE'),
|
||||
Buffer.from('_VERSION": "enabled"}'),
|
||||
]),
|
||||
createGzip(),
|
||||
...createParseArchiveStreams({ gzip: true }),
|
||||
]);
|
||||
return expect(output).toEqual({ [kibanaPackageJson.version]: 'enabled' });
|
||||
});
|
||||
});
|
||||
|
||||
it('parses blank files', async () => {
|
||||
|
|
|
@ -13,6 +13,7 @@ import {
|
|||
createSplitStream,
|
||||
createReplaceStream,
|
||||
createMapStream,
|
||||
kibanaPackageJson,
|
||||
} from '@kbn/utils';
|
||||
|
||||
import { RECORD_SEPARATOR } from './constants';
|
||||
|
@ -21,6 +22,7 @@ export function createParseArchiveStreams({ gzip = false } = {}) {
|
|||
return [
|
||||
gzip ? createGunzip() : new PassThrough(),
|
||||
createReplaceStream('\r\n', '\n'),
|
||||
createReplaceStream('$KIBANA_PACKAGE_VERSION', kibanaPackageJson.version),
|
||||
createSplitStream(RECORD_SEPARATOR),
|
||||
createFilterStream<string>((l) => !!l.match(/[^\s]/)),
|
||||
createMapStream<string>((json) => JSON.parse(json.trim())),
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
"type": "index",
|
||||
"value": {
|
||||
"aliases": {
|
||||
".kibana_7.13.0": {},
|
||||
".kibana_$KIBANA_PACKAGE_VERSION": {},
|
||||
".kibana": {}
|
||||
},
|
||||
"index": ".kibana_7.13.0_001",
|
||||
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
|
||||
"mappings": {
|
||||
"doc": {
|
||||
"dynamic": "false",
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
"type": "index",
|
||||
"value": {
|
||||
"aliases": {
|
||||
".kibana_7.13.0": {},
|
||||
".kibana_$KIBANA_PACKAGE_VERSION": {},
|
||||
".kibana": {}
|
||||
},
|
||||
"index": ".kibana_7.13.0_001",
|
||||
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
|
||||
"mappings": {
|
||||
"doc": {
|
||||
"dynamic": "false",
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
"type": "index",
|
||||
"value": {
|
||||
"aliases": {
|
||||
".kibana_7.13.0": {},
|
||||
".kibana_$KIBANA_PACKAGE_VERSION": {},
|
||||
".kibana": {}
|
||||
},
|
||||
"index": ".kibana_7.13.0_001",
|
||||
"index": ".kibana_$KIBANA_PACKAGE_VERSION_001",
|
||||
"mappings": {
|
||||
"doc": {
|
||||
"dynamic": "false",
|
||||
|
|
Loading…
Reference in a new issue