public void Caching_SendInvalidEvents_Throws() { var client = new KeenClient(settingsEnv, new EventCacheMemory()); if (UseMocks) client.Event = new EventMock(settingsEnv, AddEvents: new Func<JObject, IProjectSettings, IEnumerable<CachedEvent>>((e, p) => { if (p == settingsEnv) throw new KeenBulkException("Mock exception", new List<CachedEvent>(){new CachedEvent("CachedEventTest", e, new Exception())}); else throw new Exception("Unexpected value"); })); var anEvent = new JObject(); anEvent.Add("AProperty", "AValue"); client.AddEvent("CachedEventTest", anEvent); anEvent.Add("keen", JObject.FromObject(new {invalidPropName = "value"} )); client.AddEvent("CachedEventTest", anEvent); Assert.DoesNotThrow(() => { try { client.SendCachedEvents(); } catch (KeenBulkException ex) { if (ex.FailedEvents.Count() != 1) throw new Exception("Expected 1 failed event."); } }); }
public async void Caching_SendManyEvents_Success() { var client = new KeenClient(settingsEnv, new EventCacheMemory()); var total = 0; if (UseMocks) client.Event = new EventMock(settingsEnv, AddEvents: new Func<JObject, IProjectSettings, IEnumerable<CachedEvent>>((e, p) => { if ((p == settingsEnv) && (null != e.Property("CachedEventTest")) && ((e.Property("CachedEventTest").Value.Children().Count() == KeenConstants.BulkBatchSize))) { total += e.Property("CachedEventTest").Value.Children().Count(); return new List<CachedEvent>(); } else throw new Exception("Unexpected value"); })); for (int i = 0; i < KeenConstants.BulkBatchSize; i++) client.AddEvent("CachedEventTest", new { AProperty = "AValue" }); Assert.DoesNotThrow(() => client.SendCachedEvents()); Assert.Null(await client.EventCache.TryTake(), "Cache is empty"); Assert.True( !UseMocks || ( total == KeenConstants.BulkBatchSize)); }
public async void Caching_SendEvents_Success() { var client = new KeenClient(settingsEnv, new EventCacheMemory()); if (UseMocks) client.Event = new EventMock(settingsEnv, AddEvents: new Func<JObject, IProjectSettings, IEnumerable<CachedEvent>>((e, p) => { if ((p == settingsEnv) && (null!=e.Property("CachedEventTest")) && (e.Property("CachedEventTest").Value.Children().Count()==3)) return new List<CachedEvent>(); else throw new Exception("Unexpected value"); })); client.AddEvent("CachedEventTest", new { AProperty = "AValue" }); client.AddEvent("CachedEventTest", new { AProperty = "AValue" }); client.AddEvent("CachedEventTest", new { AProperty = "AValue" }); Assert.DoesNotThrow(() => client.SendCachedEvents()); Assert.Null(await client.EventCache.TryTake(), "Cache is empty"); }
public void Caching_SendEmptyEvents_Success() { var client = new KeenClient(settingsEnv, new EventCacheMemory()); Assert.DoesNotThrow(() => client.SendCachedEvents()); }
public void AddEvents_Cache_Success() { var client = new KeenClient(settingsEnv, new EventCacheMemory()); if (UseMocks) client.Event = new EventMock(settingsEnv, AddEvents: new Func<JObject, IProjectSettings, IEnumerable<CachedEvent>>((e, p) => { // Should not be called with caching enabled Assert.Fail(); return new List<CachedEvent>(); })); var events = from i in Enumerable.Range(1, 3) select new { AProperty = "AValue" + i }; Assert.DoesNotThrow(() => client.AddEvents("AddEventTest", events)); // reset the AddEvents mock if (UseMocks) client.Event = new EventMock(settingsEnv, AddEvents: new Func<JObject, IProjectSettings, IEnumerable<CachedEvent>>((e, p) => { Assert.True(p == settingsEnv, "Incorrect settings"); Assert.NotNull(e.Property("AddEventTest"), "Expected collection not found"); Assert.AreEqual(e.Property("AddEventTest").Value.AsEnumerable().Count(), 3, "Expected exactly 3 collection members"); foreach (dynamic q in ((dynamic)e).AddEventTest) Assert.NotNull(q.keen.timestamp, "keen.timestamp properties should exist"); return new List<CachedEvent>(); })); Assert.DoesNotThrow(() => client.SendCachedEvents()); }
public void CachingPCL_SendEmptyEvents_Success(IEventCache cache) { var client = new KeenClient(settingsEnv, cache); Assert.DoesNotThrow(() => client.SendCachedEvents()); }