Пример #1
0
        public void Get_ReleaseWithMultipleComponents_ComponentsAreOrderdByBuildDefinition()
        {
            //Arrange
            var request = new GetReleasesHttpRequestMessageBuilder().WithShowComponentsHeader(true).Build();

            var expectedRelease = new ReleaseBuilder().Build();

            var expectedComponentBuilder = new ComponentBuilder().ForRelease(expectedRelease);
            var expectedComponentWithBuildDefinitionA = expectedComponentBuilder.WithBuildDefinition("A").Build();
            var expectedComponentWithBuildDefinitionB = expectedComponentBuilder.WithBuildDefinition("B").Build();
            var expectedComponentWithBuildDefinitionC = expectedComponentBuilder.WithBuildDefinition("C").Build();

            var dataModel = new DataModelBuilder()
                            .WithRelease(expectedRelease)

                            //add components in 'random' order to check sorting of components by build definition
                            .WithComponent(expectedComponentWithBuildDefinitionB)
                            .WithComponent(expectedComponentWithBuildDefinitionA)
                            .WithComponent(expectedComponentWithBuildDefinitionC)
                            .Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");
            Assert.AreEqual(expectedComponentWithBuildDefinitionA.Build, result.releases[0].components[0].build, "Unexpected first component");
            Assert.AreEqual(expectedComponentWithBuildDefinitionB.Build, result.releases[0].components[1].build, "Unexpected second component");
            Assert.AreEqual(expectedComponentWithBuildDefinitionC.Build, result.releases[0].components[2].build, "Unexpected third component");
        }
Пример #2
0
        public static void Init(TestContext testContext)
        {
            var    dm          = new DataModelBuilder();
            string databaseDir = @"..\..\..\..\Actual Data\access_db";

            DataModelTestBase.DataModel = dm.CreateDataModel(databaseDir, @"..\..\file.dsn");
        }
Пример #3
0
        public void Get_ReleaseWithComponentButShowComponentsHeaderIsFalse_NoComponentReturned()
        {
            //Arrange
            var requestWithShowComponentsHeaderIsFalse = new GetReleasesHttpRequestMessageBuilder()
                                                         .WithShowComponentsHeader(false)
                                                         .Build();

            var expectedRelease = new ReleaseBuilder().Build();
            var component       = new ComponentBuilder().ForRelease(expectedRelease).Build();

            var dataModel = new DataModelBuilder()
                            .WithRelease(expectedRelease)
                            .WithComponent(component)
                            .Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(requestWithShowComponentsHeaderIsFalse);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");

            var actualRelease = result.releases[0];

            Assert.IsInstanceOfType(actualRelease.components, typeof(List <dynamic>), "Unexpected type for components collection");
            Assert.AreEqual(0, actualRelease.components.Count, "Unexpected number of components for release");
        }
Пример #4
0
        public void Get_MultipleReleasesFound_MultipleReleasesReturned()
        {
            //Arrange
            var request = new GetReleasesHttpRequestMessageBuilder().Build();

            var expectedRelease1 = new ReleaseBuilder().Build();
            var expectedRelease2 = new ReleaseBuilder().Build();
            var expectedRelease3 = new ReleaseBuilder().Build();

            var dataModel = new DataModelBuilder()
                            .WithRelease(expectedRelease1)
                            .WithRelease(expectedRelease2)
                            .WithRelease(expectedRelease3)
                            .Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");
            Assert.IsInstanceOfType(result.releases, typeof(List <dynamic>), "Unexpected type for releases collection");

            List <dynamic> actualReleases = (List <dynamic>)result.releases;

            Assert.AreEqual(3, actualReleases.Count, "Unexpected number of releases");
            AssertReleasesCollectionContainsRelease(actualReleases, expectedRelease1);
            AssertReleasesCollectionContainsRelease(actualReleases, expectedRelease2);
            AssertReleasesCollectionContainsRelease(actualReleases, expectedRelease3);
        }
Пример #5
0
        public RollbarClient(Configuration configuration)
        {
            Configuration = configuration;
            NoticeBuilder = new DataModelBuilder(Configuration);

            // HACK: Bypasses cert validation globally, but only for api.rollbar.com. Would prefer the below HttpWebRequest per-request edition.
            ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => certificate.Subject.StartsWith("CN=api.rollbar.com,");
        }
Пример #6
0
        public void Get_ReleaseWithStageAndStepFound_ReleaseWithStageAndStepReturned()
        {
            //Arrange
            var request = new GetReleasesHttpRequestMessageBuilder().Build();

            var expectedRelease     = new ReleaseBuilder().Build();
            var expectedEnvironment = new EnvironmentBuilder().Build();
            var expectedStage       = new StageBuilder().ForEnvironment(expectedEnvironment).Build();
            var expectedStep        = new StepBuilder()
                                      .ForRelease(expectedRelease)
                                      .ForStage(expectedStage)
                                      .Build();
            var expectedDeploymentStep = new DeploymentStepBuilder()
                                         .ForRelease(expectedRelease)
                                         .ForStage(expectedStage)
                                         .ForStep(expectedStep)
                                         .Build();

            var dataModel = new DataModelBuilder()
                            .WithRelease(expectedRelease)
                            .WithEnvironment(expectedEnvironment)
                            .WithStage(expectedStage)
                            .WithStageWorkflowFor(expectedRelease, expectedStage)
                            .WithStep(expectedStep)
                            .WithDeploymentStep(expectedDeploymentStep)
                            .Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");

            Assert.IsInstanceOfType(result.releases, typeof(List <dynamic>), "Unexpected type for releases collection");
            Assert.AreEqual(1, result.releases.Count, "Unexpected number of releases");
            var actualRelease = result.releases[0];

            AssertAreReleasesEqual(expectedRelease, actualRelease);

            Assert.IsInstanceOfType(actualRelease.stages, typeof(List <dynamic>), "Unexpected type for stages collection");
            Assert.AreEqual(1, actualRelease.stages.Count, "Unexpected number of stages for release");
            var actualStage = actualRelease.stages[0];

            AssertAreStagesEqual(expectedStage, expectedEnvironment, actualStage);

            Assert.IsInstanceOfType(actualStage.steps, typeof(List <dynamic>), "Unexpected type for steps collection");
            Assert.AreEqual(1, actualStage.steps.Count, "Unexpected number of steps for stage");
            var actualStep = actualStage.steps[0];

            AssertAreStepsEqual(expectedStep, actualStep);

            Assert.IsInstanceOfType(actualStep.deploymentSteps, typeof(List <dynamic>), "Unexpected type for deploymentStep collection");
            Assert.AreEqual(1, actualStep.deploymentSteps.Count, "Unexpected number of steps for deploymentSteps");
            AssertAreDeploymentStepsEqual(expectedDeploymentStep, actualStep.deploymentSteps[0]);
        }
Пример #7
0
        public void when_calling_send_task_returns_and_can_be_used()
        {
            var client  = new RollbarClient();
            var message = "";

            var notice = new DataModelBuilder().CreateMessageNotice(message, "debug");

            var task = client.Send(notice, null);

            Assert.IsNotNull(task);
            Assert.DoesNotThrow(() => task.Wait(0));
        }
Пример #8
0
        public void Get_ValidRequest_LastRefreshIsNow()
        {
            //Arrange
            var request   = new GetReleasesHttpRequestMessageBuilder().Build();
            var dataModel = new DataModelBuilder().WithDefaultDataSet().Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");
            AssertionHelper.AssertDateTimeIsNow(result.lastRefresh);
        }
Пример #9
0
        public void Get_StageWithMultipleSteps_StepsAreOrderdByAttemptAndThenByRank()
        {
            //Arrange
            var request = new GetReleasesHttpRequestMessageBuilder().Build();

            var expectedRelease     = new ReleaseBuilder().Build();
            var expectedEnvironment = new EnvironmentBuilder().Build();
            var expectedStage       = new StageBuilder().ForEnvironment(expectedEnvironment).Build();

            var expectedStepBuilder = new StepBuilder().ForRelease(expectedRelease).ForStage(expectedStage);
            var expectedStepWithAttempt1AndRank1 = expectedStepBuilder.WithAttempt(1).WithRank(1).Build();
            var expectedStepWithAttempt1AndRank2 = expectedStepBuilder.WithAttempt(1).WithRank(2).Build();
            var expectedStepWithAttempt1AndRank3 = expectedStepBuilder.WithAttempt(1).WithRank(3).Build();
            var expectedStepWithAttempt2AndRank1 = expectedStepBuilder.WithAttempt(2).WithRank(1).Build();
            var expectedStepWithAttempt2AndRank2 = expectedStepBuilder.WithAttempt(2).WithRank(2).Build();

            var dataModel = new DataModelBuilder()
                            .WithRelease(expectedRelease)
                            .WithEnvironment(expectedEnvironment)
                            .WithStage(expectedStage)
                            .WithStageWorkflowFor(expectedRelease, expectedStage)

                            //add steps in 'random' order to check sorting of steps by attempt and then by rank
                            .WithStep(expectedStepWithAttempt2AndRank2)
                            .WithStep(expectedStepWithAttempt1AndRank2)
                            .WithStep(expectedStepWithAttempt1AndRank1)
                            .WithStep(expectedStepWithAttempt1AndRank3)
                            .WithStep(expectedStepWithAttempt2AndRank1)
                            .Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");

            var stage = result.releases[0].stages[0];

            Assert.AreEqual(expectedStepWithAttempt1AndRank1.Id, stage.steps[0].id, "Unexpected first step");
            Assert.AreEqual(expectedStepWithAttempt1AndRank2.Id, stage.steps[1].id, "Unexpected second step");
            Assert.AreEqual(expectedStepWithAttempt1AndRank3.Id, stage.steps[2].id, "Unexpected third step");
            Assert.AreEqual(expectedStepWithAttempt2AndRank1.Id, stage.steps[3].id, "Unexpected fourth step");
            Assert.AreEqual(expectedStepWithAttempt2AndRank2.Id, stage.steps[4].id, "Unexpected fifth step");
        }
Пример #10
0
        public void Get_ValidRequest_UrlReleaseExplorerReturned()
        {
            //Arrange
            var request   = new GetReleasesHttpRequestMessageBuilder().Build();
            var dataModel = new DataModelBuilder().WithDefaultDataSet().Build();

            _releaseRepositoryMock.Setup((stub) => stub.GetReleaseData(It.IsAny <string>(), It.IsAny <int>()))
            .Returns(dataModel);

            //Act
            dynamic result = _sut.Get(request);

            //Assert
            Assert.IsNotNull(result, "Unexpected result");
            Assert.IsNotNull(result.urlReleaseExplorer, "Unexpected url Release Explorer");
            Assert.AreNotEqual("", result.urlReleaseExplorer, "Unexpected url Release Explorer");
        }
        public virtual double evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel dataModel, double trainingPercentage, double evaluationPercentage)
        {
            log.info("Beginning evaluation using {} of {}", new object[] { trainingPercentage, dataModel });
            int num = dataModel.getNumUsers();
            FastByIDMap <PreferenceArray> trainingPrefs = new FastByIDMap <PreferenceArray>(1 + ((int)(evaluationPercentage * num)));
            FastByIDMap <PreferenceArray> testPrefs     = new FastByIDMap <PreferenceArray>(1 + ((int)(evaluationPercentage * num)));
            IEnumerator <long>            enumerator    = dataModel.getUserIDs();

            while (enumerator.MoveNext())
            {
                long current = enumerator.Current;
                if (this.random.nextDouble() < evaluationPercentage)
                {
                    this.splitOneUsersPrefs(trainingPercentage, trainingPrefs, testPrefs, current, dataModel);
                }
            }
            DataModel   model       = (dataModelBuilder == null) ? new GenericDataModel(trainingPrefs) : dataModelBuilder.buildDataModel(trainingPrefs);
            Recommender recommender = recommenderBuilder.buildRecommender(model);
            double      num3        = this.getEvaluation(testPrefs, recommender);

            log.info("Evaluation result: {}", new object[] { num3 });
            return(num3);
        }
Пример #12
0
 public RollbarClient(Configuration configuration)
 {
     Configuration = configuration;
     NoticeBuilder = new DataModelBuilder(Configuration);
 }
        public IRStatistics evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel dataModel, IDRescorer rescorer, int at, double relevanceThreshold, double evaluationPercentage)
        {
            int                num        = dataModel.getNumItems();
            RunningAverage     average    = new FullRunningAverage();
            RunningAverage     average2   = new FullRunningAverage();
            RunningAverage     average3   = new FullRunningAverage();
            RunningAverage     average4   = new FullRunningAverage();
            int                num2       = 0;
            int                num3       = 0;
            IEnumerator <long> enumerator = dataModel.getUserIDs();

            while (enumerator.MoveNext())
            {
                long current = enumerator.Current;
                if (this.random.nextDouble() < evaluationPercentage)
                {
                    Stopwatch stopwatch = new Stopwatch();
                    stopwatch.Start();
                    PreferenceArray prefs           = dataModel.getPreferencesFromUser(current);
                    double          num5            = double.IsNaN(relevanceThreshold) ? computeThreshold(prefs) : relevanceThreshold;
                    FastIDSet       relevantItemIDs = this.dataSplitter.getRelevantItemsIDs(current, at, num5, dataModel);
                    int             num6            = relevantItemIDs.size();
                    if (num6 > 0)
                    {
                        FastByIDMap <PreferenceArray> trainingUsers = new FastByIDMap <PreferenceArray>(dataModel.getNumUsers());
                        IEnumerator <long>            enumerator2   = dataModel.getUserIDs();
                        while (enumerator2.MoveNext())
                        {
                            this.dataSplitter.processOtherUser(current, relevantItemIDs, trainingUsers, enumerator2.Current, dataModel);
                        }
                        DataModel model = (dataModelBuilder == null) ? new GenericDataModel(trainingUsers) : dataModelBuilder.buildDataModel(trainingUsers);
                        try
                        {
                            model.getPreferencesFromUser(current);
                        }
                        catch (NoSuchUserException)
                        {
                            continue;
                        }
                        int num7 = num6 + model.getItemIDsFromUser(current).size();
                        if (num7 >= (2 * at))
                        {
                            Recommender            recommender = recommenderBuilder.buildRecommender(model);
                            int                    num8        = 0;
                            List <RecommendedItem> list        = recommender.recommend(current, at, rescorer);
                            foreach (RecommendedItem item in list)
                            {
                                if (relevantItemIDs.contains(item.getItemID()))
                                {
                                    num8++;
                                }
                            }
                            int count = list.Count;
                            if (count > 0)
                            {
                                average.addDatum(((double)num8) / ((double)count));
                            }
                            average2.addDatum(((double)num8) / ((double)num6));
                            if (num6 < num7)
                            {
                                average3.addDatum(((double)(count - num8)) / ((double)(num - num6)));
                            }
                            double num10 = 0.0;
                            double num11 = 0.0;
                            for (int i = 0; i < count; i++)
                            {
                                RecommendedItem item2 = list[i];
                                double          num13 = 1.0 / log2(i + 2.0);
                                if (relevantItemIDs.contains(item2.getItemID()))
                                {
                                    num10 += num13;
                                }
                                if (i < num6)
                                {
                                    num11 += num13;
                                }
                            }
                            if (num11 > 0.0)
                            {
                                average4.addDatum(num10 / num11);
                            }
                            num2++;
                            if (count > 0)
                            {
                                num3++;
                            }
                            stopwatch.Stop();
                            log.info("Evaluated with user {} in {}ms", new object[] { current, stopwatch.ElapsedMilliseconds });
                            log.info("Precision/recall/fall-out/nDCG/reach: {} / {} / {} / {} / {}", new object[] { average.getAverage(), average2.getAverage(), average3.getAverage(), average4.getAverage(), ((double)num3) / ((double)num2) });
                        }
                    }
                }
            }
            return(new IRStatisticsImpl(average.getAverage(), average2.getAverage(), average3.getAverage(), average4.getAverage(), ((double)num3) / ((double)num2)));
        }