diff options
author | Mission Liao <mission.liao@dexon.org> | 2018-12-13 18:15:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-13 18:15:03 +0800 |
commit | 155e31175aeaa3685c57383e386c6e62c46318ef (patch) | |
tree | 58333399ca2e08bc856e3c23ecca7eefe3c5db5e /core/db/level-db_test.go | |
parent | 0ead4a7c012af9ddaa4a934729e216539d2caeb1 (diff) | |
download | dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar.gz dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar.bz2 dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar.lz dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar.xz dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.tar.zst dexon-consensus-155e31175aeaa3685c57383e386c6e62c46318ef.zip |
db: cache compaction chain tip in db (#369)
* Replace JSON with RLP in levelDB implementation.
* Make sure blocks to sync following compaction chain tip
Diffstat (limited to 'core/db/level-db_test.go')
-rw-r--r-- | core/db/level-db_test.go | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/core/db/level-db_test.go b/core/db/level-db_test.go index 1335d5d..69c8f07 100644 --- a/core/db/level-db_test.go +++ b/core/db/level-db_test.go @@ -37,12 +37,12 @@ type LevelDBTestSuite struct { func (s *LevelDBTestSuite) TestBasicUsage() { dbName := fmt.Sprintf("test-db-%v.db", time.Now().UTC()) dbInst, err := NewLevelDBBackedDB(dbName) - s.Require().Nil(err) + s.Require().NoError(err) defer func(dbName string) { err = dbInst.Close() - s.Nil(err) + s.NoError(err) err = os.RemoveAll(dbName) - s.Nil(err) + s.NoError(err) }(dbName) // Queried something from an empty database. @@ -64,11 +64,11 @@ func (s *LevelDBTestSuite) TestBasicUsage() { // Put to create a new record should just work fine. err = dbInst.PutBlock(block1) - s.Nil(err) + s.NoError(err) // Get it back should work fine. queried, err := dbInst.GetBlock(block1.Hash) - s.Nil(err) + s.NoError(err) s.Equal(queried.ProposerID, block1.ProposerID) // Test Update. @@ -76,24 +76,24 @@ func (s *LevelDBTestSuite) TestBasicUsage() { queried.Timestamp = now err = dbInst.UpdateBlock(queried) - s.Nil(err) + s.NoError(err) // Try to get it back via NodeID and height. queried, err = dbInst.GetBlock(block1.Hash) - s.Nil(err) + s.NoError(err) s.Equal(now, queried.Timestamp) } func (s *LevelDBTestSuite) TestSyncIndex() { dbName := fmt.Sprintf("test-db-%v-si.db", time.Now().UTC()) dbInst, err := NewLevelDBBackedDB(dbName) - s.Require().Nil(err) + s.Require().NoError(err) defer func(dbName string) { err = dbInst.Close() - s.Nil(err) + s.NoError(err) err = os.RemoveAll(dbName) - s.Nil(err) + s.NoError(err) }(dbName) // Create some blocks. @@ -112,21 +112,43 @@ func (s *LevelDBTestSuite) TestSyncIndex() { // Save blocks to db. err = dbInst.Close() - s.Nil(err) + s.NoError(err) // Load back blocks(syncIndex is called). dbInst, err = NewLevelDBBackedDB(dbName) - s.Require().Nil(err) + s.Require().NoError(err) // Verify result. for _, block := range blocks { queried, err := dbInst.GetBlock(block.Hash) - s.Nil(err) + s.NoError(err) s.Equal(block.ProposerID, queried.ProposerID) s.Equal(block.Position.Height, queried.Position.Height) } } +func (s *LevelDBTestSuite) TestCompactionChainTipInfo() { + dbName := fmt.Sprintf("test-db-%v-cc-tip.db", time.Now().UTC()) + dbInst, err := NewLevelDBBackedDB(dbName) + s.Require().NoError(err) + defer func(dbName string) { + err = dbInst.Close() + s.NoError(err) + err = os.RemoveAll(dbName) + s.NoError(err) + }(dbName) + // Save some tip info. + hash := common.NewRandomHash() + s.Require().NoError(dbInst.PutCompactionChainTipInfo(hash, 123)) + // Get it back to check. + hashBack, height := dbInst.GetCompactionChainTipInfo() + s.Require().Equal(hash, hashBack) + s.Require().Equal(height, uint64(123)) + // Unable to put compaction chain tip info with lower height. + err = dbInst.PutCompactionChainTipInfo(hash, 122) + s.Require().IsType(err, ErrInvalidCompactionChainTipHeight) +} + func TestLevelDB(t *testing.T) { suite.Run(t, new(LevelDBTestSuite)) } |