public void TestHttpConfigManagerDoesNotWaitForTheConfigWhenDeferIsTrue() { var t = MockSendAsync(TestData.Datafile, TimeSpan.FromMilliseconds(150)); var httpManager = new HttpProjectConfigManager.Builder() .WithSdkKey("QBw9gFM8oTn7ogY9ANCC1z") .WithLogger(LoggerMock.Object) .WithPollingInterval(TimeSpan.FromSeconds(2)) // negligible timeout .WithBlockingTimeoutPeriod(TimeSpan.FromMilliseconds(50)) .WithStartByDefault() .Build(false); // When blocking timeout is 0 and defer is false and getconfig immediately called // should return null Assert.IsNull(httpManager.GetConfig()); // wait until config is retrieved. t.Wait(); // in case deadlock, it will release after 3sec. httpManager.OnReady().Wait(8000); HttpClientMock.Verify(_ => _.SendAsync(It.IsAny <HttpRequestMessage>())); Assert.NotNull(httpManager.GetConfig()); httpManager.Dispose(); }
public void TestOnReadyPromiseResolvedImmediatelyWhenDatafileIsProvided() { // Revision - 42 var t = MockSendAsync(TestData.SimpleABExperimentsDatafile, TimeSpan.FromMilliseconds(100)); HttpProjectConfigManager httpManager = new HttpProjectConfigManager.Builder() // Revision - 15 .WithSdkKey("10192104166") .WithDatafile(TestData.Datafile) .WithLogger(LoggerMock.Object) .WithPollingInterval(TimeSpan.FromMilliseconds(1000)) .WithBlockingTimeoutPeriod(TimeSpan.FromMilliseconds(500)) .WithStartByDefault() .Build(); // OnReady waits until is resolved, need to add time in case of deadlock. httpManager.OnReady().Wait(10000); Assert.AreEqual("15", httpManager.GetConfig().Revision); // loaded datafile from config manager after a second. // This wait triggers when SendAsync is triggered, OnReadyPromise is already resolved because of hardcoded datafile. t.Wait(); Task.Delay(200).Wait(); Assert.AreEqual("42", httpManager.GetConfig().Revision); httpManager.Dispose(); }
public void TestOnReadyPromiseWaitsForProjectConfigRetrievalWhenDatafileIsNotProvided() { // Revision - 42 var t = MockSendAsync(TestData.SimpleABExperimentsDatafile, TimeSpan.FromMilliseconds(1000)); HttpProjectConfigManager httpManager = new HttpProjectConfigManager.Builder() .WithSdkKey("QBw9gFM8oTn7ogY9ANCC1z") .WithLogger(LoggerMock.Object) .WithPollingInterval(TimeSpan.FromSeconds(2)) .WithBlockingTimeoutPeriod(TimeSpan.FromSeconds(1)) .WithStartByDefault(true) .Build(); t.Wait(); // OnReady waits until is resolved, need to add time in case of deadlock. httpManager.OnReady().Wait(10000); Assert.NotNull(httpManager.GetConfig()); httpManager.Dispose(); }