diff --git a/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainState.cs b/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainState.cs index 8e64302c..7c112f16 100644 --- a/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainState.cs +++ b/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainState.cs @@ -224,7 +224,7 @@ namespace CodexContractsPlugin.ChainMonitor } catch (Exception ex) { - var msg = "Failed to get request from chain: " + ex; + var msg = $"Failed to get request with id '{request.RequestId.ToHex()}' from chain: {ex}"; log.Error(msg); handler.OnError(msg); return null; diff --git a/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs b/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs index 638cb9a7..ff9c98df 100644 --- a/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs +++ b/ProjectPlugins/CodexContractsPlugin/Marketplace/Customizations.cs @@ -35,7 +35,7 @@ namespace CodexContractsPlugin.Marketplace { get { - return BitConverter.ToString(RequestId).Replace("-", "").ToLowerInvariant(); + return RequestId.ToHex(); } } } diff --git a/Tests/CodexReleaseTests/MarketTests/FailTest.cs b/Tests/CodexReleaseTests/MarketTests/FailTest.cs index dc278bcd..61694489 100644 --- a/Tests/CodexReleaseTests/MarketTests/FailTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/FailTest.cs @@ -35,6 +35,7 @@ namespace CodexReleaseTests.MarketTests request.WaitForStorageContractStarted(); AssertContractSlotsAreFilledByHosts(request, hosts); + AssertContractIsOnChain(request); hosts.Stop(waitTillStopped: true); @@ -42,6 +43,12 @@ namespace CodexReleaseTests.MarketTests var config = GetContracts().Deployment.Config; request.WaitForContractFailed(config); + + Thread.Sleep(GetPeriodDuration()); + AssertContractIsOnChain(request); + + Thread.Sleep(GetPeriodDuration()); + AssertContractIsOnChain(request); } private void WaitForSlotFreedEvents() diff --git a/Tests/CodexReleaseTests/MarketTests/FinishTest.cs b/Tests/CodexReleaseTests/MarketTests/FinishTest.cs index 6e591929..9d5fad08 100644 --- a/Tests/CodexReleaseTests/MarketTests/FinishTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/FinishTest.cs @@ -41,13 +41,21 @@ namespace CodexReleaseTests.MarketTests WaitForContractStarted(request); AssertContractSlotsAreFilledByHosts(request, hosts); + AssertContractIsOnChain(request); request.WaitForStorageContractFinished(); + AssertContractIsOnChain(request); AssertClientHasPaidForContract(pricePerBytePerSecond, client, request, hosts); AssertHostsWerePaidForContract(pricePerBytePerSecond, request, hosts); AssertHostsCollateralsAreUnchanged(hosts); AssertHostAvailabilitiesAreEmpty(hosts); + + Thread.Sleep(GetPeriodDuration()); + AssertContractIsOnChain(request); + + Thread.Sleep(GetPeriodDuration()); + AssertContractIsOnChain(request); } private IStoragePurchaseContract CreateStorageRequest(ICodexNode client) diff --git a/Tests/CodexReleaseTests/Utils/MarketplaceAutoBootstrapDistTest.cs b/Tests/CodexReleaseTests/Utils/MarketplaceAutoBootstrapDistTest.cs index 5c429fee..fabf4422 100644 --- a/Tests/CodexReleaseTests/Utils/MarketplaceAutoBootstrapDistTest.cs +++ b/Tests/CodexReleaseTests/Utils/MarketplaceAutoBootstrapDistTest.cs @@ -402,12 +402,21 @@ namespace CodexReleaseTests.Utils protected void AssertContractIsOnChain(IStoragePurchaseContract contract) { + // Check the creation event. AssertOnChainEvents(events => { var onChainRequests = events.GetStorageRequests(); if (onChainRequests.Any(r => r.Id == contract.PurchaseId)) return; throw new Exception($"OnChain request {contract.PurchaseId} not found..."); }, nameof(AssertContractIsOnChain)); + + // Check that the getRequest call returns it. + var rid = contract.PurchaseId.HexToByteArray(); + var r = GetContracts().GetRequest(rid); + if (r == null) throw new Exception($"Failed to get Request from {nameof(GetRequestFunction)}"); + Assert.That(r.Ask.Duration, Is.EqualTo(contract.Purchase.Duration.TotalSeconds)); + Assert.That(r.Ask.Slots, Is.EqualTo(contract.Purchase.MinRequiredNumberOfNodes)); + Assert.That(((int)r.Ask.ProofProbability), Is.EqualTo(contract.Purchase.ProofProbability)); } protected void AssertOnChainEvents(Action onEvents, string description)