2023-09-20 08:51:47 +00:00
|
|
|
|
using Logging;
|
|
|
|
|
using NUnit.Framework;
|
2023-07-18 07:02:41 +00:00
|
|
|
|
|
2023-09-20 08:51:47 +00:00
|
|
|
|
namespace DistTestCore
|
2023-07-18 07:02:41 +00:00
|
|
|
|
{
|
|
|
|
|
public static class NameUtils
|
|
|
|
|
{
|
|
|
|
|
public static string GetTestMethodName(string name = "")
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(name)) return name;
|
|
|
|
|
var test = TestContext.CurrentContext.Test;
|
|
|
|
|
var args = FormatArguments(test);
|
|
|
|
|
return ReplaceInvalidCharacters($"{test.MethodName}{args}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetFixtureFullName(LogConfig config, DateTime start, string name)
|
|
|
|
|
{
|
|
|
|
|
var folder = DetermineFolder(config, start);
|
|
|
|
|
var fixtureName = GetFixtureName(name, start);
|
|
|
|
|
return Path.Combine(folder, fixtureName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetRawFixtureName()
|
|
|
|
|
{
|
|
|
|
|
var test = TestContext.CurrentContext.Test;
|
2023-08-10 09:59:57 +00:00
|
|
|
|
if (test.ClassName!.Contains("AdhocContext")) return "none";
|
2023-07-18 07:02:41 +00:00
|
|
|
|
var className = test.ClassName!.Substring(test.ClassName.LastIndexOf('.') + 1);
|
|
|
|
|
return className.Replace('.', '-');
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-18 09:04:14 +00:00
|
|
|
|
public static string GetCategoryName()
|
|
|
|
|
{
|
|
|
|
|
var test = TestContext.CurrentContext.Test;
|
2023-08-10 09:59:57 +00:00
|
|
|
|
if (test.ClassName!.Contains("AdhocContext")) return "none";
|
2023-07-18 09:04:14 +00:00
|
|
|
|
return test.ClassName!.Substring(0, test.ClassName.LastIndexOf('.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetTestId()
|
|
|
|
|
{
|
2023-09-27 06:49:36 +00:00
|
|
|
|
return GetEnvVar("TESTID", "EnvVar-TESTID-NotSet");
|
2023-07-18 09:04:14 +00:00
|
|
|
|
}
|
|
|
|
|
|
2024-02-22 13:41:07 +00:00
|
|
|
|
public static string MakeDeployId()
|
2023-07-18 09:04:14 +00:00
|
|
|
|
{
|
2024-02-22 13:41:07 +00:00
|
|
|
|
return DateTime.UtcNow.ToString("yyyyMMdd-hhmmss");
|
2023-07-18 09:04:14 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-09-27 06:49:36 +00:00
|
|
|
|
private static string GetEnvVar(string name, string defaultValue)
|
2023-07-18 09:04:14 +00:00
|
|
|
|
{
|
|
|
|
|
var v = Environment.GetEnvironmentVariable(name);
|
2023-09-27 06:49:36 +00:00
|
|
|
|
if (string.IsNullOrEmpty(v)) return defaultValue;
|
2023-07-18 09:04:14 +00:00
|
|
|
|
return v;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-18 07:02:41 +00:00
|
|
|
|
private static string FormatArguments(TestContext.TestAdapter test)
|
|
|
|
|
{
|
|
|
|
|
if (test.Arguments == null || !test.Arguments.Any()) return "";
|
|
|
|
|
return $"[{string.Join(',', test.Arguments)}]";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string ReplaceInvalidCharacters(string name)
|
|
|
|
|
{
|
|
|
|
|
return name.Replace(":", "_");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string DetermineFolder(LogConfig config, DateTime start)
|
|
|
|
|
{
|
|
|
|
|
return Path.Join(
|
|
|
|
|
config.LogRoot,
|
|
|
|
|
$"{start.Year}-{Pad(start.Month)}",
|
|
|
|
|
Pad(start.Day));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string GetFixtureName(string name, DateTime start)
|
|
|
|
|
{
|
|
|
|
|
var className = GetRawFixtureName();
|
|
|
|
|
if (!string.IsNullOrEmpty(name)) className = name;
|
|
|
|
|
return $"{Pad(start.Hour)}-{Pad(start.Minute)}-{Pad(start.Second)}Z_{className.Replace('.', '-')}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string Pad(int n)
|
|
|
|
|
{
|
|
|
|
|
return n.ToString().PadLeft(2, '0');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|