public void ServerTelemetryPluginTest() { var testWriterFactory = new TestWriterFactory(); using (var plugin = new ServerTelemetryPlugin()) { plugin.Configure(testWriterFactory, null, null, new NullLoggerFactory()); foreach (var testCase in _testCases) { var logLine = testCase.GetLogLine(); plugin.ProcessLogLine(logLine, testCase.LogType); } } var testEventWriter = testWriterFactory.Writers.Values.First() as TestWriter <ServerTelemetryEvent>; var testMetricWriter = testWriterFactory.Writers.Values.Last() as TestWriter <ServerTelemetryMetric>; testWriterFactory.Writers.Count.Should().Be(2); testEventWriter.WasDisposed.Should().Be(true); testMetricWriter.WasDisposed.Should().Be(true); var expectedOutput = _testCases.Select(testCase => (Tuple <object, object[]>)testCase.ExpectedOutput).ToList(); var expectedEvents = expectedOutput.Select(i => i.Item1); var expectedMetrics = expectedOutput.SelectMany(i => i.Item2); testEventWriter.ReceivedObjects.Should().BeEquivalentTo(expectedEvents); testMetricWriter.ReceivedObjects.Should().BeEquivalentTo(expectedMetrics); }
public void BadAndNoOpInput() { var processingNotificationsCollector = new ProcessingNotificationsCollector(10); var testWriterFactory = new TestWriterFactory(); using (var plugin = new ServerTelemetryPlugin()) { plugin.Configure(testWriterFactory, null, processingNotificationsCollector, new NullLoggerFactory()); var wrongContentFormat = new LogLine(new ReadLogLineResult(123, "ServerTelemetry doesn't expect string"), TestLogFileInfo); var nullContent = new LogLine(new ReadLogLineResult(123, null), TestLogFileInfo); var differentEventType = new LogLine(new ReadLogLineResult(123, new NativeJsonLogsBaseEvent { EventType = "msg" }), TestLogFileInfo); // This doesn't generate error, as it is a normal condition var payloadIsNull = new LogLine(new ReadLogLineResult(123, new NativeJsonLogsBaseEvent { EventType = "server-telemetry" }), TestLogFileInfo); plugin.ProcessLogLine(wrongContentFormat, LogType.VizqlserverCpp); plugin.ProcessLogLine(nullContent, LogType.VizqlserverCpp); plugin.ProcessLogLine(differentEventType, LogType.VizqlserverCpp); plugin.ProcessLogLine(payloadIsNull, LogType.VizqlserverCpp); } testWriterFactory.AssertAllWritersAreDisposedAndEmpty(2); processingNotificationsCollector.TotalErrorsReported.Should().Be(3); }