/// <inheritdoc /> public async Task <AddABTestResponse> AddABTestAsync(ABTest aBTest, RequestOptions requestOptions = null, CancellationToken ct = default) { return(await _transport.ExecuteRequestAsync <AddABTestResponse, ABTest>(HttpMethod.Post, "/2/abtests", CallType.Write, aBTest, requestOptions, ct) .ConfigureAwait(false)); }
public void Add(ABTest.ABPageTestResult item) { if (null != item) { UpdateOrAdd(item, item); } }
public void Add(ABTest.ABRuleSetting item) { if (null != item) { UpdateOrAdd(item, item); } }
public void RemoveAbTestById(int id) { ABTest ab = context.AbTests.Find(id); context.AbTests.Remove(ab); context.SaveChanges(); }
public void Remove(ABTest.ABPageTestResult item) { ((IPersistable)item).OnSaving(); var dummy = _dbContext.ABPageTestResults.FirstOrDefault(it => it.UUID.Equals(item.UUID, StringComparison.OrdinalIgnoreCase) && it.SiteName.Equals(item.Site.FullName, StringComparison.OrdinalIgnoreCase)); if (null != dummy) { _dbContext.ABPageTestResults.Remove(dummy); _dbContext.SaveChanges(); } ((IPersistable)item).OnSaved(); }
public async Task TestAATesting() { var now = DateTime.UtcNow.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); string testName = $"csharp-AA-{now}-{Environment.UserName}"; var addOne = await _index.SaveObjectAsync(new AlgoliaStub { ObjectID = "one" }); // Create tomorrow datetime without seconds/ms to avoid test to fail DateTime utcNow = DateTime.UtcNow.AddDays(1); DateTime tomorrow = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, utcNow.Hour, utcNow.Minute, 0, utcNow.Kind); addOne.Wait(); var abTest = new ABTest { Name = testName, Variants = new List <Variant> { new Variant { Index = _indexName, TrafficPercentage = 90, Description = "a description" }, new Variant { Index = _indexName, TrafficPercentage = 10, Description = "Variant number 2", CustomSearchParameters = new Query { IgnorePlurals = true } } }, EndAt = tomorrow }; AddABTestResponse addAbTest = await BaseTest.AnalyticsClient.AddABTestAsync(abTest); abTest.AbTestId = addAbTest.ABTestId; _index.WaitTask(addAbTest.TaskID); ABTest abTestToCheck = await BaseTest.AnalyticsClient.GetABTestAsync(abTest.AbTestId.Value); Assert.IsTrue(TestHelper.AreObjectsEqual(abTestToCheck, abTest, "CreatedAt", "Status", "ClickCount", "ConversionCount")); Assert.That(abTestToCheck.Status, Is.EqualTo("active")); var deleteAbTest = await BaseTest.AnalyticsClient.DeleteABTestAsync(abTest.AbTestId.Value); _index.WaitTask(deleteAbTest.TaskID); }
public ABTest.ABRuleSetting Get(ABTest.ABRuleSetting dummy) { var temp = _dbContext.ABRuleSettings.Where(it => it.UUID.Equals(dummy.UUID, StringComparison.OrdinalIgnoreCase)); if (null != dummy.Site) { temp = temp.Where(it => it.SiteName.Equals(dummy.Site.FullName, StringComparison.OrdinalIgnoreCase)); } else { temp = temp.Where(it => String.IsNullOrEmpty(it.SiteName)); } var result = temp.ToList() .Select(it => it.ToABRuleSetting()) .FirstOrDefault(); return result; }
protected void StartABTest() { if (ABTest == null) { ShowWarning(GetString("abtesting.invalidtest")); return; } if (!CurrentUser.IsAuthorizedPerResource("CMS.ABTest", "Manage", ABTestSiteName)) { RedirectToAccessDenied("cms.abtest", "Manage"); } DateTime start = (radNow.Checked) ? DateTime.Now : calendarControl.SelectedDateTime; // Validate input if (radLater.Checked && !ABTestValidator.IsValidStart(start)) { ShowError(GetString("abtesting.scheduled.invaliddate")); return; } // Create clone of the test to circumvent caching issues ABTestInfo testClone = ABTest.Clone(); testClone.ABTestOpenFrom = start; // Check for collisions string collidingTestName = ABTestValidator.GetCollidingTestName(testClone); if (!String.IsNullOrEmpty(collidingTestName)) { ShowError(String.Format(GetString("om.twotestsonepageerror"), HTMLHelper.HTMLEncode(ResHelper.LocalizeString(collidingTestName)), ABTest.ABTestOriginalPage)); return; } // Save the test with the new start date ABTest.ABTestOpenFrom = start; ABTestInfoProvider.SetABTestInfo(ABTest); ScriptHelper.RegisterWOpenerScript(this); // Refresh the window opener with parameter indicating that the refresh was caused by this modal window ScriptHelper.RegisterStartupScript(this, typeof(string), "RefreshPage", ScriptHelper.GetScript("wopener.RefreshPage(false); CloseDialog();")); }
public ActionResult Create(ABTest abtest) { if (ModelState.IsValid) { ABTestClient abtc = new ABTestClient(); try { abtc.CreateNew(abtest.RowKey); return(RedirectToAction("Index")); } catch { ModelState.AddModelError("error", "Error creating new test"); } } return(View(abtest)); }
public ABTest.ABPageTestResult Get(ABTest.ABPageTestResult dummy) { return All().FirstOrDefault(it => it.UUID.Equals(dummy.UUID, StringComparison.OrdinalIgnoreCase) && it.Site == dummy.Site); }
public void Update(ABTest abtest) { context.SaveChanges(); }
public void Save(ABTest abtest) { context.Entry(abtest).State = EntityState.Added; context.SaveChanges(); }
public async Task <HttpResponseMessage> SaveAb(ABTest abtest) { await service.SaveAbTestAsync(abtest); return(Request.CreateResponse(HttpStatusCode.OK)); }
public void Update(ABTest.ABRuleSetting @new, ABTest.ABRuleSetting old) { UpdateOrAdd(@new, old); }
public void Remove(ABTest.ABRuleSetting item) { ((IPersistable)item).OnSaving(); var dummy = _dbContext.ABRuleSettings.Where(it => it.UUID.Equals(item.UUID, StringComparison.OrdinalIgnoreCase)); if (null != item.Site) { dummy = dummy.Where(it => it.SiteName.Equals(item.Site.FullName, StringComparison.OrdinalIgnoreCase)); } else { dummy = dummy.Where(it => String.IsNullOrEmpty(it.SiteName)); } var temp = dummy.FirstOrDefault(); if (null != temp) { _dbContext.ABRuleSettings.Remove(temp); _dbContext.SaveChanges(); } ((IPersistable)item).OnSaved(); }
public string SaveAbTest(ABTest test) { context.AbTests.Add(test); context.SaveChanges(); return(ResponseStatuses.SUCCESS); }
public void Update(ABTest.ABPageTestResult @new, ABTest.ABPageTestResult old) { UpdateOrAdd(@new, old); }
public async Task TestAbTest() { var now = DateTime.UtcNow.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); string testName = $"csharp-{now}-{Environment.UserName}"; var abTests = await BaseTest.AnalyticsClient.GetABTestsAsync(); if (abTests.ABTests != null) { var abTestsToDelete = abTests.ABTests?.Where(x => x.Name.Contains("csharp-") && !x.Name.Contains($"csharp-{now}")); foreach (var item in abTestsToDelete) { await BaseTest.AnalyticsClient.DeleteABTestAsync(item.AbTestId.Value); } } var addOne = await _index1.SaveObjectAsync(new AlgoliaStub { ObjectID = "one" }); var addTwo = await _index2.SaveObjectAsync(new AlgoliaStub { ObjectID = "one" }); // Create tomorrow datetime without seconds/ms to avoid test to fail DateTime utcNow = DateTime.UtcNow.AddDays(1); DateTime tomorrow = new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, utcNow.Hour, utcNow.Minute, 0, utcNow.Kind); var abTest = new ABTest { Name = testName, Variants = new List <Variant> { new Variant { Index = _index1Name, TrafficPercentage = 60, Description = "a description" }, new Variant { Index = _index2Name, TrafficPercentage = 40, Description = string.Empty } }, EndAt = tomorrow }; addOne.Wait(); addTwo.Wait(); AddABTestResponse addAbTest = await BaseTest.AnalyticsClient.AddABTestAsync(abTest); abTest.AbTestId = addAbTest.ABTestId; _index1.WaitTask(addAbTest.TaskID); ABTest abTestToCheck = await BaseTest.AnalyticsClient.GetABTestAsync(abTest.AbTestId.Value); Assert.IsTrue(TestHelper.AreObjectsEqual(abTestToCheck, abTest, "CreatedAt", "Status", "ClickCount", "ConversionCount")); Assert.IsFalse(abTestToCheck.Status.Equals("stopped")); ABTestsReponse listAbTests = await BaseTest.AnalyticsClient.GetABTestsAsync(); Assert.IsTrue(listAbTests.ABTests.Any(x => x.AbTestId == abTest.AbTestId)); Assert.IsTrue(TestHelper.AreObjectsEqual( listAbTests.ABTests.FirstOrDefault(x => x.AbTestId == abTest.AbTestId), abTest, "CreatedAt", "Status", "ClickCount", "ConversionCount")); await BaseTest.AnalyticsClient.StopABTestAsync(abTest.AbTestId.Value); ABTest stoppedAbTest = await BaseTest.AnalyticsClient.GetABTestAsync(abTest.AbTestId.Value); Assert.IsTrue(stoppedAbTest.Status.Equals("stopped")); DeleteABTestResponse deleteAbTest = await BaseTest.AnalyticsClient.DeleteABTestAsync(abTest.AbTestId.Value); _index1.WaitTask(deleteAbTest.TaskID); AlgoliaApiException ex = Assert.ThrowsAsync <AlgoliaApiException>(() => BaseTest.AnalyticsClient.GetABTestAsync(abTest.AbTestId.Value)); Assert.That(ex.HttpErrorCode == 404); }
/// <inheritdoc /> public AddABTestResponse AddABTest(ABTest aBTest, RequestOptions requestOptions = null) => AsyncHelper.RunSync(() => AddABTestAsync(aBTest, requestOptions));
private static void LZMATest() { window = EditorWindow.GetWindow<ABTest>(); window.titleContent = new GUIContent("LZMA"); }