mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-01-02 13:33:07 +00:00
97 lines
3.5 KiB
C#
97 lines
3.5 KiB
C#
using System.Security.Cryptography;
|
|
using CodexReleaseTests.Utils;
|
|
using Nethereum.JsonRpc.Client;
|
|
using NUnit.Framework;
|
|
using Utils;
|
|
|
|
namespace CodexReleaseTests.DataTests
|
|
{
|
|
public class DecodeTest : MarketplaceAutoBootstrapDistTest
|
|
{
|
|
protected override int NumberOfHosts => 0;
|
|
protected override int NumberOfClients => 2;
|
|
protected override ByteSize HostAvailabilitySize => 0.Bytes();
|
|
protected override TimeSpan HostAvailabilityMaxDuration => TimeSpan.FromSeconds(0.0);
|
|
|
|
[Test]
|
|
public void DecodeDataset()
|
|
{
|
|
var clients = StartClients();
|
|
|
|
var file = GenerateTestFile(10.MB());
|
|
var bCid = clients[0].UploadFile(file);
|
|
var request = clients[0].Marketplace.RequestStorage(new CodexClient.StoragePurchaseRequest(bCid)
|
|
{
|
|
Expiry = TimeSpan.FromMinutes(5.0),
|
|
Duration = TimeSpan.FromMinutes(100.0),
|
|
CollateralPerByte = 100.Tst(),
|
|
MinRequiredNumberOfNodes = 6,
|
|
NodeFailureTolerance = 3,
|
|
PricePerBytePerSecond = 100.Tst(),
|
|
ProofProbability = 20
|
|
});
|
|
var eCid = request.ContentId;
|
|
|
|
Assert.That(bCid.Id, Is.Not.EqualTo(eCid.Id));
|
|
|
|
var basic = clients[0].DownloadManifestOnly(bCid);
|
|
var encoded = clients[0].DownloadManifestOnly(eCid);
|
|
Assert.That(basic.Manifest.Protected, Is.False);
|
|
Assert.That(encoded.Manifest.Protected, Is.True);
|
|
|
|
var decoded = clients[1].DownloadContent(eCid);
|
|
|
|
file.AssertIsEqual(decoded);
|
|
}
|
|
|
|
[Test]
|
|
[Ignore("Crashes node attempting encoding. Issue: https://github.com/codex-storage/nim-codex/issues/1185")]
|
|
public void PartiallyDeletedDatasets()
|
|
{
|
|
var clients = StartClients(s => s
|
|
.WithBlockMaintenanceNumber(1)
|
|
.WithBlockMaintenanceInterval(TimeSpan.FromSeconds(10.0))
|
|
.WithBlockTTL(TimeSpan.FromSeconds(30.0)));
|
|
|
|
|
|
var file = GenerateTestFile(2.MB());
|
|
var bCid = clients[0].UploadFile(file);
|
|
|
|
var space = clients[0].Space();
|
|
var update = space;
|
|
while (space.QuotaUsedBytes == update.QuotaUsedBytes)
|
|
{
|
|
Thread.Sleep(TimeSpan.FromSeconds(3.0));
|
|
update = clients[0].Space();
|
|
}
|
|
|
|
Assert.That(update.QuotaUsedBytes, Is.LessThan(space.QuotaUsedBytes));
|
|
// The dataset is partially deleted.
|
|
|
|
// What happens when we request storage for it?
|
|
var request = clients[0].Marketplace.RequestStorage(new CodexClient.StoragePurchaseRequest(bCid)
|
|
{
|
|
Expiry = TimeSpan.FromMinutes(5.0),
|
|
Duration = TimeSpan.FromMinutes(100.0),
|
|
CollateralPerByte = 100.Tst(),
|
|
MinRequiredNumberOfNodes = 6,
|
|
NodeFailureTolerance = 3,
|
|
PricePerBytePerSecond = 100.Tst(),
|
|
ProofProbability = 20
|
|
});
|
|
var eCid = request.ContentId;
|
|
|
|
Assert.That(bCid.Id, Is.Not.EqualTo(eCid.Id));
|
|
|
|
var basic = clients[0].DownloadManifestOnly(bCid);
|
|
var encoded = clients[0].DownloadManifestOnly(eCid);
|
|
Assert.That(basic.Manifest.Protected, Is.False);
|
|
Assert.That(encoded.Manifest.Protected, Is.True);
|
|
|
|
var decoded = clients[1].DownloadContent(eCid);
|
|
|
|
file.AssertIsEqual(decoded);
|
|
}
|
|
}
|
|
}
|