Example #1
0
        public void TestExistingDictionarySubItem()
        {
            var main = new MainParameterization
            {
                TokenProvider = new TokenProviderParameterization
                {
                    Tokens = new Dictionary <string, TokenParameterization>()
                    {
                        {
                            "mine",
                            new TokenParameterization
                            {
                                Token = "abc"
                            }
                        }
                    }
                }
            };
            var before   = main.TokenProvider !.Tokens["mine"].Token;
            var newToken = before + before;

            ParameterOverrideHelper.InplaceOverride(
                main,
                $"tokenProvider.tokens.mine.token={newToken}");

            Assert.Equal(newToken, main.TokenProvider !.Tokens["mine"].Token);
        }
Example #2
0
 public void TestExistingArraySubItem()
 {
     var main = new MainParameterization
     {
         Jobs = new Dictionary <string, JobParameterization>()
         {
             {
                 "myJob",
                 new JobParameterization
                 {
                     Current = new SourceParameterization
                     {
                         Scripts = new []
                         {
                             new SourceFileParametrization
                             {
                                 FilePath = "to-be-overriden"
                             }
                         }
                     }
                 }
             }
         }
     };
     var before      = main.Jobs["myJob"].Current !.Scripts ![0].FilePath;
Example #3
0
 public LogParameterTelemetryInput(string sessionId, MainParameterization parameters)
 {
     SessionId      = sessionId;
     SendErrorOptIn = parameters.SendErrorOptIn;
     FailIfDataLoss = parameters.FailIfDataLoss;
     TokenProvider  = ExtractTokenProvider(parameters.TokenProvider);
     Jobs           = parameters.Jobs.Values.Select(j => new JobInfo(j)).ToArray();
 }
Example #4
0
        public void TestSingleProperty()
        {
            var main   = new MainParameterization();
            var before = main.SendErrorOptIn;
            var value  = (!before).ToString().ToLower();

            ParameterOverrideHelper.InplaceOverride(main, $"sendErrorOptIn={value}");

            Assert.Equal(!before, main.SendErrorOptIn);
        }
        private async Task <bool> ProcessJobAsync(
            MainParameterization parameters,
            IKustoManagementGatewayFactory kustoGatewayFactory,
            IFileGateway localFileGateway,
            string jobName,
            JobParameterization job)
        {
            _tracer.WriteLine(false, $"Job '{jobName}':");
            _tracer.WriteLine(false, "");
            try
            {
                _tracer.WriteLine(true, "Current DB Provider...  ");

                var currentDbProvider = CreateDatabaseProvider(job.Current, kustoGatewayFactory, localFileGateway);

                _tracer.WriteLine(true, "Target DB Provider...  ");

                var targetDbProvider = CreateDatabaseProvider(job.Target, kustoGatewayFactory, localFileGateway);

                var currentDbTask = RetrieveDatabaseAsync(currentDbProvider, "current");
                var targetDbTask  = RetrieveDatabaseAsync(targetDbProvider, "target");

                await Task.WhenAll(currentDbTask, targetDbTask);

                var currentDb = await currentDbTask;
                var targetDb  = await targetDbTask;

                _tracer.WriteLine(false, "Compute Delta...");

                var delta           = currentDb.ComputeDelta(targetDb);
                var actions         = new CommandCollection(job.Action !.UsePluralForms, delta);
                var jobSuccess      = ReportOnDeltaCommands(parameters, actions);
                var actionProviders = CreateActionProvider(
                    job.Action !,
                    kustoGatewayFactory,
                    localFileGateway,
                    job.Current?.Adx);

                _tracer.WriteLine(false, "Processing delta commands...");
                foreach (var actionProvider in actionProviders)
                {
                    await actionProvider.ProcessDeltaCommandsAsync(
                        parameters.FailIfDataLoss,
                        actions);
                }
                _tracer.WriteLine(false, "Delta processed / Job completed");
                _tracer.WriteLine(false, "");

                return(jobSuccess);
            }
            catch (DeltaException ex)
            {
                throw new DeltaException($"Issue in running job '{jobName}'", ex);
            }
        }
Example #6
0
        public void TestSinglePropertyWrongName()
        {
            var main = new MainParameterization();

            try
            {
                ParameterOverrideHelper.InplaceOverride(main, "myPropertyOrTheHighWay=42");

                Assert.True(false, "Shouldn't reach this point");
            }
            catch (DeltaException)
            {
            }
        }
Example #7
0
        public void TestSinglePropertyWrongType()
        {
            var main = new MainParameterization();

            try
            {
                ParameterOverrideHelper.InplaceOverride(main, "sendTelemetryOptIn=42");

                Assert.True(false, "Shouldn't reach this point");
            }
            catch (DeltaException)
            {
            }
        }
Example #8
0
        public async Task LogParameterTelemetryAsync(MainParameterization parameters)
        {
            if (_doApiCalls)
            {
                var tokenSource = new CancellationTokenSource(TIMEOUT);
                var ct          = tokenSource.Token;

                _tracer.WriteLine(true, "LogParameterTelemetryAsync - Start");
                try
                {
                    var output = await PostAsync <LogParameterTelemetryOutput>(
                        "/logparametertelemetry",
                        new LogParameterTelemetryInput(_sessionId, parameters), ct);

                    _tracer.WriteLine(true, "LogParameterTelemetryAsync - End");
                }
                catch
                {
                    _tracer.WriteLine(true, "LogParameterTelemetryAsync - Failed");
                }
            }
        }
Example #9
0
        public void TestExistingPropertyPath()
        {
            var main = new MainParameterization
            {
                TokenProvider = new TokenProviderParameterization
                {
                    Login = new ServicePrincipalLoginParameterization
                    {
                        TenantId = "42",
                        ClientId = "15",
                        Secret   = "My secret"
                    }
                }
            };
            var before      = main.TokenProvider !.Login !.TenantId;
            var newTenantId = before + before;

            ParameterOverrideHelper.InplaceOverride(
                main,
                $"tokenProvider.login.tenantId={newTenantId}");

            Assert.Equal(newTenantId, main.TokenProvider !.Login !.TenantId);
        }
        private bool ReportOnDeltaCommands(
            MainParameterization parameters,
            CommandCollection deltaCommands)
        {
            var success = true;

            _tracer.WriteLine(false, $"{deltaCommands.AllCommands.Count()} commands in delta");
            if (deltaCommands.DataLossCommands.Any())
            {
                _tracer.WriteLine(false, "Delta contains drop commands:");
                foreach (var command in deltaCommands.DataLossCommands)
                {
                    _tracer.WriteLine(false, "  " + command.ToScript());
                }
                _tracer.WriteLine(false, "");
                if (parameters.FailIfDataLoss)
                {
                    _tracer.WriteErrorLine("Drop commands forces failure");
                    success = false;
                }
            }

            return(success);
        }