From c03c6beb73f66a3aa30bede33704a37c48c0236b Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 30 Dec 2013 17:42:47 +0100 Subject: [PATCH] Add assertions for the results of CHANGESET_REQ fails nearly all the time :/ The assertions are most likely not broken, so I think the code is. Conflicts: src/node/handler/PadMessageHandler.js --- src/node/handler/PadMessageHandler.js | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 774ebf081..7c1301221 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -1256,6 +1256,49 @@ function handleChangesetRequest(client, message) getChangesetInfo(padIds.padId, start, end, granularity, function(err, changesetInfo) { if(err) return console.error('Error while handling a changeset request for '+padIds.padId, err, message.data); + + // Assert that the paths are correct + var assert = require('assert') + padManager.getPad(message.padId, function(err, pad) { + if(err) return + var headRev = pad.getHeadRevisionNumber() + , fend = start-(granularity*changesetInfo.forwardsChangesets.length) + , bend = start+(granularity*changesetInfo.backwardsChangesets.length) + + if(start > headRev || fend > headRev || bend > headRev) return console.log('Cannot vet from ', start, 'to', end) + + pad.getInternalRevisionAText(start, function(err, atextStart) { + ERR(err) + pad.getInternalRevisionAText(fend, function(err, atextFend) { + ERR(err) + pad.getInternalRevisionAText(bend, function(err, atextBend) { + ERR(err) + console.log(changesetInfo) + + // check forward + console.log('Vetting revision path from ', fend, 'to', start) + var atext = atextFend + changesetInfo.forwardsChangesets.forEach(function(cs) { + atext = Changeset.applyToAText(cs, atext) + }) + assert(atext.text == atextStart.text) + assert(atext.attribs == atextStart.attribs) + console.log('OK') + + // check backward /*/ + console.log('Vetting revision path from ', bend, 'to', start) + atext = atextBend + changesetInfo.backwardsChangesets.forEach(function(cs) { + atext = Changeset.applyToAText(cs, atext) + }) + assert(atext.text == atextStart.text) + assert(atext.attribs == atextStart.attribs) + console.log('OK') + + }) + }) + }) + }) var data = changesetInfo; data.requestID = message.data.requestID;