public static void SetHelixLogUri(this ModelTestResult modelTestResult, HelixLogKind kind, string uri) { modelTestResult.IsHelixTestResult = true; switch (kind) { case HelixLogKind.Console: modelTestResult.HelixConsoleUri = uri; break; case HelixLogKind.CoreDump: modelTestResult.HelixCoreDumpUri = uri; break; case HelixLogKind.RunClient: modelTestResult.HelixRunClientUri = uri; break; case HelixLogKind.TestResults: modelTestResult.HelixTestResultsUri = uri; break; default: throw new Exception($"Invalid kind '{kind}'"); } }
public void AddHelixLog(ModelTestResult testResult, HelixLogKind kind, string content) { var uri = $"https://localhost/runfo/{HelixLogCount++}/{kind}"; testResult.SetHelixLogUri(kind, uri); TestableHttpMessageHandler.AddRaw(uri, content); }
public HelixLogInfo( HelixLogKind kind, string uri) { switch (kind) { case HelixLogKind.RunClient: RunClientUri = uri; break; case HelixLogKind.Console: ConsoleUri = uri; break; case HelixLogKind.CoreDump: CoreDumpUri = uri; break; case HelixLogKind.TestResults: TestResultsUri = uri; break; default: throw new Exception($"Invalid value {kind}"); } }
public SearchHelixLogsResult(BuildInfo buildInfo, HelixLogKind helixLogKind, string helixLogUri, string line) { BuildInfo = buildInfo; HelixLogKind = helixLogKind; HelixLogUri = helixLogUri; Line = line; }
public async Task SimpleHelixLogTrackingIssue(HelixLogKind kind) { var def = AddBuildDefinition("dnceng|public|roslyn|42"); var attempt = AddAttempt(1, AddBuild("1|dotnet|roslyn", def)); var testRun = AddTestRun("windows", attempt.ModelBuild); var testResult1 = AddTestResult("Util.Test1", testRun); AddHelixLog(testResult1, kind, "the dog fetched the ball"); var testResult2 = AddTestResult("Util.Test2", testRun); AddHelixLog(testResult2, kind, "the tree grew"); var tracking1 = AddTrackingIssue( TrackingKind.HelixLogs, helixLogsRequest: new SearchHelixLogsRequest() { HelixLogKinds = { kind }, Text = "the", }); await TestSearch(tracking1, matchCount : 2, isPresent : true); var tracking2 = AddTrackingIssue( TrackingKind.HelixLogs, helixLogsRequest: new SearchHelixLogsRequest() { HelixLogKinds = { kind }, Text = "dog", }); await TestSearch(tracking2, matchCount : 1, isPresent : true); var tracking3 = AddTrackingIssue( TrackingKind.HelixLogs, helixLogsRequest: new SearchHelixLogsRequest() { HelixLogKinds = { kind }, Text = "fish", }); await TestSearch(tracking3, matchCount : 0, isPresent : false); async Task TestSearch(ModelTrackingIssue issue, int matchCount, bool isPresent) { await Context.SaveChangesAsync(); await TrackingIssueUtil.TriageAsync(attempt, issue); var matches = await Context.ModelTrackingIssueMatches.Where(x => x.ModelTrackingIssueId == issue.Id).ToListAsync(); Assert.Equal(matchCount, matches.Count); var result = await Context.ModelTrackingIssueResults.Where(x => x.ModelTrackingIssueId == issue.Id).SingleAsync(); Assert.Equal(isPresent, result.IsPresent); } }
public async Task SimpleHelixLogsReport(HelixLogKind kind, string columnText, string fileName) { var def = AddBuildDefinition("dnceng|public|roslyn|42"); AddTestData(1, "2020-08-01"); AddTestData(2, "2020-08-01"); var tracking = AddTrackingIssue( TrackingKind.HelixLogs, title: "Helix Log", helixLogsRequest: new SearchHelixLogsRequest() { HelixLogKinds = { kind }, Text = "data", }); await Context.SaveChangesAsync(); await TriageAll(); var expected = @$ " |Build|Kind|{columnText}|
public static string GetDisplayFileName(this HelixLogKind kind) => kind switch {
public string?GetUri(HelixLogKind kind) => kind switch {