Allows disabling of log download on test failure with test attirbute
This commit is contained in:
parent
ce963a228c
commit
5d66e900f1
|
@ -83,8 +83,16 @@ namespace CodexDistTestCore
|
||||||
var result = TestContext.CurrentContext.Result;
|
var result = TestContext.CurrentContext.Result;
|
||||||
if (result.Outcome.Status == NUnit.Framework.Interfaces.TestStatus.Failed)
|
if (result.Outcome.Status == NUnit.Framework.Interfaces.TestStatus.Failed)
|
||||||
{
|
{
|
||||||
|
if (IsDownloadingLogsEnabled())
|
||||||
|
{
|
||||||
|
log.Log("Downloading all CodexNode logs because of test failure...");
|
||||||
k8sManager.ForEachOnlineGroup(DownloadLogs);
|
k8sManager.ForEachOnlineGroup(DownloadLogs);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.Log("Skipping download of all CodexNode logs due to [DontDownloadLogsOnFailure] attribute.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DownloadLogs(CodexNodeGroup group)
|
private void DownloadLogs(CodexNodeGroup group)
|
||||||
|
@ -96,6 +104,12 @@ namespace CodexDistTestCore
|
||||||
downloader.DownloadLog(n);
|
downloader.DownloadLog(n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsDownloadingLogsEnabled()
|
||||||
|
{
|
||||||
|
var testProperties = TestContext.CurrentContext.Test.Properties;
|
||||||
|
return !testProperties.ContainsKey(PodLogDownloader.DontDownloadLogsOnFailureKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class GlobalTestFailure
|
public static class GlobalTestFailure
|
||||||
|
|
|
@ -1,12 +1,25 @@
|
||||||
namespace CodexDistTestCore
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace CodexDistTestCore
|
||||||
{
|
{
|
||||||
public interface IPodLogHandler
|
public interface IPodLogHandler
|
||||||
{
|
{
|
||||||
void Log(Stream log);
|
void Log(Stream log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
||||||
|
public class DontDownloadLogsOnFailureAttribute : PropertyAttribute
|
||||||
|
{
|
||||||
|
public DontDownloadLogsOnFailureAttribute()
|
||||||
|
: base(Timing.UseLongTimeoutsKey)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class PodLogDownloader
|
public class PodLogDownloader
|
||||||
{
|
{
|
||||||
|
public const string DontDownloadLogsOnFailureKey = "DontDownloadLogsOnFailure";
|
||||||
|
|
||||||
private readonly TestLog log;
|
private readonly TestLog log;
|
||||||
private readonly IK8sManager k8SManager;
|
private readonly IK8sManager k8SManager;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using CodexDistTestCore;
|
using CodexDistTestCore;
|
||||||
|
using CodexDistTestCore.Config;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
|
||||||
namespace Tests.BasicTests
|
namespace Tests.BasicTests
|
||||||
|
@ -7,87 +8,82 @@ namespace Tests.BasicTests
|
||||||
public class SimpleTests : DistTest
|
public class SimpleTests : DistTest
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
|
public void GetDebugInfo()
|
||||||
|
{
|
||||||
|
var dockerImage = new CodexDockerImage();
|
||||||
|
|
||||||
|
var node = SetupCodexNodes(1).BringOnline()[0];
|
||||||
|
|
||||||
|
var debugInfo = node.GetDebugInfo();
|
||||||
|
|
||||||
|
Assert.That(debugInfo.spr, Is.Not.Empty);
|
||||||
|
Assert.That(debugInfo.codex.revision, Is.EqualTo(dockerImage.GetExpectedImageRevision()));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test, DontDownloadLogsOnFailure]
|
||||||
public void CanAccessLogs()
|
public void CanAccessLogs()
|
||||||
|
{
|
||||||
|
var node = SetupCodexNodes(1).BringOnline()[0];
|
||||||
|
|
||||||
|
var log = node.DownloadLog();
|
||||||
|
|
||||||
|
log.AssertLogContains("Started codex node");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void OneClientTest()
|
||||||
|
{
|
||||||
|
var primary = SetupCodexNodes(1).BringOnline()[0];
|
||||||
|
|
||||||
|
var testFile = GenerateTestFile(1.MB());
|
||||||
|
|
||||||
|
var contentId = primary.UploadFile(testFile);
|
||||||
|
|
||||||
|
var downloadedFile = primary.DownloadContent(contentId);
|
||||||
|
|
||||||
|
testFile.AssertIsEqual(downloadedFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TwoClientsOnePodTest()
|
||||||
{
|
{
|
||||||
var group = SetupCodexNodes(2).BringOnline();
|
var group = SetupCodexNodes(2).BringOnline();
|
||||||
|
|
||||||
var log = group[0].DownloadLog();
|
var primary = group[0];
|
||||||
|
var secondary = group[1];
|
||||||
|
|
||||||
log.AssertLogContains("topics=\"discv5\"");
|
PerformTwoClientTest(primary, secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
//[Test]
|
[Test]
|
||||||
//public void GetDebugInfo()
|
public void TwoClientsTwoPodsTest()
|
||||||
//{
|
{
|
||||||
// var dockerImage = new CodexDockerImage();
|
var primary = SetupCodexNodes(1).BringOnline()[0];
|
||||||
|
|
||||||
// var node = SetupCodexNodes(1)
|
var secondary = SetupCodexNodes(1).BringOnline()[0];
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// var debugInfo = node.GetDebugInfo();
|
PerformTwoClientTest(primary, secondary);
|
||||||
|
}
|
||||||
|
|
||||||
// Assert.That(debugInfo.spr, Is.Not.Empty);
|
[Test]
|
||||||
// Assert.That(debugInfo.codex.revision, Is.EqualTo(dockerImage.GetExpectedImageRevision()));
|
public void TwoClientsTwoLocationsTest()
|
||||||
//}
|
{
|
||||||
|
var primary = SetupCodexNodes(1)
|
||||||
|
.At(Location.BensLaptop)
|
||||||
|
.BringOnline()[0];
|
||||||
|
|
||||||
//[Test]
|
var secondary = SetupCodexNodes(1)
|
||||||
//public void OneClientTest()
|
.At(Location.BensOldGamingMachine)
|
||||||
//{
|
.BringOnline()[0];
|
||||||
// var primary = SetupCodexNodes(1)
|
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// var testFile = GenerateTestFile(1.MB());
|
var debugInfo = primary.GetDebugInfo();
|
||||||
|
Assert.That(debugInfo.spr, Is.Not.Empty);
|
||||||
|
|
||||||
// var contentId = primary.UploadFile(testFile);
|
var debugInfo2 = secondary.GetDebugInfo();
|
||||||
|
Assert.That(debugInfo2.spr, Is.Not.Empty);
|
||||||
|
|
||||||
// var downloadedFile = primary.DownloadContent(contentId);
|
PerformTwoClientTest(primary, secondary);
|
||||||
|
}
|
||||||
// testFile.AssertIsEqual(downloadedFile);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//[Test]
|
|
||||||
//public void TwoClientsOnePodTest()
|
|
||||||
//{
|
|
||||||
// var group = SetupCodexNodes(2)
|
|
||||||
// .BringOnline();
|
|
||||||
|
|
||||||
// var primary = group[0];
|
|
||||||
// var secondary = group[1];
|
|
||||||
|
|
||||||
// PerformTwoClientTest(primary, secondary);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//[Test]
|
|
||||||
//public void TwoClientsTwoPodsTest()
|
|
||||||
//{
|
|
||||||
// var primary = SetupCodexNodes(1)
|
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// var secondary = SetupCodexNodes(1)
|
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// PerformTwoClientTest(primary, secondary);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//[Test]
|
|
||||||
//public void TwoClientsTwoLocationsTest()
|
|
||||||
//{
|
|
||||||
// var primary = SetupCodexNodes(1)
|
|
||||||
// .At(Location.BensLaptop)
|
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// var secondary = SetupCodexNodes(1)
|
|
||||||
// .At(Location.BensOldGamingMachine)
|
|
||||||
// .BringOnline()[0];
|
|
||||||
|
|
||||||
// var debugInfo = primary.GetDebugInfo();
|
|
||||||
// Assert.That(debugInfo.spr, Is.Not.Empty);
|
|
||||||
|
|
||||||
// var debugInfo2 = secondary.GetDebugInfo();
|
|
||||||
// Assert.That(debugInfo2.spr, Is.Not.Empty);
|
|
||||||
|
|
||||||
// PerformTwoClientTest(primary, secondary);
|
|
||||||
//}
|
|
||||||
|
|
||||||
private void PerformTwoClientTest(IOnlineCodexNode primary, IOnlineCodexNode secondary)
|
private void PerformTwoClientTest(IOnlineCodexNode primary, IOnlineCodexNode secondary)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue