示例#1
0
        public Session(string appID, MobileAnalyticsManagerConfig maConfig)
        {
            _maConfig = maConfig;
            _appId = appID;
#if BCL
            _sessionStorageFileName = InternalSDKUtils.DetermineAppLocalStoragePath(appID + _sessionStorageFileName);
#elif PCL
            _sessionStorageFileFullPath = System.IO.Path.Combine(PCLStorage.FileSystem.Current.LocalStorage.Path, appID + _sessionStorageFileName);
#endif
            _sessionStorage = new SessionStorage();
        }
示例#2
0
        public Session(string appID, MobileAnalyticsManagerConfig maConfig)
        {
            _maConfig = maConfig;
            _appID = appID;
#if BCL
            _sessionStorageFileFullPath = InternalSDKUtils.DetermineAppLocalStoragePath(appID + _sessionStorageFileName);
#elif PCL
            _sessionStorageFileFullPath = System.IO.Path.Combine(PCLStorage.FileSystem.Current.LocalStorage.Path, appID + _sessionStorageFileName);
#endif
            _logger.InfoFormat("Initialize a new session. The session storage file is {0}.", _sessionStorageFileFullPath);
            _sessionStorage = new SessionStorage();
        }
示例#3
0
 /// <summary>
 /// Constructor of <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.DeliveryClient"/> class.
 /// </summary>
 /// <param name="maConfig">Mobile Analytics Manager configuration. <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.MobileAnalyticsManagerConfig"/></param>
 /// <param name="clientContext">An instance of ClientContext. <see cref="Amazon.Runtime.Internal.ClientContext"/></param>
 /// <param name="credentials">An instance of Credentials. <see cref="Amazon.Runtime.AWSCredentials"/></param>
 /// <param name="regionEndPoint">Region endpoint. <see cref="Amazon.RegionEndpoint"/></param>
 /// <param name="maManager">Mobile Analytics Manager instance. <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.MobileAnalyticsManager"/></param>
 public DeliveryClient(MobileAnalyticsManagerConfig maConfig, ClientContext clientContext, AWSCredentials credentials, RegionEndpoint regionEndPoint, MobileAnalyticsManager maManager) :
     this(new DeliveryPolicyFactory(maConfig.AllowUseDataNetwork), maConfig, clientContext, credentials, regionEndPoint, maManager)
 {
 }
示例#4
0
 /// <summary>
 /// Constructor of <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.SQLiteEventStore"/>
 /// </summary>
 /// <param name="maConfig">Mobile Analytics Manager Configuration.</param>
 public SQLiteEventStore(MobileAnalyticsManagerConfig maConfig)
 {
     _maConfig = maConfig;
 }
        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, CommonTests.Framework.TestRunner.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();
            Task.Delay(TimeSpan.FromSeconds(maConfig.SessionTimeout - 1)).Wait();
            session.Resume();

            // make sure session is not expired
            DateTime startTime2 = session.StartTime;
            string   sessionId2 = session.SessionId;

            Assert.IsTrue(startTime1 == startTime2);
            Assert.IsTrue(sessionId1 == sessionId2);

            // sleep longer until session expires
            session.Pause();
            Task.Delay(TimeSpan.FromSeconds(maConfig.SessionTimeout + 1)).Wait();
            session.Resume();

            // make sure session is expired
            DateTime startTime3 = session.StartTime;
            string   sessionId3 = session.SessionId;

            Assert.IsTrue(startTime3 > startTime2);
            Assert.IsTrue(sessionId2 != sessionId3);

            // sleep for a while but wake up before session expires
            session.Pause();
            Task.Delay(TimeSpan.FromSeconds(maConfig.SessionTimeout - 1)).Wait();
            session.Resume();

            // make sure session is not expired
            DateTime startTime4 = session.StartTime;
            string   sessionId4 = session.SessionId;

            Assert.IsTrue(startTime4 == startTime3);
            Assert.IsTrue(sessionId4 == sessionId3);

            // sleep longer until session expires
            session.Pause();
            Task.Delay(TimeSpan.FromSeconds(maConfig.SessionTimeout + 1)).Wait();
            session.Resume();

            // make sure session is expired
            DateTime startTime5 = session.StartTime;
            string   sessionId5 = session.SessionId;

            Assert.IsTrue(startTime5 > startTime4);
            Assert.IsTrue(sessionId5 != sessionId4);
        }
        public void TestEventStore()
        {
            // Create table
            MobileAnalyticsManagerConfig maConfig   = new MobileAnalyticsManagerConfig();
            SQLiteEventStore             eventStore = new SQLiteEventStore(maConfig);

            // Insert row
            string eventString = "TestEventStore-dummy-event-string";
            string appId       = Guid.NewGuid().ToString();

            const int EVENT_COUNT = 100;

            // Add events
            for (int i = 0; i < EVENT_COUNT / 2; i++)
            {
                eventStore.PutEvent(eventString, appId);
            }
            long dbFileSizeSmall = eventStore.GetDatabaseSize();

            for (int i = 0; i < EVENT_COUNT / 2; i++)
            {
                eventStore.PutEvent(eventString, appId);
            }
            long dbFileSizeBigger = eventStore.GetDatabaseSize();

            //Assert.IsTrue(dbFileSizeBigger > dbFileSizeSmall);

            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));
            Assert.AreEqual(EVENT_COUNT, eventStore.NumberOfEvents(appId));

            // Delete EVENT_COUNT / 2 rows
            List <JsonData> allEventList       = eventStore.GetEvents(appId, EVENT_COUNT / 2);
            List <string>   deleteEventsIdList = new List <string>();

            foreach (JsonData eventData in allEventList)
            {
                deleteEventsIdList.Add(eventData["id"].ToString());
            }
            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));
            eventStore.DeleteEvent(deleteEventsIdList);
            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));

            // check row num again
            Assert.AreEqual(EVENT_COUNT / 2, eventStore.NumberOfEvents(appId));

            // insert EVENT_COUNT / 2 rows again
            for (int i = 0; i < EVENT_COUNT / 2; i++)
            {
                eventStore.PutEvent(eventString, appId);
            }
            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));
            Assert.AreEqual(EVENT_COUNT, eventStore.NumberOfEvents(appId));
            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));

            // remove all rows
            allEventList       = eventStore.GetEvents(appId, EVENT_COUNT);
            deleteEventsIdList = new List <string>();
            foreach (JsonData eventData in allEventList)
            {
                deleteEventsIdList.Add(eventData["id"].ToString());
            }
            eventStore.DeleteEvent(deleteEventsIdList);
            Console.WriteLine("The num of events are {0}", eventStore.NumberOfEvents(appId));
            Assert.AreEqual(0, eventStore.NumberOfEvents(appId));
        }
示例#7
0
#pragma warning restore 414

        /// <summary>
        /// Constructor of <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.SQLiteEventStore"/>
        /// </summary>
        /// <param name="maConfig">Mobile Analytics Manager Configuration.</param>
        public SQLiteEventStore(MobileAnalyticsManagerConfig maConfig)
        {
            _maConfig = maConfig;
            SetupSQLiteEventStore();
        }
示例#8
0
 /// <summary>
 /// Constructor of <see cref="Amazon.MobileAnalytics.MobileAnalyticsManager.Internal.FileEventStore"/>
 /// </summary>
 /// <param name="maConfig">Mobile Analytics Manager Configuration.</param>
 public FileEventStore(MobileAnalyticsManagerConfig maConfig)
 {
     _maConfig = maConfig;
     SetupSQLiteEventStore();
 }