Inheritance: MonoBehaviour
示例#1
0
 /// <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));
 }
示例#2
0
 public void Add(ABTest.ABPageTestResult item)
 {
     if (null != item)
     {
         UpdateOrAdd(item, item);
     }
 }
示例#3
0
 public void Add(ABTest.ABRuleSetting item)
 {
     if (null != item)
     {
         UpdateOrAdd(item, item);
     }
 }
示例#4
0
文件: Service1.cs 项目: tcns/impulse
        public void RemoveAbTestById(int id)
        {
            ABTest ab = context.AbTests.Find(id);

            context.AbTests.Remove(ab);
            context.SaveChanges();
        }
示例#5
0
 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);
        }
示例#7
0
 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;
 }
示例#8
0
    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();"));
    }
示例#9
0
        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));
        }
示例#10
0
 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();
 }
示例#13
0
        public async Task <HttpResponseMessage> SaveAb(ABTest abtest)
        {
            await service.SaveAbTestAsync(abtest);

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
示例#14
0
 public void Update(ABTest.ABRuleSetting @new, ABTest.ABRuleSetting old)
 {
     UpdateOrAdd(@new, old);
 }
示例#15
0
 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();
 }
示例#16
0
文件: Service1.cs 项目: tcns/impulse
 public string SaveAbTest(ABTest test)
 {
     context.AbTests.Add(test);
     context.SaveChanges();
     return(ResponseStatuses.SUCCESS);
 }
示例#17
0
 public void Update(ABTest.ABPageTestResult @new, ABTest.ABPageTestResult old)
 {
     UpdateOrAdd(@new, old);
 }
示例#18
0
        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);
        }
示例#19
0
 /// <inheritdoc />
 public AddABTestResponse AddABTest(ABTest aBTest, RequestOptions requestOptions = null) =>
 AsyncHelper.RunSync(() => AddABTestAsync(aBTest, requestOptions));
示例#20
0
    private static void LZMATest()
    {
        window = EditorWindow.GetWindow<ABTest>();

        window.titleContent = new GUIContent("LZMA");
    }