@@ -12,15 +12,14 @@ export default function (providerContext: FtrProviderContext) {
1212 const { getService } = providerContext ;
1313 const supertest = getService ( 'supertest' ) ;
1414 const es = getService ( 'es' ) ;
15- const dockerServers = getService ( 'dockerServers' ) ;
16- const server = dockerServers . get ( 'registry' ) ;
1715 const pkgName = 'datastreams' ;
1816 const pkgVersion = '0.1.0' ;
1917 const pkgUpdateVersion = '0.2.0' ;
2018 const pkgKey = `${ pkgName } -${ pkgVersion } ` ;
2119 const pkgUpdateKey = `${ pkgName } -${ pkgUpdateVersion } ` ;
2220 const logsTemplateName = `logs-${ pkgName } .test_logs` ;
2321 const metricsTemplateName = `metrics-${ pkgName } .test_metrics` ;
22+ const namespaces = [ 'default' , 'foo' , 'bar' ] ;
2423
2524 const uninstallPackage = async ( pkg : string ) => {
2625 await supertest . delete ( `/api/fleet/epm/packages/${ pkg } ` ) . set ( 'kbn-xsrf' , 'xxxx' ) ;
@@ -35,86 +34,105 @@ export default function (providerContext: FtrProviderContext) {
3534
3635 describe ( 'datastreams' , async ( ) => {
3736 skipIfNoDockerRegistry ( providerContext ) ;
37+
3838 beforeEach ( async ( ) => {
3939 await installPackage ( pkgKey ) ;
40- await es . transport . request ( {
41- method : 'POST' ,
42- path : `/${ logsTemplateName } -default/_doc` ,
43- body : {
44- '@timestamp' : '2015-01-01' ,
45- logs_test_name : 'test' ,
46- data_stream : {
47- dataset : `${ pkgName } .test_logs` ,
48- namespace : 'default' ,
49- type : 'logs' ,
50- } ,
51- } ,
52- } ) ;
53- await es . transport . request ( {
54- method : 'POST' ,
55- path : `/${ metricsTemplateName } -default/_doc` ,
56- body : {
57- '@timestamp' : '2015-01-01' ,
58- logs_test_name : 'test' ,
59- data_stream : {
60- dataset : `${ pkgName } .test_metrics` ,
61- namespace : 'default' ,
62- type : 'metrics' ,
63- } ,
64- } ,
65- } ) ;
40+ await Promise . all (
41+ namespaces . map ( async ( namespace ) => {
42+ const createLogsRequest = es . transport . request ( {
43+ method : 'POST' ,
44+ path : `/${ logsTemplateName } -${ namespace } /_doc` ,
45+ body : {
46+ '@timestamp' : '2015-01-01' ,
47+ logs_test_name : 'test' ,
48+ data_stream : {
49+ dataset : `${ pkgName } .test_logs` ,
50+ namespace,
51+ type : 'logs' ,
52+ } ,
53+ } ,
54+ } ) ;
55+ const createMetricsRequest = es . transport . request ( {
56+ method : 'POST' ,
57+ path : `/${ metricsTemplateName } -${ namespace } /_doc` ,
58+ body : {
59+ '@timestamp' : '2015-01-01' ,
60+ logs_test_name : 'test' ,
61+ data_stream : {
62+ dataset : `${ pkgName } .test_metrics` ,
63+ namespace,
64+ type : 'metrics' ,
65+ } ,
66+ } ,
67+ } ) ;
68+ return Promise . all ( [ createLogsRequest , createMetricsRequest ] ) ;
69+ } )
70+ ) ;
6671 } ) ;
72+
6773 afterEach ( async ( ) => {
68- if ( ! server . enabled ) return ;
69- await es . transport . request ( {
70- method : 'DELETE' ,
71- path : `/_data_stream/${ logsTemplateName } -default` ,
72- } ) ;
73- await es . transport . request ( {
74- method : 'DELETE' ,
75- path : `/_data_stream/${ metricsTemplateName } -default` ,
76- } ) ;
74+ await Promise . all (
75+ namespaces . map ( async ( namespace ) => {
76+ const deleteLogsRequest = es . transport . request ( {
77+ method : 'DELETE' ,
78+ path : `/_data_stream/${ logsTemplateName } -${ namespace } ` ,
79+ } ) ;
80+ const deleteMetricsRequest = es . transport . request ( {
81+ method : 'DELETE' ,
82+ path : `/_data_stream/${ metricsTemplateName } -${ namespace } ` ,
83+ } ) ;
84+ return Promise . all ( [ deleteLogsRequest , deleteMetricsRequest ] ) ;
85+ } )
86+ ) ;
7787 await uninstallPackage ( pkgKey ) ;
7888 await uninstallPackage ( pkgUpdateKey ) ;
7989 } ) ;
90+
8091 it ( 'should list the logs and metrics datastream' , async function ( ) {
81- const resLogsDatastream = await es . transport . request ( {
82- method : 'GET' ,
83- path : `/_data_stream/${ logsTemplateName } -default` ,
84- } ) ;
85- const resMetricsDatastream = await es . transport . request ( {
86- method : 'GET' ,
87- path : `/_data_stream/${ metricsTemplateName } -default` ,
92+ namespaces . forEach ( async ( namespace ) => {
93+ const resLogsDatastream = await es . transport . request ( {
94+ method : 'GET' ,
95+ path : `/_data_stream/${ logsTemplateName } -${ namespace } ` ,
96+ } ) ;
97+ const resMetricsDatastream = await es . transport . request ( {
98+ method : 'GET' ,
99+ path : `/_data_stream/${ metricsTemplateName } -${ namespace } ` ,
100+ } ) ;
101+ expect ( resLogsDatastream . body . data_streams . length ) . equal ( 1 ) ;
102+ expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
103+ expect ( resMetricsDatastream . body . data_streams . length ) . equal ( 1 ) ;
104+ expect ( resMetricsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
88105 } ) ;
89- expect ( resLogsDatastream . body . data_streams . length ) . equal ( 1 ) ;
90- expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
91- expect ( resMetricsDatastream . body . data_streams . length ) . equal ( 1 ) ;
92- expect ( resMetricsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
93106 } ) ;
94107
95108 it ( 'after update, it should have rolled over logs datastream because mappings are not compatible and not metrics' , async function ( ) {
96109 await installPackage ( pkgUpdateKey ) ;
97- const resLogsDatastream = await es . transport . request ( {
98- method : 'GET' ,
99- path : `/_data_stream/${ logsTemplateName } -default` ,
100- } ) ;
101- const resMetricsDatastream = await es . transport . request ( {
102- method : 'GET' ,
103- path : `/_data_stream/${ metricsTemplateName } -default` ,
110+ namespaces . forEach ( async ( namespace ) => {
111+ const resLogsDatastream = await es . transport . request ( {
112+ method : 'GET' ,
113+ path : `/_data_stream/${ logsTemplateName } -${ namespace } ` ,
114+ } ) ;
115+ const resMetricsDatastream = await es . transport . request ( {
116+ method : 'GET' ,
117+ path : `/_data_stream/${ metricsTemplateName } -${ namespace } ` ,
118+ } ) ;
119+ expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 2 ) ;
120+ expect ( resMetricsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
104121 } ) ;
105- expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 2 ) ;
106- expect ( resMetricsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 1 ) ;
107122 } ) ;
123+
108124 it ( 'should be able to upgrade a package after a rollover' , async function ( ) {
109- await es . transport . request ( {
110- method : 'POST' ,
111- path : `/${ logsTemplateName } -default/_rollover` ,
112- } ) ;
113- const resLogsDatastream = await es . transport . request ( {
114- method : 'GET' ,
115- path : `/_data_stream/${ logsTemplateName } -default` ,
125+ namespaces . forEach ( async ( namespace ) => {
126+ await es . transport . request ( {
127+ method : 'POST' ,
128+ path : `/${ logsTemplateName } -${ namespace } /_rollover` ,
129+ } ) ;
130+ const resLogsDatastream = await es . transport . request ( {
131+ method : 'GET' ,
132+ path : `/_data_stream/${ logsTemplateName } -${ namespace } ` ,
133+ } ) ;
134+ expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 2 ) ;
116135 } ) ;
117- expect ( resLogsDatastream . body . data_streams [ 0 ] . indices . length ) . equal ( 2 ) ;
118136 await installPackage ( pkgUpdateKey ) ;
119137 } ) ;
120138 } ) ;
0 commit comments