public void GetChainReturnsConcurrentChainFromDisk() { string dir = AssureEmptyDir("TestData/ChainRepository/GetChainReturnsConcurrentChainFromDisk"); var chain = new ConcurrentChain(Network.RegTest); var tip = AppendBlock(chain); using (var session = new DBreezeSingleThreadSession("session", dir)) { session.Do(() => { var toSave = tip; List <ChainedBlock> blocks = new List <ChainedBlock>(); while (toSave != null) { blocks.Insert(0, toSave); toSave = toSave.Previous; } foreach (var block in blocks) { session.Transaction.Insert <int, BlockHeader>("Chain", block.Height, block.Header); } session.Transaction.Commit(); }).Wait(); } using (var repo = new ChainRepository(dir)) { var testChain = new ConcurrentChain(Network.RegTest); repo.Load(testChain).GetAwaiter().GetResult(); Assert.Equal(tip, testChain.Tip); } }
public void DoStartsTransaction() { using (var session = new DBreezeSingleThreadSession("TestThread", AssureEmptyDir("TestData/DBreezeSingleThreadSession/DoStartsTransaction"))) { session.Do(() => { Assert.NotNull(session.Transaction); }); } }
public void DoRunsSameThreadAsSessionCreated() { using (var session = new DBreezeSingleThreadSession("TestThread", AssureEmptyDir("TestData/DBreezeSingleThreadSession/DoRunsSameThreadAsSessionCreated"))) { session.Do(() => { Assert.Equal("TestThread", Thread.CurrentThread.Name); }); } }
public Task Initialize(Block genesis) { var sync = _Session.Do(() => { _Session.Transaction.SynchronizeTables("Coins", "BlockHash", "Rewind"); _Session.Transaction.ValuesLazyLoadingIsOn = false; }); var hash = _Session.Do(() => { if (GetCurrentHash() == null) { SetBlockHash(genesis.GetHash()); //Genesis coin is unspendable so do not add the coins _Session.Transaction.Commit(); } }); return(Task.WhenAll(new[] { sync, hash })); }
public void DoWithTypePerformsTask() { using (var session = new DBreezeSingleThreadSession("TestThread", AssureEmptyDir("TestData/DBreezeSingleThreadSession/DoWithTypePerformsTask"))) { var task = session.Do <string>(() => { return("TaskResult"); }); task.Wait(); Assert.Equal("TaskResult", task.Result); } }
public void DoWithTypeRunsSameThreadAsSessionCreated() { using (var session = new DBreezeSingleThreadSession("TestThread", AssureEmptyDir("TestData/DBreezeSingleThreadSession/DoWithTypeRunsSameThreadAsSessionCreated"))) { var thread = session.Do <string>(() => { return(Thread.CurrentThread.Name); }); thread.Wait(); Assert.Equal("TestThread", thread.Result); } }
public void DoAbleToAccessExistingTransactionData() { var dir = AssureEmptyDir("TestData/DBreezeSingleThreadSession/DoAbleToAccessExistingTransactionData"); uint256[] data = SetupTransactionData(dir); using (var session = new DBreezeSingleThreadSession("TestThread", dir)) { session.Do(() => { var data2 = new uint256[data.Length]; var transaction = session.Transaction; int i = 0; foreach (var row in transaction.SelectForward <byte[], byte[]>("Table")) { data2[i++] = new uint256(row.Key, false); } Assert.True(data.SequenceEqual(data2)); }); } }