Пример #1
0
        private void when_validate_a_snapshot_step()
        {
            act = () => { _actualResult = _validator.Validate(_snapshotStep, "Environment01"); };

            context["the step already exists and successfully deployed"] = () =>
            {
                before = () => { _snapshotStep = new SnapshotStep {
                                     ProjectId = "Project01.1", ReleaseId = "Release01.1"
                                 }; };

                it["should be resolved as valid"] = () => { _actualResult.should_be_false(); };
            };

            context["the step already exists and failed to deploy"] = () =>
            {
                before = () => { _snapshotStep = new SnapshotStep {
                                     ProjectId = "Project01.2", ReleaseId = "Release01.2"
                                 }; };

                it["should be resolved as invalid"] = () => { _actualResult.should_be_true(); };
            };

            context["the step does not exist"] = () =>
            {
                before = () => { _snapshotStep = new SnapshotStep {
                                     ProjectId = "SomeName", ReleaseId = "SomeRelease"
                                 }; };

                it["should be resolved as invalid"] = () => { _actualResult.should_be_true(); };
            };
        }
        public void Deploy(Snapshot snapshot)
        {
            Log.Info($"Snapshot deployment to {_environment.Name} started.");

            var environmentId = _environment.Id;

            foreach (var step in snapshot.Steps.OrderBy(x => x.Index))
            {
                var valid = _steps.Validate(step, environmentId);
                if (valid)
                {
                    _stepDeployer.Deploy(step, environmentId);
                }
                else
                {
                    Log.Info(
                        $"Deployment step {step.Index} project {step.ProjectName} version {step.ReleaseVersion}. Already deployed. Skipping.");
                }
            }

            Log.Info($"Snapshot deployment to {_environment.Name} finished.");
        }
Пример #3
0
        private void when_deploy_a_snapshot()
        {
            act = () => _deployer.Deploy(_snapshot);

            context["with a step"] = () =>
            {
                before = () =>
                {
                    _snapshotStep1 = new SnapshotStep
                    {
                        ProjectId = "Project01",
                        ReleaseId = "Release01"
                    };
                    _snapshot.Steps = new[] { _snapshotStep1 };
                    A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, _environment.Id)).DoesNothing();
                    A.CallTo(() => _validator.Validate(_snapshotStep1, _environment.Id)).Returns(true);
                };

                it["should deploy the step"] =
                    () =>
                {
                    var step = _snapshotStep1;
                    A.CallTo(() => _stepDeployer.Deploy(step, A <string> ._)).MustHaveHappened();
                };


                it["should deploy to a configured environment"] = () =>
                {
                    var id = _environment.Id;
                    A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, id)).MustHaveHappened();
                };
            };

            context["with two steps"] =
                () =>
            {
                before = () =>
                {
                    _snapshotStep1 = new SnapshotStep
                    {
                        Index     = 1,
                        ProjectId = "Project01",
                        ReleaseId = "Release01"
                    };
                    _snapshotStep2 = new SnapshotStep
                    {
                        Index     = 2,
                        ProjectId = "Project02",
                        ReleaseId = "Release02"
                    };
                    _snapshot.Steps = new[] { _snapshotStep2, _snapshotStep1 };
                    A.CallTo(() => _validator.Validate(A <SnapshotStep> ._, _environment.Id)).Returns(true);
                    A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, _environment.Id)).DoesNothing();
                };
                it["should deploy in correct order"] = () =>
                {
                    var id = _environment.Id;
                    A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, id)).MustHaveHappened()
                    .Then(A.CallTo(() => _stepDeployer.Deploy(_snapshotStep2, id)).MustHaveHappened());
                };
            };

            context["with a step is not valid"] =
                () =>
            {
                before = () =>
                {
                    _snapshotStep1 = new SnapshotStep
                    {
                        Index     = 1,
                        ProjectId = "Project01",
                        ReleaseId = "Release01"
                    };

                    _snapshot.Steps = new[] { _snapshotStep1 };
                    A.CallTo(() => _validator.Validate(A <SnapshotStep> ._, _environment.Id)).Returns(false);
                    A.CallTo(() => _stepDeployer.Deploy(A <SnapshotStep> ._, _environment.Id)).DoesNothing();
                };

                it["should skip the step"] =
                    () =>
                {
                    A.CallTo(() => _stepDeployer.Deploy(_snapshotStep1, _environment.Id)).MustNotHaveHappened();
                };
            };
        }