Skip to content

Commit

Permalink
Merge branch 'am-8109-fix-ledger' of ssh://github.com/cosmos/cosmos-s…
Browse files Browse the repository at this point in the history
…dk into am-8109-fix-ledger
  • Loading branch information
amaury1093 committed Dec 10, 2020
2 parents 7373d92 + 28b32b3 commit cec1329
Show file tree
Hide file tree
Showing 10 changed files with 56 additions and 115 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ require (
github.com/golang/mock v1.4.4
github.com/golang/protobuf v1.4.3
github.com/golang/snappy v0.0.2 // indirect
github.com/google/go-cmp v0.5.0
github.com/gorilla/handlers v1.5.1
github.com/gorilla/mux v1.8.0
github.com/grpc-ecosystem/go-grpc-middleware v1.2.2
Expand Down
8 changes: 7 additions & 1 deletion server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,13 @@ which accepts a path for the resulting pprof file.

// amino is needed here for backwards compatibility of REST routes
err := startInProcess(serverCtx, clientCtx, appCreator)
return err
errCode, ok := err.(ErrorCode)
if !ok {
return err
}

serverCtx.Logger.Debug(fmt.Sprintf("received quit signal: %d", errCode.Code))
return nil
},
}

Expand Down
13 changes: 4 additions & 9 deletions snapshots/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"errors"
"io"
"io/ioutil"
"os"
"testing"
"time"

Expand Down Expand Up @@ -102,9 +101,8 @@ func (m *mockSnapshotter) Snapshot(height uint64, format uint32) (<-chan io.Read

// setupBusyManager creates a manager with an empty store that is busy creating a snapshot at height 1.
// The snapshot will complete when the returned closer is called.
func setupBusyManager(t *testing.T) (*snapshots.Manager, func()) {
tempdir, err := ioutil.TempDir("", "")
require.NoError(t, err)
func setupBusyManager(t *testing.T) *snapshots.Manager {
tempdir := t.TempDir()
store, err := snapshots.NewStore(db.NewMemDB(), tempdir)
require.NoError(t, err)
hung := newHungSnapshotter()
Expand All @@ -115,12 +113,9 @@ func setupBusyManager(t *testing.T) (*snapshots.Manager, func()) {
require.NoError(t, err)
}()
time.Sleep(10 * time.Millisecond)
t.Cleanup(hung.Close)

closer := func() {
hung.Close()
os.RemoveAll(tempdir)
}
return mgr, closer
return mgr
}

// hungSnapshotter can be used to test operations in progress. Call close to end the snapshot.
Expand Down
27 changes: 9 additions & 18 deletions snapshots/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import (
)

func TestManager_List(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)
manager := snapshots.NewManager(store, nil)

mgrList, err := manager.List()
Expand All @@ -25,16 +24,14 @@ func TestManager_List(t *testing.T) {
assert.Equal(t, storeList, mgrList)

// list should not block or error on busy managers
manager, teardown = setupBusyManager(t)
defer teardown()
manager = setupBusyManager(t)
list, err := manager.List()
require.NoError(t, err)
assert.Equal(t, []*types.Snapshot{}, list)
}

func TestManager_LoadChunk(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)
manager := snapshots.NewManager(store, nil)

// Existing chunk should return body
Expand All @@ -48,16 +45,14 @@ func TestManager_LoadChunk(t *testing.T) {
assert.Nil(t, chunk)

// LoadChunk should not block or error on busy managers
manager, teardown = setupBusyManager(t)
defer teardown()
manager = setupBusyManager(t)
chunk, err = manager.LoadChunk(2, 1, 0)
require.NoError(t, err)
assert.Nil(t, chunk)
}

func TestManager_Take(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)
snapshotter := &mockSnapshotter{
chunks: [][]byte{
{1, 2, 3},
Expand Down Expand Up @@ -98,15 +93,13 @@ func TestManager_Take(t *testing.T) {
assert.Equal(t, [][]byte{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, readChunks(chunks))

// creating a snapshot while a different snapshot is being created should error
manager, teardown = setupBusyManager(t)
defer teardown()
manager = setupBusyManager(t)
_, err = manager.Create(9)
require.Error(t, err)
}

func TestManager_Prune(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)
manager := snapshots.NewManager(store, nil)

pruned, err := manager.Prune(2)
Expand All @@ -118,15 +111,13 @@ func TestManager_Prune(t *testing.T) {
assert.Len(t, list, 3)

// Prune should error while a snapshot is being taken
manager, teardown = setupBusyManager(t)
defer teardown()
manager = setupBusyManager(t)
_, err = manager.Prune(2)
require.Error(t, err)
}

func TestManager_Restore(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)
target := &mockSnapshotter{}
manager := snapshots.NewManager(store, target)

Expand Down
63 changes: 16 additions & 47 deletions snapshots/store_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"errors"
"io"
"io/ioutil"
"os"
"path/filepath"
"testing"
"time"
Expand All @@ -16,12 +15,11 @@ import (

"github.com/cosmos/cosmos-sdk/snapshots"
"github.com/cosmos/cosmos-sdk/snapshots/types"
"github.com/cosmos/cosmos-sdk/testutil"
)

func setupStore(t *testing.T) (*snapshots.Store, func()) {
tempdir, err := ioutil.TempDir("", "snapshots")
require.NoError(t, err)

func setupStore(t *testing.T) *snapshots.Store {
tempdir := t.TempDir()
store, err := snapshots.NewStore(db.NewMemDB(), tempdir)
require.NoError(t, err)

Expand All @@ -42,21 +40,13 @@ func setupStore(t *testing.T) (*snapshots.Store, func()) {
}))
require.NoError(t, err)

teardown := func() {
err := os.RemoveAll(tempdir)
if err != nil {
t.Logf("Failed to remove tempdir %q: %v", tempdir, err)
}
}
return store, teardown
return store
}

func TestNewStore(t *testing.T) {
tempdir, err := ioutil.TempDir("", "snapshots")
require.NoError(t, err)
defer os.RemoveAll(tempdir)
tempdir := t.TempDir()
_, err := snapshots.NewStore(db.NewMemDB(), tempdir)

_, err = snapshots.NewStore(db.NewMemDB(), tempdir)
require.NoError(t, err)
}

Expand All @@ -66,22 +56,14 @@ func TestNewStore_ErrNoDir(t *testing.T) {
}

func TestNewStore_ErrDirFailure(t *testing.T) {
tempfile, err := ioutil.TempFile("", "snapshots")
require.NoError(t, err)
defer func() {
os.RemoveAll(tempfile.Name())
tempfile.Close()
}()
tempdir := filepath.Join(tempfile.Name(), "subdir")
notADir := filepath.Join(testutil.TempFile(t).Name(), "subdir")

_, err = snapshots.NewStore(db.NewMemDB(), tempdir)
_, err := snapshots.NewStore(db.NewMemDB(), notADir)
require.Error(t, err)
}

func TestStore_Delete(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Deleting a snapshot should remove it
err := store.Delete(2, 2)
require.NoError(t, err)
Expand Down Expand Up @@ -114,8 +96,7 @@ func TestStore_Delete(t *testing.T) {
}

func TestStore_Get(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()
store := setupStore(t)

// Loading a missing snapshot should return nil
snapshot, err := store.Get(9, 9)
Expand All @@ -140,9 +121,7 @@ func TestStore_Get(t *testing.T) {
}

func TestStore_GetLatest(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Loading a missing snapshot should return nil
snapshot, err := store.GetLatest()
require.NoError(t, err)
Expand All @@ -166,9 +145,7 @@ func TestStore_GetLatest(t *testing.T) {
}

func TestStore_List(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
snapshots, err := store.List()
require.NoError(t, err)

Expand All @@ -189,9 +166,7 @@ func TestStore_List(t *testing.T) {
}

func TestStore_Load(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Loading a missing snapshot should return nil
snapshot, chunks, err := store.Load(9, 9)
require.NoError(t, err)
Expand Down Expand Up @@ -227,9 +202,7 @@ func TestStore_Load(t *testing.T) {
}

func TestStore_LoadChunk(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Loading a missing snapshot should return nil
chunk, err := store.LoadChunk(9, 9, 0)
require.NoError(t, err)
Expand All @@ -252,9 +225,7 @@ func TestStore_LoadChunk(t *testing.T) {
}

func TestStore_Prune(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Pruning too many snapshots should be fine
pruned, err := store.Prune(4)
require.NoError(t, err)
Expand Down Expand Up @@ -294,9 +265,7 @@ func TestStore_Prune(t *testing.T) {
}

func TestStore_Save(t *testing.T) {
store, teardown := setupStore(t)
defer teardown()

store := setupStore(t)
// Saving a snapshot should work
snapshot, err := store.Save(4, 1, makeChunks([][]byte{{1}, {2}}))
require.NoError(t, err)
Expand Down
12 changes: 7 additions & 5 deletions testutil/ioutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,20 @@ func ApplyMockIODiscardOutErr(c *cobra.Command) BufferReader {
func WriteToNewTempFile(t testing.TB, s string) *os.File {
t.Helper()

fp, err := TempFile(t)
require.Nil(t, err)
fp := TempFile(t)
_, err := fp.WriteString(s)

_, err = fp.WriteString(s)
require.Nil(t, err)

return fp
}

// TempFile returns a writable temporary file for the test to use.
func TempFile(t testing.TB) (*os.File, error) {
func TempFile(t testing.TB) *os.File {
t.Helper()

return ioutil.TempFile(t.TempDir(), "")
fp, err := ioutil.TempFile(t.TempDir(), "")
require.NoError(t, err)

return fp
}
19 changes: 3 additions & 16 deletions x/distribution/client/cli/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ package cli_test
import (
"context"
"fmt"
"io/ioutil"
"strings"
"testing"
"time"
Expand All @@ -16,6 +15,7 @@ import (

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/testutil"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
testnet "github.com/cosmos/cosmos-sdk/testutil/network"
sdk "github.com/cosmos/cosmos-sdk/types"
Expand Down Expand Up @@ -685,35 +685,22 @@ func (s *IntegrationTestSuite) TestNewFundCommunityPoolCmd() {

func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() {
val := s.network.Validators[0]

invalidPropFile, err := ioutil.TempFile(s.T().TempDir(), "invalid_community_spend_proposal.*.json")
s.Require().NoError(err)

invalidProp := `{
"title": "",
"description": "Pay me some Atoms!",
"recipient": "foo",
"amount": "-343foocoin",
"deposit": -324foocoin
}`

_, err = invalidPropFile.WriteString(invalidProp)
s.Require().NoError(err)

validPropFile, err := ioutil.TempFile(s.T().TempDir(), "valid_community_spend_proposal.*.json")
s.Require().NoError(err)

invalidPropFile := testutil.WriteToNewTempFile(s.T(), invalidProp)
validProp := fmt.Sprintf(`{
"title": "Community Pool Spend",
"description": "Pay me some Atoms!",
"recipient": "%s",
"amount": "%s",
"deposit": "%s"
}`, val.Address.String(), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)))

_, err = validPropFile.WriteString(validProp)
s.Require().NoError(err)

validPropFile := testutil.WriteToNewTempFile(s.T(), validProp)
testCases := []struct {
name string
args []string
Expand Down
Loading

0 comments on commit cec1329

Please sign in to comment.