mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 21:35:39 +00:00
Bug 1397061 - Adjust clock skew according to CDN cache age r=mgoodwin
MozReview-Commit-ID: 9HPiNIp8bJM --HG-- extra : rebase_source : c01ec8c17034a8173c46e9507613b88df65e47ba
This commit is contained in:
parent
b1ba712637
commit
dd30c35e2c
@ -164,7 +164,10 @@ async function fetchLatestChanges(url, lastEtag) {
|
||||
// The server should always return ETag. But we've had situations where the CDN
|
||||
// was interfering.
|
||||
const currentEtag = response.headers.has("ETag") ? response.headers.get("ETag") : undefined;
|
||||
const serverTimeMillis = Date.parse(response.headers.get("Date"));
|
||||
let serverTimeMillis = Date.parse(response.headers.get("Date"));
|
||||
// Since the response is served via a CDN, the Date header value could have been cached.
|
||||
const ageSeconds = response.headers.has("Age") ? parseInt(response.headers.get("Age"), 10) : 0;
|
||||
serverTimeMillis += ageSeconds * 1000;
|
||||
|
||||
// Check if the server asked the clients to back off.
|
||||
let backoffSeconds;
|
||||
|
@ -248,6 +248,29 @@ add_task(async function test_check_clockskew_is_updated() {
|
||||
add_task(clear_state);
|
||||
|
||||
|
||||
add_task(async function test_check_clockskew_takes_age_into_account() {
|
||||
const currentTime = Date.now();
|
||||
const skew = 5000;
|
||||
const serverTime = currentTime - skew;
|
||||
const ageCDN = 3600;
|
||||
|
||||
function serverResponse(request, response) {
|
||||
response.setHeader("Content-Type", "application/json; charset=UTF-8");
|
||||
response.setHeader("Date", (new Date(serverTime)).toUTCString());
|
||||
response.setHeader("Age", `${ageCDN}`);
|
||||
response.write(JSON.stringify({data: []}));
|
||||
response.setStatusLine(null, 200, "OK");
|
||||
}
|
||||
server.registerPathHandler(CHANGES_PATH, serverResponse);
|
||||
|
||||
await RemoteSettings.pollChanges();
|
||||
|
||||
const clockSkew = Services.prefs.getIntPref(PREF_CLOCK_SKEW_SECONDS);
|
||||
Assert.equal(clockSkew, skew / 1000 - ageCDN, `clockSkew is ${clockSkew}`);
|
||||
});
|
||||
add_task(clear_state);
|
||||
|
||||
|
||||
add_task(async function test_backoff() {
|
||||
const startHistogram = getUptakeTelemetrySnapshot(TELEMETRY_HISTOGRAM_KEY);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user