Skip to content

Commit 95c2d82

Browse files
Merge branch 'refactor/peerstore-provider' into refactor/cli
* refactor/peerstore-provider: chore: update changelogs fix: p2p test chore: fix consensus test chore: persistence peerstore provider includes all staked actors refactor: rename `NewPersistencePeerstoreProvider()` to `Create()` chore: combine `NewRPCPeerstoreProvider()` & `Create()` chore: add TECHDEBT comments
2 parents 0b22fbd + 22ff0fd commit 95c2d82

File tree

11 files changed

+64
-21
lines changed

11 files changed

+64
-21
lines changed

app/client/doc/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
## [0.0.0.33] - 2023-06-09
10+
## [0.0.0.34] - 2023-06-12
1111

1212
- Exported `rootCmd` to support cross-package usage (i.e. subcommands w/ own pkgs)
1313
- Refactored common CLI code
@@ -22,6 +22,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
- Added support for overriding of `remote-cli-url` flag with env var
2323
- Improve error handling in client CLI
2424

25+
## [0.0.0.33] - 2023-06-12
26+
27+
- Renamed `NewRPCPeerstoreProvider()` and `NewPersistencePeerstoreProvider()` to `Create()` (per package)
28+
2529
## [0.0.0.32] - 2023-05-25
2630

2731
- Add the `nonInteractive` flag in a couple spots where it was missing

consensus/doc/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.0.0.54] - 2023-06-12
11+
12+
- Fix tests
13+
1014
## [0.0.0.53] - 2023-06-08
1115

1216
- Add consensus README

consensus/e2e_tests/utils_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ import (
1111

1212
"github.com/benbjohnson/clock"
1313
"github.com/golang/mock/gomock"
14+
1415
"github.com/pokt-network/pocket/consensus"
1516
typesCons "github.com/pokt-network/pocket/consensus/types"
17+
"github.com/pokt-network/pocket/internal/testutil"
1618
persistenceMocks "github.com/pokt-network/pocket/persistence/types/mocks"
1719
"github.com/pokt-network/pocket/runtime"
1820
"github.com/pokt-network/pocket/runtime/configs"
@@ -432,6 +434,20 @@ func basePersistenceMock(t *testing.T, _ modules.EventsChannel, bus modules.Bus)
432434
Return(bus.GetRuntimeMgr().GetGenesis().Validators, nil).
433435
AnyTimes()
434436

437+
persistenceReadContextMock.
438+
EXPECT().
439+
GetAllStakedActors(gomock.Any()).
440+
DoAndReturn(func(height int64) ([]*coreTypes.Actor, error) {
441+
genesisState := bus.GetRuntimeMgr().GetGenesis()
442+
return testutil.Concatenate[*coreTypes.Actor](
443+
genesisState.Validators,
444+
genesisState.Servicers,
445+
genesisState.Fishermen,
446+
genesisState.Applications,
447+
), nil
448+
}).
449+
AnyTimes()
450+
435451
persistenceReadContextMock.
436452
EXPECT().
437453
GetBlockHash(gomock.Any()).

internal/testutil/slice.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package testutil
2+
3+
// Concatenate appends the contents of multiple slices of any type (T) into a
4+
// single slice of type T.
5+
func Concatenate[T any](tt ...[]T) []T {
6+
var result []T
7+
for _, t := range tt {
8+
result = append(result, t...)
9+
}
10+
11+
return result
12+
}

p2p/CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
## [0.0.0.55] - 2023-06-09
10+
## [0.0.0.55] - 2023-06-12
1111

1212
- Replaced `RPC_HOST` with `POCKET_REMOTE_CLI_URL` or `--pocket-remote-cli-url` where appropriate
1313

14-
## [0.0.0.54] - 2023-06-08
14+
## [0.0.0.54] - 2023-06-12
1515

1616
- Replaced embedded `modules.Module` with simpler `modules.IntegratableModule` in `PeerstoreProvider` interface
1717
- Removed unused `PeerstoreProvider#GetP2PConfig()` method
1818
- Added `PeerstoreProvider#GetUnstakedPeerstore()` method
1919
- Added temporary `unstakedPeerstoreProvider` interface
20+
- Renamed `NewRPCPeerstoreProvider()` and `NewPersistencePeerstoreProvider()` to `Create()` (per package)
21+
- Updated `persistencePeerstoreProvider` to retrieve all staked actors (not just validators)
2022

2123
## [0.0.0.53] - 2023-06-01
2224

p2p/bootstrap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (m *p2pModule) bootstrap() error {
5858
continue
5959
}
6060

61-
pstoreProvider := rpcABP.NewRPCPeerstoreProvider(
61+
pstoreProvider := rpcABP.Create(
6262
rpcABP.WithP2PConfig(
6363
m.GetBus().GetRuntimeMgr().GetConfig().P2P,
6464
),

p2p/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ func (m *p2pModule) setupPeerstoreProvider() error {
238238
pstoreProviderModule, err := m.GetBus().GetModulesRegistry().GetModule(peerstore_provider.ModuleName)
239239
if err != nil {
240240
m.logger.Debug().Msg("creating new persistence peerstore...")
241-
pstoreProvider, err := persPSP.NewPersistencePeerstoreProvider(m.GetBus())
241+
pstoreProvider, err := persPSP.Create(m.GetBus())
242242
if err != nil {
243243
return err
244244
}

p2p/providers/peerstore_provider/persistence/provider.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ var (
1414

1515
type persistencePStoreProviderOption func(*persistencePeerstoreProvider)
1616
type persistencePStoreProviderFactory = modules.FactoryWithOptions[peerstore_provider.PeerstoreProvider, persistencePStoreProviderOption]
17+
18+
// TECHDEBT(#810): refactor to implement `Submodule` interface.
1719
type persistencePeerstoreProvider struct {
1820
base_modules.IntegratableModule
1921
}
2022

21-
func NewPersistencePeerstoreProvider(bus modules.Bus, options ...persistencePStoreProviderOption) (peerstore_provider.PeerstoreProvider, error) {
23+
func Create(bus modules.Bus, options ...persistencePStoreProviderOption) (peerstore_provider.PeerstoreProvider, error) {
2224
return new(persistencePeerstoreProvider).Create(bus, options...)
2325
}
2426

@@ -46,11 +48,11 @@ func (persistencePSP *persistencePeerstoreProvider) GetStakedPeerstoreAtHeight(h
4648
}
4749
defer readCtx.Release()
4850

49-
validators, err := readCtx.GetAllValidators(int64(height))
51+
stakedActors, err := readCtx.GetAllStakedActors(int64(height))
5052
if err != nil {
5153
return nil, err
5254
}
53-
return peerstore_provider.ActorsToPeerstore(persistencePSP, validators)
55+
return peerstore_provider.ActorsToPeerstore(persistencePSP, stakedActors)
5456
}
5557

5658
// GetStakedPeerstoreAtHeight implements the respective `PeerstoreProvider` interface method.

p2p/providers/peerstore_provider/rpc/provider.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
var _ peerstore_provider.PeerstoreProvider = &rpcPeerstoreProvider{}
2121

22+
// TECHDEBT(#810): refactor to implement `Submodule` interface.
2223
type rpcPeerstoreProvider struct {
2324
// TECHDEBT(#810): simplify once submodules are more convenient to retrieve.
2425
base_modules.IntegratableModule
@@ -29,9 +30,7 @@ type rpcPeerstoreProvider struct {
2930
rpcClient *rpc.ClientWithResponses
3031
}
3132

32-
// TECHDEBT(#810): refactor to be consistent with `persistencePeerstoreProvider`
33-
// (i.e. `NewRPCPeerstoreProvider` calls `rpcPeerstoreProvider#Create()`.
34-
func NewRPCPeerstoreProvider(options ...modules.ModuleOption) *rpcPeerstoreProvider {
33+
func Create(options ...modules.ModuleOption) *rpcPeerstoreProvider {
3534
rabp := &rpcPeerstoreProvider{
3635
rpcURL: flags.RemoteCLIURL,
3736
}
@@ -45,15 +44,9 @@ func NewRPCPeerstoreProvider(options ...modules.ModuleOption) *rpcPeerstoreProvi
4544
return rabp
4645
}
4746

48-
// TECHDEBT(#810): remove as it should no longer be needed.
49-
func Create(bus modules.Bus, options ...modules.ModuleOption) (modules.Module, error) {
50-
return new(rpcPeerstoreProvider).Create(bus, options...)
51-
}
52-
53-
// TECHDEBT(#810): refactor to be consistent with `persistencePeerstoreProvider`
54-
// (i.e. `NewRPCPeerstoreProvider` calls `rpcPeerstoreProvider#Create()`.
47+
// TECHDEBT(#810): refactor to implement `Submodule` interface.
5548
func (*rpcPeerstoreProvider) Create(bus modules.Bus, options ...modules.ModuleOption) (modules.Module, error) {
56-
return NewRPCPeerstoreProvider(options...), nil
49+
return Create(options...), nil
5750
}
5851

5952
func (*rpcPeerstoreProvider) GetModuleName() string {

p2p/utils_test.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import (
1414
libp2pCrypto "github.com/libp2p/go-libp2p/core/crypto"
1515
libp2pPeer "github.com/libp2p/go-libp2p/core/peer"
1616
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
17+
"github.com/stretchr/testify/require"
18+
19+
"github.com/pokt-network/pocket/internal/testutil"
1720
"github.com/pokt-network/pocket/p2p/providers/current_height_provider"
1821
"github.com/pokt-network/pocket/p2p/providers/peerstore_provider"
1922
typesP2P "github.com/pokt-network/pocket/p2p/types"
@@ -29,7 +32,6 @@ import (
2932
"github.com/pokt-network/pocket/shared/modules"
3033
mockModules "github.com/pokt-network/pocket/shared/modules/mocks"
3134
"github.com/pokt-network/pocket/telemetry"
32-
"github.com/stretchr/testify/require"
3335
)
3436

3537
// ~~~~~~ RainTree Unit Test Configurations ~~~~~~
@@ -257,6 +259,14 @@ func preparePersistenceMock(t *testing.T, busMock *mockModules.MockBus, genesisS
257259
readCtxMock := mockModules.NewMockPersistenceReadContext(ctrl)
258260

259261
readCtxMock.EXPECT().GetAllValidators(gomock.Any()).Return(genesisState.GetValidators(), nil).AnyTimes()
262+
readCtxMock.EXPECT().GetAllStakedActors(gomock.Any()).DoAndReturn(func(height int64) ([]*coreTypes.Actor, error) {
263+
return testutil.Concatenate[*coreTypes.Actor](
264+
genesisState.GetValidators(),
265+
genesisState.GetServicers(),
266+
genesisState.GetFishermen(),
267+
genesisState.GetApplications(),
268+
), nil
269+
}).AnyTimes()
260270
persistenceModuleMock.EXPECT().NewReadContext(gomock.Any()).Return(readCtxMock, nil).AnyTimes()
261271
readCtxMock.EXPECT().Release().AnyTimes()
262272

shared/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
## [0.0.0.60] - 2023-06-08
10+
## [0.0.0.60] - 2023-06-12
1111

1212
- Added `Factory` generic type
1313
- Improved godoc comments

0 commit comments

Comments
 (0)