Cleanup marketplace test

This commit is contained in:
benbierens 2024-02-28 10:06:11 +01:00
parent f0167a800f
commit 247e010fba
No known key found for this signature in database
GPG Key ID: 877D2C2E09A22F3A
1 changed files with 39 additions and 25 deletions

View File

@ -6,6 +6,7 @@ using MetricsPlugin;
using Nethereum.Hex.HexConvertors.Extensions; using Nethereum.Hex.HexConvertors.Extensions;
using NUnit.Framework; using NUnit.Framework;
using Utils; using Utils;
using Request = CodexContractsPlugin.Marketplace.Request;
namespace CodexTests.BasicTests namespace CodexTests.BasicTests
{ {
@ -92,27 +93,12 @@ namespace CodexTests.BasicTests
purchaseContract.WaitForStorageContractStarted(fileSize); purchaseContract.WaitForStorageContractStarted(fileSize);
var requests = contracts.GetStorageRequests(GetTestRunTimeRange());
Assert.That(requests.Length, Is.EqualTo(1));
var request = requests.Single();
Assert.That(contracts.GetRequestState(request), Is.EqualTo(RequestState.Started));
Assert.That(request.ClientAddress, Is.EqualTo(buyer.EthAddress));
Assert.That(request.Ask.Slots, Is.EqualTo(1));
AssertBalance(contracts, seller, Is.LessThan(sellerInitialBalance), "Collateral was not placed."); AssertBalance(contracts, seller, Is.LessThan(sellerInitialBalance), "Collateral was not placed.");
var requestFulfilledEvents = contracts.GetRequestFulfilledEvents(GetTestRunTimeRange()); var request = GetOnChainStorageRequest(contracts);
Assert.That(requestFulfilledEvents.Length, Is.EqualTo(1)); AssertStorageRequest(request, contracts, buyer);
CollectionAssert.AreEqual(request.RequestId, requestFulfilledEvents[0].RequestId); AssertSlotFilledEvents(contracts, request, seller);
var filledSlotEvents = contracts.GetSlotFilledEvents(GetTestRunTimeRange()); AssertContractSlot(contracts, request, 0, seller);
Assert.That(filledSlotEvents.Length, Is.EqualTo(1));
var filledSlotEvent = filledSlotEvents.Single();
Assert.That(filledSlotEvent.SlotIndex.IsZero);
Assert.That(filledSlotEvent.RequestId.ToHex(), Is.EqualTo(request.RequestId.ToHex()));
Assert.That(filledSlotEvent.Host, Is.EqualTo(seller.EthAddress));
var slotHost = contracts.GetSlotHost(request, 0);
Assert.That(slotHost, Is.EqualTo(seller.EthAddress));
purchaseContract.WaitForStorageContractFinished(); purchaseContract.WaitForStorageContractFinished();
@ -120,12 +106,7 @@ namespace CodexTests.BasicTests
AssertBalance(contracts, buyer, Is.LessThan(buyerInitialBalance), "Buyer was not charged for storage."); AssertBalance(contracts, buyer, Is.LessThan(buyerInitialBalance), "Buyer was not charged for storage.");
Assert.That(contracts.GetRequestState(request), Is.EqualTo(RequestState.Finished)); Assert.That(contracts.GetRequestState(request), Is.EqualTo(RequestState.Finished));
var log = Ci.DownloadLog(seller); // waiting for block retransmit fix: CheckLogForErrors(seller, buyer);
log.AssertLogContains("Received a request to store a slot!");
log.AssertLogContains("Received proof challenge");
log.AssertLogContains("Collecting input for proof");
//CheckLogForErrors(seller, buyer);
} }
[Test] [Test]
@ -144,5 +125,38 @@ namespace CodexTests.BasicTests
Assert.That(bootN, Is.EqualTo(followN)); Assert.That(bootN, Is.EqualTo(followN));
Assert.That(discN, Is.LessThan(bootN)); Assert.That(discN, Is.LessThan(bootN));
} }
private void AssertSlotFilledEvents(ICodexContracts contracts, Request request, ICodexNode seller)
{
var requestFulfilledEvents = contracts.GetRequestFulfilledEvents(GetTestRunTimeRange());
Assert.That(requestFulfilledEvents.Length, Is.EqualTo(1));
CollectionAssert.AreEqual(request.RequestId, requestFulfilledEvents[0].RequestId);
var filledSlotEvents = contracts.GetSlotFilledEvents(GetTestRunTimeRange());
Assert.That(filledSlotEvents.Length, Is.EqualTo(1));
var filledSlotEvent = filledSlotEvents.Single();
Assert.That(filledSlotEvent.SlotIndex.IsZero);
Assert.That(filledSlotEvent.RequestId.ToHex(), Is.EqualTo(request.RequestId.ToHex()));
Assert.That(filledSlotEvent.Host, Is.EqualTo(seller.EthAddress));
}
private void AssertStorageRequest(Request request, ICodexContracts contracts, ICodexNode buyer)
{
Assert.That(contracts.GetRequestState(request), Is.EqualTo(RequestState.Started));
Assert.That(request.ClientAddress, Is.EqualTo(buyer.EthAddress));
Assert.That(request.Ask.Slots, Is.EqualTo(1));
}
private Request GetOnChainStorageRequest(ICodexContracts contracts)
{
var requests = contracts.GetStorageRequests(GetTestRunTimeRange());
Assert.That(requests.Length, Is.EqualTo(1));
return requests.Single();
}
private void AssertContractSlot(ICodexContracts contracts, Request request, int contractSlotIndex, ICodexNode expectedSeller)
{
var slotHost = contracts.GetSlotHost(request, contractSlotIndex);
Assert.That(slotHost, Is.EqualTo(expectedSeller.EthAddress));
}
} }
} }