Adds git revision information to logs for testing framework status
This commit is contained in:
parent
412a4d3c7a
commit
0f9e01e393
|
@ -1,4 +1,5 @@
|
||||||
using DistTestCore.Logs;
|
using DistTestCore;
|
||||||
|
using DistTestCore.Logs;
|
||||||
using Logging;
|
using Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Utils;
|
using Utils;
|
||||||
|
@ -43,6 +44,7 @@ namespace ContinuousTests
|
||||||
var taskFactory = new TaskFactory();
|
var taskFactory = new TaskFactory();
|
||||||
overviewLog.Log("Startup checks passed. Configuration:");
|
overviewLog.Log("Startup checks passed. Configuration:");
|
||||||
overviewLog.Log(JsonConvert.SerializeObject(config, Formatting.Indented));
|
overviewLog.Log(JsonConvert.SerializeObject(config, Formatting.Indented));
|
||||||
|
overviewLog.Log("Test framework revision: " + GitInfo.GetStatus());
|
||||||
overviewLog.Log("Continuous tests starting...");
|
overviewLog.Log("Continuous tests starting...");
|
||||||
overviewLog.Log("");
|
overviewLog.Log("");
|
||||||
var allTests = testFactory.CreateTests();
|
var allTests = testFactory.CreateTests();
|
||||||
|
|
|
@ -187,12 +187,11 @@ namespace ContinuousTests
|
||||||
|
|
||||||
private Dictionary<string, string> CreateStatusLogData(DateTime testStart, string message)
|
private Dictionary<string, string> CreateStatusLogData(DateTime testStart, string message)
|
||||||
{
|
{
|
||||||
return new Dictionary<string, string>
|
var result = entryPoint.GetPluginMetadata();
|
||||||
{
|
result.Add("teststart", testStart.ToString("o"));
|
||||||
{ "teststart", testStart.ToString("o") },
|
result.Add("testname", testName);
|
||||||
{ "testname", testName },
|
result.Add("message", message);
|
||||||
{ "message", message }
|
return result;
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetCombinedExceptionsMessage(Exception[] exceptions)
|
private string GetCombinedExceptionsMessage(Exception[] exceptions)
|
||||||
|
|
|
@ -58,6 +58,7 @@ namespace DistTestCore
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fixtureLog.Log("Test framework revision: " + GitInfo.GetStatus());
|
||||||
fixtureLog.Log("Global setup cleanup successful");
|
fixtureLog.Log("Global setup cleanup successful");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="LibGit2Sharp" Version="0.28.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="nunit" Version="3.13.3" />
|
<PackageReference Include="nunit" Version="3.13.3" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
using KubernetesWorkflow;
|
||||||
|
using LibGit2Sharp;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace DistTestCore
|
||||||
|
{
|
||||||
|
public static class GitInfo
|
||||||
|
{
|
||||||
|
private static string? status = null;
|
||||||
|
|
||||||
|
public static string GetStatus()
|
||||||
|
{
|
||||||
|
if (status == null) status = DetermineStatus();
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string DetermineStatus()
|
||||||
|
{
|
||||||
|
var path = FindGitPath();
|
||||||
|
if (path == null) return "unknown";
|
||||||
|
|
||||||
|
using var repo = new Repository(path);
|
||||||
|
var isModified = repo.RetrieveStatus().Any(IsModified);
|
||||||
|
var sha = repo.Head.Tip.Sha.Substring(0, 7);
|
||||||
|
|
||||||
|
return K8sNameUtils.Format(sha + (isModified ? "_modified" : "_clean"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsModified(StatusEntry e)
|
||||||
|
{
|
||||||
|
return e.State == FileStatus.ModifiedInIndex ||
|
||||||
|
e.State == FileStatus.NewInIndex ||
|
||||||
|
e.State == FileStatus.RenamedInIndex ||
|
||||||
|
e.State == FileStatus.DeletedFromIndex ||
|
||||||
|
|
||||||
|
e.State == FileStatus.ModifiedInWorkdir ||
|
||||||
|
e.State == FileStatus.NewInWorkdir ||
|
||||||
|
e.State == FileStatus.RenamedInWorkdir ||
|
||||||
|
e.State == FileStatus.DeletedFromWorkdir;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string? FindGitPath()
|
||||||
|
{
|
||||||
|
var path = Repository.Discover(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
|
||||||
|
if (!string.IsNullOrEmpty(path)) return path;
|
||||||
|
|
||||||
|
path = Repository.Discover(Directory.GetCurrentDirectory());
|
||||||
|
if (!string.IsNullOrEmpty(path)) return path;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,6 +34,7 @@ namespace DistTestCore.Logs
|
||||||
data.Add("testid", NameUtils.GetTestId());
|
data.Add("testid", NameUtils.GetTestId());
|
||||||
data.Add("testtype", testType);
|
data.Add("testtype", testType);
|
||||||
data.Add("testduration", testDuration);
|
data.Add("testduration", testDuration);
|
||||||
|
data.Add("testframeworkrevision", GitInfo.GetStatus());
|
||||||
Write(data);
|
Write(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@ namespace DistTestCore
|
||||||
recipe.PodLabels.Add("category", NameUtils.GetCategoryName());
|
recipe.PodLabels.Add("category", NameUtils.GetCategoryName());
|
||||||
recipe.PodLabels.Add("fixturename", NameUtils.GetRawFixtureName());
|
recipe.PodLabels.Add("fixturename", NameUtils.GetRawFixtureName());
|
||||||
recipe.PodLabels.Add("testname", NameUtils.GetTestMethodName());
|
recipe.PodLabels.Add("testname", NameUtils.GetTestMethodName());
|
||||||
|
recipe.PodLabels.Add("testframeworkrevision", GitInfo.GetStatus());
|
||||||
|
|
||||||
foreach (var pair in metadata)
|
foreach (var pair in metadata)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue