let expectedUpdates = testData.reduce((sum, { updates }) => sum + updates, 0);
let notifiedScopes = [];
let notifyPromise = promiseObserverNotification(
PushServiceComponent.pushTopic,
(subject, data) => {
notifiedScopes.push(data); return notifiedScopes.length == expectedUpdates;
}
);
let expectedAcks = testData.reduce((sum, { acks }) => sum + acks.length, 0);
let ackDone;
let ackPromise = new Promise(
resolve => (ackDone = after(expectedAcks, resolve))
);
PushService.init({
serverURI: "wss://push.example.org/",
db,
makeWebSocket(uri) { returnnew MockWebSocket(uri, {
onHello() { this.serverSendMsg(
JSON.stringify({
messageType: "hello",
status: 200,
uaid: userAgentID,
use_webpush: true,
})
); for (let { channelID, acks } of testData) { for (let { version } of acks) { this.serverSendMsg(
JSON.stringify({
messageType: "notification",
channelID,
version,
})
);
}
}
},
onACK(request) {
let [ack] = request.updates;
let expectedData = testData.find(
test => test.channelID == ack.channelID
);
ok(expectedData, `Unexpected channel ${ack.channelID}`);
let expectedAck = expectedData.acks.find(
a => a.version == ack.version
);
ok(
expectedAck,
`Unexpected ack for message ${ack.version} on ${ack.channelID}`
);
equal(
expectedAck.code,
ack.code,
`Wrong ack status for message ${ack.version} on ${ack.channelID}`
);
ackDone();
},
});
},
});
await notifyPromise;
await ackPromise;
for (let { channelID, recents } of testData) {
let record = await db.getByKeyID(channelID);
deepEqual(
record.recentMessageIDs,
recents,
`Wrong recent message IDs for ${channelID}`
);
} Assert.equal(
Glean.webPush.detectedDuplicatedMessageIds.testGetValue(),
1, "Should observe one duplicate"
);
});
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.16Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.