Skip to content

Commit a1bba0d

Browse files
committed
handle error when querying nouveau info + fix unit tests
1 parent 856045f commit a1bba0d

File tree

2 files changed

+133
-26
lines changed

2 files changed

+133
-26
lines changed

api/src/services/monitoring.js

+3-9
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,12 @@ const mapDbInfo = (dbInfo, viewIndexInfos, nouveauIndexInfos) => {
142142
file: defaultNumber(viewIndexInfo.view_index?.sizes?.file),
143143
},
144144
})),
145-
nouveau_indexes: nouveauIndexInfos ? nouveauIndexInfos.map(nouveauIndexInfo => ({
145+
nouveau_indexes: nouveauIndexInfos?.map(nouveauIndexInfo => ({
146146
name: nouveauIndexInfo.name || '',
147147
update_sequence: nouveauIndexInfo.search_index.update_seq,
148148
num_docs: defaultNumber(nouveauIndexInfo.search_index.num_docs),
149149
disk_size: defaultNumber(nouveauIndexInfo.search_index.disk_size),
150-
})) : undefined,
150+
})),
151151
};
152152
};
153153

@@ -198,7 +198,7 @@ const fetchNouveauIndexInfosForDdoc = (db, ddoc) => NOUVEAU_INDEXES_TO_MONITOR[d
198198

199199
const fetchNouveauIndexInfosForDb = (db) => Promise.all(Object.keys(NOUVEAU_INDEXES_TO_MONITOR[db]).flatMap(
200200
ddoc => fetchNouveauIndexInfosForDdoc(db, ddoc),
201-
));
201+
)).then((nouveauIndexInfos) => nouveauIndexInfos.filter(info => info));
202202

203203
const fetchAllNouveauIndexInfos = () => Promise.all(
204204
Object.keys(NOUVEAU_INDEXES_TO_MONITOR).map(fetchNouveauIndexInfosForDb),
@@ -210,16 +210,10 @@ const getDbInfos = async () => {
210210
fetchAllViewIndexInfos(),
211211
fetchAllNouveauIndexInfos(),
212212
]);
213-
// console.log("dbInfos", dbInfos);
214-
// console.log("viewIndexInfos", viewIndexInfos);
215-
// console.log("nouveauInfos", nouveauIndexInfos);
216213
const result = {};
217214
Object.keys(DBS_TO_MONITOR).forEach((dbKey, i) => {
218-
// console.log("dbInfos[i]", dbInfos[i]);
219-
// console.log("viewIndexInfos[i]", viewIndexInfos[i]);
220215
result[dbKey] = mapDbInfo(dbInfos[i], viewIndexInfos[i], nouveauIndexInfos[i]);
221216
});
222-
// console.log("result", result);
223217
return result;
224218
};
225219

api/tests/mocha/services/monitoring.spec.js

+130-17
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,35 @@ const VIEW_INDEX_INFO_BY_DESIGN = {
161161
}
162162
};
163163

164+
const NOUVEAU_DDOCS_BY_DB = {
165+
[environment.db]: ['medic-nouveau'],
166+
};
167+
168+
const NOUVEAU_INDEX_INFO_BY_DDOC = {
169+
'medic-nouveau': {
170+
reports_by_freetext: {
171+
name: '_design/medic-nouveau/reports_by_freetext',
172+
search_index: {
173+
update_seq: 1956891,
174+
purge_seq: 0,
175+
num_docs: 183741,
176+
disk_size: 157258510,
177+
signature: 'cfd67cbb4800308021b6547bcf21cbf99b9476186b5251f317b221225714c5d3',
178+
},
179+
},
180+
contacts_by_freetext: {
181+
name: '_design/medic-nouveau/contacts_by_freetext',
182+
search_index: {
183+
update_seq: 1956891,
184+
purge_seq: 0,
185+
num_docs: 207734,
186+
disk_size: 76815351,
187+
signature: '46de1dfc576838494f798264571dc59658db7ea164915dd459a7752c31591ae6',
188+
},
189+
},
190+
},
191+
};
192+
164193
const setUpMocks = () => {
165194
sinon.stub(deployInfo, 'get').resolves({ version: '5.3.2' });
166195
sinon.stub(request, 'get')
@@ -173,6 +202,16 @@ const setUpMocks = () => {
173202
.resolves(VIEW_INDEX_INFO_BY_DESIGN[designDoc]);
174203
});
175204
});
205+
Object.keys(NOUVEAU_DDOCS_BY_DB).forEach(dbName => {
206+
NOUVEAU_DDOCS_BY_DB[dbName].forEach(designDoc => {
207+
Object.keys(NOUVEAU_INDEX_INFO_BY_DDOC[designDoc]).forEach(indexName => {
208+
request.get
209+
.withArgs(
210+
sinon.match({ url: `${environment.serverUrl}/${dbName}/_design/${designDoc}/_nouveau_info/${indexName}` }),
211+
).resolves(NOUVEAU_INDEX_INFO_BY_DDOC[designDoc][indexName]);
212+
});
213+
});
214+
});
176215
sinon.stub(request, 'post').withArgs(sinon.match({ url: `${environment.serverUrl}/_dbs_info` }))
177216
.resolves(dbInfos);
178217
sinon.stub(db.sentinel, 'get').withArgs('_local/transitions-seq')
@@ -284,9 +323,23 @@ describe('Monitoring service', () => {
284323
update_sequence: 100,
285324
sizes: {
286325
active: 600,
287-
file: 700
326+
file: 700,
288327
},
289-
view_indexes: getExpectedViewIndexes(environment.db)
328+
view_indexes: getExpectedViewIndexes(environment.db),
329+
nouveau_indexes: [
330+
{
331+
disk_size: 76815351,
332+
name: '_design/medic-nouveau/contacts_by_freetext',
333+
num_docs: 207734,
334+
update_sequence: 1956891,
335+
},
336+
{
337+
disk_size: 157258510,
338+
name: '_design/medic-nouveau/reports_by_freetext',
339+
num_docs: 183741,
340+
update_sequence: 1956891,
341+
},
342+
],
290343
},
291344
sentinel: {
292345
doc_count: 30,
@@ -298,7 +351,8 @@ describe('Monitoring service', () => {
298351
active: 500,
299352
file: 500
300353
},
301-
view_indexes: getExpectedViewIndexes(`${environment.db}-sentinel`)
354+
view_indexes: getExpectedViewIndexes(`${environment.db}-sentinel`),
355+
nouveau_indexes: undefined,
302356
},
303357
users: {
304358
doc_count: 50,
@@ -310,7 +364,8 @@ describe('Monitoring service', () => {
310364
active: 500,
311365
file: 501
312366
},
313-
view_indexes: getExpectedViewIndexes('_users')
367+
view_indexes: getExpectedViewIndexes('_users'),
368+
nouveau_indexes: undefined,
314369
},
315370
usersmeta: {
316371
doc_count: 40,
@@ -322,7 +377,8 @@ describe('Monitoring service', () => {
322377
active: 500,
323378
file: 5000
324379
},
325-
view_indexes: getExpectedViewIndexes(`${environment.db}-users-meta`)
380+
view_indexes: getExpectedViewIndexes(`${environment.db}-users-meta`),
381+
nouveau_indexes: undefined,
326382
}
327383
});
328384
chai.expect(actual.messaging).to.deep.equal({
@@ -348,6 +404,14 @@ describe('Monitoring service', () => {
348404
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-admin/_info` }],
349405
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-client/_info` }],
350406
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-conflicts/_info` }],
407+
[{
408+
json: true,
409+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/contacts_by_freetext`,
410+
}],
411+
[{
412+
json: true,
413+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/reports_by_freetext`,
414+
}],
351415
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-scripts/_info` }],
352416
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-sms/_info` }],
353417
[{ json: true, url: `${environment.serverUrl}/${environment.db}-sentinel/_design/sentinel/_info` }],
@@ -395,7 +459,21 @@ describe('Monitoring service', () => {
395459
active: 600,
396460
file: 700
397461
},
398-
view_indexes: getExpectedViewIndexes(environment.db)
462+
view_indexes: getExpectedViewIndexes(environment.db),
463+
nouveau_indexes: [
464+
{
465+
disk_size: 76815351,
466+
name: '_design/medic-nouveau/contacts_by_freetext',
467+
num_docs: 207734,
468+
update_sequence: 1956891,
469+
},
470+
{
471+
disk_size: 157258510,
472+
name: '_design/medic-nouveau/reports_by_freetext',
473+
num_docs: 183741,
474+
update_sequence: 1956891,
475+
},
476+
],
399477
},
400478
sentinel: {
401479
doc_count: 30,
@@ -407,7 +485,8 @@ describe('Monitoring service', () => {
407485
active: 500,
408486
file: 500
409487
},
410-
view_indexes: getExpectedViewIndexes(`${environment.db}-sentinel`)
488+
view_indexes: getExpectedViewIndexes(`${environment.db}-sentinel`),
489+
nouveau_indexes: undefined,
411490
},
412491
users: {
413492
doc_count: 50,
@@ -419,7 +498,8 @@ describe('Monitoring service', () => {
419498
active: 500,
420499
file: 501
421500
},
422-
view_indexes: getExpectedViewIndexes('_users')
501+
view_indexes: getExpectedViewIndexes('_users'),
502+
nouveau_indexes: undefined,
423503
},
424504
usersmeta: {
425505
doc_count: 40,
@@ -431,7 +511,8 @@ describe('Monitoring service', () => {
431511
active: 500,
432512
file: 5000
433513
},
434-
view_indexes: getExpectedViewIndexes(`${environment.db}-users-meta`)
514+
view_indexes: getExpectedViewIndexes(`${environment.db}-users-meta`),
515+
nouveau_indexes: undefined,
435516
}
436517
});
437518
chai.expect(actual.messaging).to.deep.equal({
@@ -484,6 +565,14 @@ describe('Monitoring service', () => {
484565
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-admin/_info` }],
485566
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-client/_info` }],
486567
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-conflicts/_info` }],
568+
[{
569+
json: true,
570+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/contacts_by_freetext`,
571+
}],
572+
[{
573+
json: true,
574+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/reports_by_freetext`,
575+
}],
487576
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-scripts/_info` }],
488577
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-sms/_info` }],
489578
[{ json: true, url: `${environment.serverUrl}/${environment.db}-sentinel/_design/sentinel/_info` }],
@@ -532,7 +621,8 @@ describe('Monitoring service', () => {
532621
active: -1,
533622
file: -1
534623
},
535-
view_indexes: []
624+
view_indexes: [],
625+
nouveau_indexes: [],
536626
},
537627
sentinel: {
538628
doc_count: -1,
@@ -544,7 +634,8 @@ describe('Monitoring service', () => {
544634
active: -1,
545635
file: -1
546636
},
547-
view_indexes: []
637+
view_indexes: [],
638+
nouveau_indexes: undefined,
548639
},
549640
users: {
550641
doc_count: -1,
@@ -556,7 +647,8 @@ describe('Monitoring service', () => {
556647
active: -1,
557648
file: -1
558649
},
559-
view_indexes: []
650+
view_indexes: [],
651+
nouveau_indexes: undefined,
560652
},
561653
usersmeta: {
562654
doc_count: -1,
@@ -568,7 +660,8 @@ describe('Monitoring service', () => {
568660
active: -1,
569661
file: -1
570662
},
571-
view_indexes: []
663+
view_indexes: [],
664+
nouveau_indexes: undefined,
572665
}
573666
});
574667
chai.expect(actual.messaging).to.deep.equal({
@@ -592,6 +685,14 @@ describe('Monitoring service', () => {
592685
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-admin/_info` }],
593686
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-client/_info` }],
594687
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-conflicts/_info` }],
688+
[{
689+
json: true,
690+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/contacts_by_freetext`,
691+
}],
692+
[{
693+
json: true,
694+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/reports_by_freetext`,
695+
}],
595696
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-scripts/_info` }],
596697
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-sms/_info` }],
597698
[{ json: true, url: `${environment.serverUrl}/${environment.db}-sentinel/_design/sentinel/_info` }],
@@ -628,7 +729,8 @@ describe('Monitoring service', () => {
628729
active: -1,
629730
file: -1
630731
},
631-
view_indexes: []
732+
view_indexes: [],
733+
nouveau_indexes: [],
632734
},
633735
sentinel: {
634736
doc_count: -1,
@@ -640,7 +742,8 @@ describe('Monitoring service', () => {
640742
active: -1,
641743
file: -1
642744
},
643-
view_indexes: []
745+
view_indexes: [],
746+
nouveau_indexes: undefined,
644747
},
645748
users: {
646749
doc_count: -1,
@@ -652,7 +755,8 @@ describe('Monitoring service', () => {
652755
active: -1,
653756
file: -1
654757
},
655-
view_indexes: []
758+
view_indexes: [],
759+
nouveau_indexes: undefined,
656760
},
657761
usersmeta: {
658762
doc_count: -1,
@@ -664,7 +768,8 @@ describe('Monitoring service', () => {
664768
active: -1,
665769
file: -1
666770
},
667-
view_indexes: []
771+
view_indexes: [],
772+
nouveau_indexes: undefined,
668773
}
669774
});
670775
chai.expect(actual.messaging).to.deep.equal({
@@ -715,6 +820,14 @@ describe('Monitoring service', () => {
715820
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-admin/_info` }],
716821
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-client/_info` }],
717822
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-conflicts/_info` }],
823+
[{
824+
json: true,
825+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/contacts_by_freetext`,
826+
}],
827+
[{
828+
json: true,
829+
url: `${environment.serverUrl}/${environment.db}/_design/medic-nouveau/_nouveau_info/reports_by_freetext`,
830+
}],
718831
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-scripts/_info` }],
719832
[{ json: true, url: `${environment.serverUrl}/${environment.db}/_design/medic-sms/_info` }],
720833
[{ json: true, url: `${environment.serverUrl}/${environment.db}-sentinel/_design/sentinel/_info` }],

0 commit comments

Comments
 (0)