You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.3 KiB

lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
lint: Enable Golint (#4212) * Fix many golint errors * Fix golint errors in the 'lite' package * Don't export Pool.store * Fix typo * Revert unwanted changes * Fix errors in counter package * Fix linter errors in kvstore package * Fix linter error in example package * Fix error in tests package * Fix linter errors in v2 package * Fix linter errors in consensus package * Fix linter errors in evidence package * Fix linter error in fail package * Fix linter errors in query package * Fix linter errors in core package * Fix linter errors in node package * Fix linter errors in mempool package * Fix linter error in conn package * Fix linter errors in pex package * Rename PEXReactor export to Reactor * Fix linter errors in trust package * Fix linter errors in upnp package * Fix linter errors in p2p package * Fix linter errors in proxy package * Fix linter errors in mock_test package * Fix linter error in client_test package * Fix linter errors in coretypes package * Fix linter errors in coregrpc package * Fix linter errors in rpcserver package * Fix linter errors in rpctypes package * Fix linter errors in rpctest package * Fix linter error in json2wal script * Fix linter error in wal2json script * Fix linter errors in kv package * Fix linter error in state package * Fix linter error in grpc_client * Fix linter errors in types package * Fix linter error in version package * Fix remaining errors * Address review comments * Fix broken tests * Reconcile package coregrpc * Fix golangci bot error * Fix new golint errors * Fix broken reference * Enable golint linter * minor changes to bring golint into line * fix failing test * fix pex reactor naming * address PR comments
5 years ago
  1. package evidence
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/stretchr/testify/require"
  7. dbm "github.com/tendermint/tm-db"
  8. "github.com/tendermint/tendermint/types"
  9. )
  10. //-------------------------------------------
  11. func TestStoreAddDuplicate(t *testing.T) {
  12. db := dbm.NewMemDB()
  13. store := NewStore(db)
  14. priority := int64(10)
  15. ev := types.NewMockEvidence(2, time.Now().UTC(), []byte("val1"))
  16. added, err := store.AddNewEvidence(ev, priority)
  17. require.NoError(t, err)
  18. assert.True(t, added)
  19. // cant add twice
  20. added, err = store.AddNewEvidence(ev, priority)
  21. require.NoError(t, err)
  22. assert.False(t, added)
  23. }
  24. func TestStoreCommitDuplicate(t *testing.T) {
  25. db := dbm.NewMemDB()
  26. store := NewStore(db)
  27. priority := int64(10)
  28. ev := types.NewMockEvidence(2, time.Now().UTC(), []byte("val1"))
  29. store.MarkEvidenceAsCommitted(ev)
  30. added, err := store.AddNewEvidence(ev, priority)
  31. require.NoError(t, err)
  32. assert.False(t, added)
  33. }
  34. func TestStoreMark(t *testing.T) {
  35. db := dbm.NewMemDB()
  36. store := NewStore(db)
  37. // before we do anything, priority/pending are empty
  38. priorityEv := store.PriorityEvidence()
  39. pendingEv := store.PendingEvidence(-1)
  40. assert.Equal(t, 0, len(priorityEv))
  41. assert.Equal(t, 0, len(pendingEv))
  42. priority := int64(10)
  43. ev := types.NewMockEvidence(2, time.Now().UTC(), []byte("val1"))
  44. added, err := store.AddNewEvidence(ev, priority)
  45. require.NoError(t, err)
  46. assert.True(t, added)
  47. // get the evidence. verify. should be uncommitted
  48. ei := store.GetInfo(ev.Height(), ev.Hash())
  49. assert.Equal(t, ev, ei.Evidence)
  50. assert.Equal(t, priority, ei.Priority)
  51. assert.False(t, ei.Committed)
  52. // new evidence should be returns in priority/pending
  53. priorityEv = store.PriorityEvidence()
  54. pendingEv = store.PendingEvidence(-1)
  55. assert.Equal(t, 1, len(priorityEv))
  56. assert.Equal(t, 1, len(pendingEv))
  57. // priority is now empty
  58. store.MarkEvidenceAsBroadcasted(ev)
  59. priorityEv = store.PriorityEvidence()
  60. pendingEv = store.PendingEvidence(-1)
  61. assert.Equal(t, 0, len(priorityEv))
  62. assert.Equal(t, 1, len(pendingEv))
  63. // priority and pending are now empty
  64. store.MarkEvidenceAsCommitted(ev)
  65. priorityEv = store.PriorityEvidence()
  66. pendingEv = store.PendingEvidence(-1)
  67. assert.Equal(t, 0, len(priorityEv))
  68. assert.Equal(t, 0, len(pendingEv))
  69. // evidence should show committed
  70. newPriority := int64(0)
  71. ei = store.GetInfo(ev.Height(), ev.Hash())
  72. assert.Equal(t, ev, ei.Evidence)
  73. assert.Equal(t, newPriority, ei.Priority)
  74. assert.True(t, ei.Committed)
  75. }
  76. func TestStorePriority(t *testing.T) {
  77. db := dbm.NewMemDB()
  78. store := NewStore(db)
  79. // sorted by priority and then height
  80. cases := []struct {
  81. ev types.MockEvidence
  82. priority int64
  83. }{
  84. {types.NewMockEvidence(2, time.Now().UTC(), []byte("val1")), 17},
  85. {types.NewMockEvidence(5, time.Now().UTC(), []byte("val2")), 15},
  86. {types.NewMockEvidence(10, time.Now().UTC(), []byte("val2")), 13},
  87. {types.NewMockEvidence(100, time.Now().UTC(), []byte("val2")), 11},
  88. {types.NewMockEvidence(90, time.Now().UTC(), []byte("val2")), 11},
  89. {types.NewMockEvidence(80, time.Now().UTC(), []byte("val2")), 11},
  90. }
  91. for _, c := range cases {
  92. added, err := store.AddNewEvidence(c.ev, c.priority)
  93. require.NoError(t, err)
  94. assert.True(t, added)
  95. }
  96. evList := store.PriorityEvidence()
  97. for i, ev := range evList {
  98. assert.Equal(t, ev, cases[i].ev)
  99. }
  100. }