示例#1
0
        public void LogMetricFinishedJobOutcome_WithDuplicateContextKey_DiscardsContextItem()
        {
            // Arrange
            var    spyLogger   = new InMemoryLogger <DatabricksJobMetricsJob>();
            string metricName  = BogusGenerator.Random.Word();
            var    resultState = BogusGenerator.PickRandom <RunResultState>();
            var    run         = new Run {
                State = new RunState {
                    ResultState = resultState
                }
            };
            var    jobRun         = new JobRun(BogusGenerator.Random.Word(), run);
            string discardedValue = $"discarded-{Guid.NewGuid()}";
            string includedValue  = $"included-{Guid.NewGuid()}";
            var    context        = new Dictionary <string, object>
            {
                ["Outcome"] = discardedValue,
                ["NewKey"]  = includedValue
            };

            // Act
            spyLogger.LogMetricFinishedJobOutcome(metricName, jobRun, context);

            // Assert
            Assert.DoesNotContain(spyLogger.Messages, msg => msg.Contains(discardedValue));
            Assert.Contains(spyLogger.Messages, msg => msg.Contains(includedValue));
        }
示例#2
0
        public void LogMetricFinishedJobOutcome_WithoutJobRun_Throws()
        {
            // Arrange
            var    spyLogger  = new InMemoryLogger <DatabricksJobMetricsJob>();
            string metricName = BogusGenerator.Random.Word();

            // Act / Assert
            Assert.ThrowsAny <ArgumentException>(
                () => spyLogger.LogMetricFinishedJobOutcome(metricName, jobRun: null));
        }
示例#3
0
        public void LogMetricFinishedJobOutcome_WithBlankMetricName_Throws(string metricName)
        {
            // Arrange
            var spyLogger = new InMemoryLogger <DatabricksJobMetricsJob>();
            var jobRun    = new JobRun(BogusGenerator.Random.Word(), new Run());

            // Act / Assert
            Assert.ThrowsAny <ArgumentException>(
                () => spyLogger.LogMetricFinishedJobOutcome(metricName: metricName, jobRun: jobRun));
        }
示例#4
0
        public void LogMetricFinishedJobOutcome_WithoutRunOutcome_LogsWarning()
        {
            // Arrange
            var    spyLogger  = new InMemoryLogger <DatabricksJobMetricsJob>();
            string metricName = BogusGenerator.Random.Word();
            var    run        = new Run {
                State = new RunState {
                    ResultState = null
                }
            };
            var jobRun = new JobRun(BogusGenerator.Random.Word(), run);

            // Act
            spyLogger.LogMetricFinishedJobOutcome(metricName, jobRun);

            // Assert
            Assert.Single(spyLogger.Entries, entry => entry.Level == LogLevel.Warning);
            Assert.DoesNotContain(spyLogger.Messages, msg => msg.StartsWith("Metric" + metricName));
        }
示例#5
0
        public void LogMetricFinishedJobOutcome_WithRunOutcome_LogsRunOutcome()
        {
            // Arrange
            var    spyLogger   = new InMemoryLogger <DatabricksJobMetricsJob>();
            string metricName  = BogusGenerator.Random.Word();
            var    resultState = BogusGenerator.PickRandom <RunResultState>();
            var    run         = new Run {
                State = new RunState {
                    ResultState = resultState
                }
            };
            var jobRun = new JobRun(BogusGenerator.Random.Word(), run);

            // Act
            spyLogger.LogMetricFinishedJobOutcome(metricName, jobRun);

            // Assert
            Assert.All(spyLogger.Entries, entry => Assert.Equal(LogLevel.Information, entry.Level));
            Assert.Single(spyLogger.Messages, msg => msg.Contains(resultState.ToString(), StringComparison.OrdinalIgnoreCase));
            Assert.Single(spyLogger.Messages, msg => msg.StartsWith("Metric " + metricName));
        }