Bug 1309774 - Part 2. Add version number to validation data in sync ping. r=markh

MozReview-Commit-ID: FlDSEsT1ah9

--HG--
extra : rebase_source : 327bcac18dba5c685092e311e2be880b6d616e07
This commit is contained in:
Thom Chiovoloni 2016-10-20 15:20:07 -04:00
parent c392f4a9b5
commit b9e92c7821
6 changed files with 17 additions and 4 deletions

View File

@ -22,6 +22,7 @@ function isNodeIgnored(treeNode) {
return treeNode.annos && treeNode.annos.some(anno => anno.name == LEFT_PANE_ROOT_ANNO ||
anno.name == LEFT_PANE_QUERY_ANNO);
}
const BOOKMARK_VALIDATOR_VERSION = 1;
/**
* Result of bookmark validation. Contains the following fields which describe
@ -763,6 +764,7 @@ class BookmarkValidator {
let duration = end-start;
return {
duration,
version: self.version,
problems: result.problemData,
recordCount: serverRecordCount
};
@ -771,5 +773,5 @@ class BookmarkValidator {
};
BookmarkValidator.prototype.version = BOOKMARK_VALIDATOR_VERSION;

View File

@ -199,3 +199,6 @@ class CollectionValidator {
};
}
}
// Default to 0, some engines may override.
CollectionValidator.prototype.version = 0;

View File

@ -177,8 +177,9 @@ class EngineRecord {
log.error(`Multiple validations occurred for engine ${this.name}!`);
return;
}
let { problems, duration, recordCount } = validationResult;
let { problems, version, duration, recordCount } = validationResult;
let validation = {
version: version || 0,
checked: recordCount || 0,
};
if (duration > 0) {

View File

@ -106,6 +106,7 @@
"checked": { "type": "integer", "minimum": 0 },
"failureReason": { "$ref": "#/definitions/error" },
"took": { "type": "integer" },
"version": { "type": "integer" },
"problems": {
"type": "array",
"minItems": 1,

View File

@ -305,10 +305,13 @@ function validationPing(server, client, duration) {
Svc.Obs.notify("weave:service:sync:start");
Svc.Obs.notify("weave:engine:sync:start", null, "bookmarks");
Svc.Obs.notify("weave:engine:sync:finish", null, "bookmarks");
let validator = new BookmarkValidator();
let data = {
duration, // We fake this just so that we can verify it's passed through.
// We fake duration and version just so that we can verify they're passed through.
duration,
version: validator.version,
recordCount: server.length,
problems: new BookmarkValidator().compareServerWithClient(server, client).problemData,
problems: validator.compareServerWithClient(server, client).problemData,
};
Svc.Obs.notify("weave:engine:validate:finish", data, "bookmarks");
Svc.Obs.notify("weave:service:sync:finish");
@ -330,6 +333,7 @@ add_task(function *test_telemetry_integration() {
equal(bme.validation.checked, server.length);
equal(bme.validation.took, duration);
bme.validation.problems.sort((a, b) => String.localeCompare(a.name, b.name));
equal(bme.validation.version, new BookmarkValidator().version);
deepEqual(bme.validation.problems, [
{ name: "badClientRoots", count: 3 },
{ name: "sdiff:childGUIDs", count: 1 },

View File

@ -80,6 +80,8 @@ Structure:
// Optional, excluded if it would be empty or if the engine cannot
// or did not run validation on itself.
validation: {
// Optional validator version, default of 0.
version: <integer>,
checked: <integer>,
took: <non-monotonic integer duration in milliseconds>,
// Entries with a count of 0 are excluded, the array is excluded if no problems are found.