Skip to content

Commit

Permalink
Adding diagnostic tracing to parsing of ai_session cookie
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxShehovtsov committed Jun 10, 2015
1 parent 8f05cef commit 0391851
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,8 @@ class SessionContextTests extends TestClass {
};

var testGuid = "00000000-0000-0000-0000-000000000000";
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var acquisitionDate = +new Date();
var renewalDate = +new Date();

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand Down Expand Up @@ -164,8 +164,8 @@ class SessionContextTests extends TestClass {
var delta = (Microsoft.ApplicationInsights.Context._SessionManager.renewalSpan + 1);
this.clock.tick(delta); // safari crashes without this
var cookieTime = +new Date - delta;
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var acquisitionDate = +new Date(cookieTime);
var renewalDate = +new Date(cookieTime);

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand All @@ -190,8 +190,8 @@ class SessionContextTests extends TestClass {
var delta = (Microsoft.ApplicationInsights.Context._SessionManager.acquisitionSpan + 1);
this.clock.tick(delta); // safari crashes without this
var cookieTime = +new Date - delta;
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var acquisitionDate = +new Date(cookieTime);
var renewalDate = +new Date();

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand All @@ -213,8 +213,8 @@ class SessionContextTests extends TestClass {
test: () => {
// setup
var testGuid = "00000000-0000-0000-0000-000000000000";
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var acquisitionDate = +new Date();
var renewalDate = +new Date();

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand All @@ -239,8 +239,8 @@ class SessionContextTests extends TestClass {
var delta = (Microsoft.ApplicationInsights.Context._SessionManager.renewalSpan + 1);
this.clock.tick(delta); // safari crashes without this
var cookieTime = +new Date - delta;
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var acquisitionDate = +new Date(cookieTime);
var renewalDate = +new Date(cookieTime);

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand Down Expand Up @@ -268,8 +268,8 @@ class SessionContextTests extends TestClass {
var delta = (Microsoft.ApplicationInsights.Context._SessionManager.acquisitionSpan + 1);
this.clock.tick(delta); // safari crashes without this
var cookieTime = +new Date - delta;
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date(cookieTime));
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var acquisitionDate = +new Date(cookieTime);
var renewalDate = +new Date();

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand All @@ -291,8 +291,8 @@ class SessionContextTests extends TestClass {
test: () => {
// setup
var testGuid = "00000000-0000-0000-0000-000000000000";
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var acquisitionDate = +new Date();
var renewalDate = +new Date();

this.setFakeCookie(testGuid, acquisitionDate, renewalDate);

Expand Down Expand Up @@ -337,6 +337,33 @@ class SessionContextTests extends TestClass {
Assert.equal(sessionExpirationMs, sessionManager.config.sessionExpirationMs(), "config sessionExpirationMs is updated correctly");
}
});

/* Temporarily disabled until we figure out sinon js behavior with Date.
* Problems:
* - new Date normally gives the current date, with sinon - 1970
* - new Date(NaN) normally throws an exception, with sinon - return undefined
this.testCase({
name: "SessionContext: renewal and aquisition dates from cookie are treated as numbers",
test: () => {
// setup
var testGuid = "00000000-0000-0000-0000-000000000000";
var acquisitionDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
var renewalDate = Microsoft.ApplicationInsights.Util.toISOStringForIE8(new Date());
this.setFakeCookie(testGuid, acquisitionDate, renewalDate);
// act
var sessionManager = new Microsoft.ApplicationInsights.Context._SessionManager(null,(t) => { this.results.push(t); });
sessionManager.update();
// TODO: CHECK THAT A PARSING ERROR OCCURRED AND WE SENT A DIAGNOSTIC TRACE
this.restoreFakeCookie();
}
});
*/
}

private setFakeCookie(id, acqDate, renewalDate) {
Expand Down
28 changes: 18 additions & 10 deletions JavaScript/JavaScriptSDK/Context/Session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,24 @@ module Microsoft.ApplicationInsights.Context {
this.automaticSession.id = params[0];
}

if (params.length > 1) {
var acq = +params[1];
this.automaticSession.acquisitionDate = +new Date(acq);
this.automaticSession.acquisitionDate = this.automaticSession.acquisitionDate > 0 ? this.automaticSession.acquisitionDate : 0;
}

if (params.length > 2) {
var renewal = +params[2];
this.automaticSession.renewalDate = +new Date(renewal);
this.automaticSession.renewalDate = this.automaticSession.renewalDate > 0 ? this.automaticSession.renewalDate : 0;
try {
if (params.length > 1) {
var acq = +params[1];
this.automaticSession.acquisitionDate = +new Date(acq);
this.automaticSession.acquisitionDate = this.automaticSession.acquisitionDate > 0 ? this.automaticSession.acquisitionDate : 0;
}

if (params.length > 2) {
var renewal = +params[2];
this.automaticSession.renewalDate = +new Date(renewal);
this.automaticSession.renewalDate = this.automaticSession.renewalDate > 0 ? this.automaticSession.renewalDate : 0;
}
} catch (e) {
_InternalLogging.throwInternalNonUserActionable(LoggingSeverity.WARNING, "Error parsing ai_session cookie, session will be reset: " + JSON.stringify(e));
}

if (this.automaticSession.renewalDate == 0) {
_InternalLogging.throwInternalNonUserActionable(LoggingSeverity.WARNING, "AI sessoin renewal date is 0, session will be reset.");
}
}

Expand Down

0 comments on commit 0391851

Please sign in to comment.