public void TestEventProcessorWithBatchEventProcessorObj()
        {
            var eventDispatcher      = new DefaultEventDispatcher(LoggerMock.Object);
            var notificationCenter   = new NotificationCenter();
            var projectConfigManager = new HttpProjectConfigManager.Builder()
                                       .WithSdkKey("10192104166")
                                       .Build(true);

            var batchEventProcessor = new BatchEventProcessor.Builder()
                                      .WithLogger(LoggerMock.Object)
                                      .WithMaxBatchSize(20)
                                      .WithFlushInterval(TimeSpan.FromSeconds(3))
                                      .WithEventDispatcher(eventDispatcher)
                                      .WithNotificationCenter(notificationCenter)
                                      .Build();

            var optimizely = OptimizelyFactory.NewDefaultInstance(projectConfigManager, notificationCenter, eventProcessor: batchEventProcessor);

            var actualbatchEventProcessor   = Reflection.GetFieldValue <BatchEventProcessor, Optimizely>(optimizely, "EventProcessor");
            var actualEventProcessorProps   = new EventProcessorProps(actualbatchEventProcessor);
            var expectedEventProcessorProps = new EventProcessorProps(batchEventProcessor);

            Assert.AreEqual(actualEventProcessorProps, expectedEventProcessorProps);
            optimizely.Dispose();
        }
        public void TestEventProcessorWithDefaultEventBatching()
        {
            var optimizely = OptimizelyFactory.NewDefaultInstance();

            var batchEventProcessor         = Reflection.GetFieldValue <BatchEventProcessor, Optimizely>(optimizely, "EventProcessor");
            var actualEventProcessorProps   = new EventProcessorProps(batchEventProcessor);
            var expectedEventProcessorProps = new EventProcessorProps
            {
                BatchSize       = 10,
                FlushInterval   = TimeSpan.FromSeconds(2),
                TimeoutInterval = TimeSpan.FromSeconds(10)
            };

            Assert.AreEqual(actualEventProcessorProps, expectedEventProcessorProps);
            optimizely.Dispose();
        }
        public void TestEventProcessorWithEventBatchingBatchSizeAndInterval()
        {
            OptimizelyFactory.SetBatchSize(2);
            OptimizelyFactory.SetFlushInterval(TimeSpan.FromSeconds(4));

            var optimizely = OptimizelyFactory.NewDefaultInstance("sdk-Key");

            var batchEventProcessor         = Reflection.GetFieldValue <BatchEventProcessor, Optimizely>(optimizely, "EventProcessor");
            var actualEventProcessorProps   = new EventProcessorProps(batchEventProcessor);
            var expectedEventProcessorProps = new EventProcessorProps
            {
                BatchSize       = 2,
                FlushInterval   = TimeSpan.FromSeconds(4),
                TimeoutInterval = TimeSpan.FromMinutes(5)
            };

            Assert.AreEqual(actualEventProcessorProps, expectedEventProcessorProps);
            optimizely.Dispose();
        }