public void TestSessionTimeout()
{
MobileAnalyticsManagerConfig maConfig = new MobileAnalyticsManagerConfig();
Console.WriteLine("session delta is " + maConfig.SessionTimeout);
string appID = Guid.NewGuid().ToString();
// create AmazonMobileAnayticsManager instance
MobileAnalyticsManager.GetOrCreateInstance(appID, Credentials, RegionEndpoint.USEast1, maConfig);
Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.Session session = new Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.Session(appID, new MobileAnalyticsManagerConfig());
session.Start();
DateTime startTime1 = session.StartTime;
string sessionId1 = session.SessionId;
// sleep for a while but wake up before session expires
session.Pause();
Thread.Sleep(Convert.ToInt32((maConfig.SessionTimeout - 1) * 1000));
session.Resume();
// make sure session is not expired
DateTime startTime2 = session.StartTime;
string sessionId2 = session.SessionId;
Assert.IsTrue(startTime1 == startTime2 && sessionId1 == sessionId2);
// sleep longer until session expires
session.Pause();
Thread.Sleep(Convert.ToInt32((maConfig.SessionTimeout + 1) * 1000));
session.Resume();
// make sure session is expired
DateTime startTime3 = session.StartTime;
string sessionId3 = session.SessionId;
Assert.IsTrue(startTime3 > startTime2 && sessionId2 != sessionId3);
// sleep for a while but wake up before session expires
session.Pause();
Thread.Sleep(Convert.ToInt32((maConfig.SessionTimeout - 1) * 1000));
session.Resume();
// make sure session is not expired
DateTime startTime4 = session.StartTime;
string sessionId4 = session.SessionId;
Assert.IsTrue(startTime4 == startTime3 && sessionId4 == sessionId3);
// sleep longer until session expires
session.Pause();
Thread.Sleep(Convert.ToInt32((maConfig.SessionTimeout + 1) * 1000));
session.Resume();
// make sure session is expired
DateTime startTime5 = session.StartTime;
string sessionId5 = session.SessionId;
Assert.IsTrue(startTime5 > startTime4 && sessionId5 != sessionId4);
}