public async Task GetAsync_WithWrongBlockHeightReturnsNullAsync() { string folder = CreateTestDir(this); using (var engine = new DBreezeEngine(folder)) { DBreeze.Transactions.Transaction txn = engine.GetTransaction(); txn.Insert <byte[], ProvenBlockHeader>(ProvenBlockHeaderTable, 1.ToBytes(false), CreateNewProvenBlockHeaderMock()); txn.Insert <byte[], HashHeightPair>(BlockHashTable, new byte[0], new HashHeightPair(new uint256(), 1)); txn.Commit(); } using (ProvenBlockHeaderRepository repo = this.SetupRepository(this.Network, folder)) { // Select a different block height. ProvenBlockHeader outHeader = await repo.GetAsync(2).ConfigureAwait(false); outHeader.Should().BeNull(); // Select the original item inserted into the table outHeader = await repo.GetAsync(1).ConfigureAwait(false); outHeader.Should().NotBeNull(); } }
public async Task GetAsync_Reads_MultipleProvenBlockHeadersAsync() { string folder = CreateTestDir(this); PosBlock posBlock = CreatePosBlockMock(); ProvenBlockHeader header1 = CreateNewProvenBlockHeaderMock(posBlock); ProvenBlockHeader header2 = CreateNewProvenBlockHeaderMock(posBlock); using (var engine = new DBreezeEngine(folder)) { DBreeze.Transactions.Transaction txn = engine.GetTransaction(); txn.Insert <byte[], ProvenBlockHeader>(ProvenBlockHeaderTable, 1.ToBytes(false), header1); txn.Insert <byte[], ProvenBlockHeader>(ProvenBlockHeaderTable, 2.ToBytes(false), header2); txn.Commit(); } // Query the repository for the item that was inserted in the above code. using (ProvenBlockHeaderRepository repo = this.SetupRepository(this.Network, folder)) { List <ProvenBlockHeader> headersOut = await repo.GetAsync(1, 2).ConfigureAwait(false); headersOut.Count.Should().Be(2); headersOut.First().GetHash().Should().Be(header1.GetHash()); headersOut.Last().GetHash().Should().Be(header2.GetHash()); } }
public async Task GetAsync_WithWrongBlockHeightReturnsNullAsync() { string folder = CreateTestDir(this); using (var engine = new DB(new Options() { CreateIfMissing = true }, folder)) { engine.Put(ProvenBlockHeaderTable, BitConverter.GetBytes(1), this.dBreezeSerializer.Serialize(CreateNewProvenBlockHeaderMock())); engine.Put(BlockHashHeightTable, new byte[0], this.DBreezeSerializer.Serialize(new HashHeightPair(new uint256(), 1))); } using (ProvenBlockHeaderRepository repo = this.SetupRepository(this.Network, folder)) { // Select a different block height. ProvenBlockHeader outHeader = await repo.GetAsync(2).ConfigureAwait(false); outHeader.Should().BeNull(); // Select the original item inserted into the table outHeader = await repo.GetAsync(1).ConfigureAwait(false); outHeader.Should().NotBeNull(); } }
public async Task GetAsync_ReadsProvenBlockHeaderAsync() { string folder = CreateTestDir(this); ProvenBlockHeader headerIn = CreateNewProvenBlockHeaderMock(); int blockHeight = 1; using (var engine = new DB(new Options() { CreateIfMissing = true }, folder)) { engine.Put(ProvenBlockHeaderTable, BitConverter.GetBytes(blockHeight), this.dBreezeSerializer.Serialize(headerIn)); } // Query the repository for the item that was inserted in the above code. using (ProvenBlockHeaderRepository repo = this.SetupRepository(this.Network, folder)) { var headerOut = await repo.GetAsync(blockHeight).ConfigureAwait(false); headerOut.Should().NotBeNull(); uint256.Parse(headerOut.ToString()).Should().Be(headerOut.GetHash()); } }
private ProvenBlockHeaderRepository SetupRepository(Network network, string folder) { var repo = new ProvenBlockHeaderRepository(network, folder, this.LoggerFactory.Object); Task task = repo.InitializeAsync(); task.Wait(); return(repo); }
public async Task GetAsync_ReadsProvenBlockHeaderAsync() { string folder = CreateTestDir(this); ProvenBlockHeader headerIn = CreateNewProvenBlockHeaderMock(); int blockHeight = 1; using (var engine = new DBreezeEngine(folder)) { DBreeze.Transactions.Transaction txn = engine.GetTransaction(); txn.Insert <byte[], ProvenBlockHeader>(ProvenBlockHeaderTable, blockHeight.ToBytes(false), headerIn); txn.Commit(); } // Query the repository for the item that was inserted in the above code. using (ProvenBlockHeaderRepository repo = this.SetupRepository(this.Network, folder)) { var headerOut = await repo.GetAsync(blockHeight).ConfigureAwait(false); headerOut.Should().NotBeNull(); uint256.Parse(headerOut.ToString()).Should().Be(headerOut.GetHash()); } }