From d3642ffb4e387fd749a79a9087481e87dc6e5b56 Mon Sep 17 00:00:00 2001 From: ThatBen Date: Fri, 30 May 2025 09:57:21 +0200 Subject: [PATCH] Improved rerun that support parallelism. Disable fail and repair tests until fixed/implemented. --- .../CodexReleaseTests/MarketTests/FailTest.cs | 19 +++++++++++-------- .../MarketTests/FinishTest.cs | 6 ++++-- .../MarketTests/RepairTest.cs | 4 +++- .../MarketTests/StartTest.cs | 6 ++++-- Tests/CodexReleaseTests/Utils/ChainMonitor.cs | 1 + 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Tests/CodexReleaseTests/MarketTests/FailTest.cs b/Tests/CodexReleaseTests/MarketTests/FailTest.cs index a8b39464..a0a818ae 100644 --- a/Tests/CodexReleaseTests/MarketTests/FailTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/FailTest.cs @@ -11,10 +11,13 @@ namespace CodexReleaseTests.MarketTests protected override int NumberOfClients => 1; protected override ByteSize HostAvailabilitySize => 1.GB(); protected override TimeSpan HostAvailabilityMaxDuration => TimeSpan.FromDays(1.0); - private readonly TestToken pricePerBytePerSecond = 10.TstWei(); + [Ignore("Slots are never freed because proofs are never marked as missing. Issue: https://github.com/codex-storage/nim-codex/issues/1153")] [Test] - public void Fail() + [Combinatorial] + public void Fail( + [Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])] int rerun + ) { var hosts = StartHosts(); var client = StartClients().Single(); @@ -37,11 +40,11 @@ namespace CodexReleaseTests.MarketTests private void WaitForSlotFreedEvents() { - Log(nameof(WaitForSlotFreedEvents)); - var start = DateTime.UtcNow; var timeout = CalculateContractFailTimespan(); + Log($"{nameof(WaitForSlotFreedEvents)} timeout: {Time.FormatDuration(timeout)}"); + while (DateTime.UtcNow < start + timeout) { var events = GetContracts().GetEvents(GetTestRunTimeRange()); @@ -61,13 +64,13 @@ namespace CodexReleaseTests.MarketTests var cid = client.UploadFile(GenerateTestFile(5.MB())); return client.Marketplace.RequestStorage(new StoragePurchaseRequest(cid) { - Duration = TimeSpan.FromHours(1.0), - Expiry = TimeSpan.FromHours(0.2), + Duration = HostAvailabilityMaxDuration / 2, + Expiry = TimeSpan.FromMinutes(5.0), MinRequiredNumberOfNodes = (uint)NumberOfHosts, NodeFailureTolerance = (uint)(NumberOfHosts / 2), - PricePerBytePerSecond = pricePerBytePerSecond, + PricePerBytePerSecond = 100.TstWei(), ProofProbability = 1, // Require a proof every period - CollateralPerByte = 1.Tst() + CollateralPerByte = 1.TstWei() }); } } diff --git a/Tests/CodexReleaseTests/MarketTests/FinishTest.cs b/Tests/CodexReleaseTests/MarketTests/FinishTest.cs index 993fb526..0d10cc93 100644 --- a/Tests/CodexReleaseTests/MarketTests/FinishTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/FinishTest.cs @@ -28,8 +28,10 @@ namespace CodexReleaseTests.MarketTests protected override TimeSpan HostAvailabilityMaxDuration => Get8TimesConfiguredPeriodDuration() * 12; [Test] - [Repeat(16)] - public void Finish() + [Combinatorial] + public void Finish( + [Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])] int rerun + ) { var hosts = StartHosts(); var client = StartClients().Single(); diff --git a/Tests/CodexReleaseTests/MarketTests/RepairTest.cs b/Tests/CodexReleaseTests/MarketTests/RepairTest.cs index 2877108d..2d8fa054 100644 --- a/Tests/CodexReleaseTests/MarketTests/RepairTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/RepairTest.cs @@ -42,10 +42,12 @@ namespace CodexReleaseTests.MarketTests #endregion - [Ignore("Test is ready. Waiting for repair implementation.")] + [Ignore("Test is ready. Waiting for repair implementation. " + + "Slots are never freed because proofs are never marked as missing. Issue: https://github.com/codex-storage/nim-codex/issues/1153")] [Test] [Combinatorial] public void RollingRepairSingleFailure( + [Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])] int rerun, [Values(10)] int numFailures) { var hosts = StartHosts().ToList(); diff --git a/Tests/CodexReleaseTests/MarketTests/StartTest.cs b/Tests/CodexReleaseTests/MarketTests/StartTest.cs index 70d90552..2ba12d6a 100644 --- a/Tests/CodexReleaseTests/MarketTests/StartTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/StartTest.cs @@ -17,8 +17,10 @@ namespace CodexReleaseTests.MarketTests protected override TimeSpan HostAvailabilityMaxDuration => Get8TimesConfiguredPeriodDuration() * 12; [Test] - [Repeat(16)] - public void Start() + [Combinatorial] + public void Start( + [Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])] int rerun + ) { var hosts = StartHosts(); var client = StartClients().Single(); diff --git a/Tests/CodexReleaseTests/Utils/ChainMonitor.cs b/Tests/CodexReleaseTests/Utils/ChainMonitor.cs index d6a4a4d8..8b4bd816 100644 --- a/Tests/CodexReleaseTests/Utils/ChainMonitor.cs +++ b/Tests/CodexReleaseTests/Utils/ChainMonitor.cs @@ -44,6 +44,7 @@ namespace CodexReleaseTests.Utils var state = new ChainState(log, contracts, new DoNothingChainEventHandler(), startUtc, doProofPeriodMonitoring: true); Thread.Sleep(updateInterval); + log.Log("Chain monitoring started"); while (!cts.IsCancellationRequested) { try