public void SessionManager_SessionStatus_Is_Active_After_First_Hit() { var sessionManager = new SessionManager(null); sessionManager.Hit(); Assert.AreEqual(SessionStatus.Active, sessionManager.SessionStatus); }
public void SessionManager_SessionStatus_Is_Starting_After_Hit_After_End() { var sessionManager = new SessionManager(null); sessionManager.Hit(); sessionManager.End(); sessionManager.Hit(); Assert.AreEqual(SessionStatus.Starting, sessionManager.SessionStatus); }
public void SessionManager_Creates_New_Session_In_A_Thread_Safe_Way() { var timeout = TimeSpan.FromSeconds(2); var sessionManager = new SessionManager(timeout, null); Task.Delay(timeout + TimeSpan.FromSeconds(1)).Wait(); Task.WaitAll( Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }), Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }), Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }) ); Task.Delay(timeout + TimeSpan.FromSeconds(1)).Wait(); Task.WaitAll( Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }), Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }), Task.Run(() => { for (var i = 0; i < 500; i++) sessionManager.Hit(); }) ); Assert.AreEqual(3, sessionManager.Session.Number); Assert.AreEqual(1500, sessionManager.Session.HitCount); }
public void SessionManager_Creates_New_Session_When_Hit_After_Timeout() { var timeout = TimeSpan.FromSeconds(2); var sessionManager = new SessionManager(timeout, null); Assert.AreEqual(1, sessionManager.Session.Number); var starting = DateTimeOffset.Now; Task.Delay(timeout + TimeSpan.FromSeconds(1)).Wait(); sessionManager.Hit(); Assert.AreEqual(2, sessionManager.Session.Number); Assert.IsTrue(sessionManager.Session.StartedAt >= starting, "Session StartedAt too early"); Assert.IsTrue(sessionManager.Session.StartedAt <= DateTimeOffset.Now, "Session StartedAt too late"); }