aboutsummaryrefslogtreecommitdiffstats
path: root/core/db/level-db_test.go
diff options
context:
space:
mode:
authorMission Liao <mission.liao@dexon.org>2018-12-13 18:15:03 +0800
committerGitHub <noreply@github.com>2018-12-13 18:15:03 +0800
commit155e31175aeaa3685c57383e386c6e62c46318ef (patch)
tree58333399ca2e08bc856e3c23ecca7eefe3c5db5e /core/db/level-db_test.go
parent0ead4a7c012af9ddaa4a934729e216539d2caeb1 (diff)
downloaddexon-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.go48
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))
}