Skip to content

Commit 9335cc3

Browse files
authored
Merge pull request #57 from regen-network/15-test_upgrade_module_on_testnet
#15 test upgrade module on testnet
2 parents af03558 + c7eac3d commit 9335cc3

30 files changed

+616
-1663
lines changed

CHANGELOG.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased]
88

99
### Changed
10+
- [\#166185199](https://www.pivotaltracker.com/story/show/166185199) Temporarily disable all custom modules beside `geo` because they need to be integrated with the new app module setup and this can be a good test case for a coordinated tesnet upgrade
1011
- [\#163156528](https://www.pivotaltracker.com/story/show/163156528) Use stored geo shape for ESP results
1112
- [\#164056249](https://www.pivotaltracker.com/story/show/164056249) Rename `agent` -> `group` module, align structure of groups with specification document
1213
- [\#16](https://github.com/regen-network/regen-ledger/issues/16) The on-chain store data command now only works with graphs defined by the graph package
13-
- [\#166185199](https://www.pivotaltracker.com/story/show/166185199) Integrate Cosmos staking modules, temporarily disable all custom modules beside `geo` because they need to be integrated with the new app module setup and this can be a good test case for a coordinated tesnet upgrade
14+
- [\#15](https://github.com/regen-network/regen-ledger/issues/15) Test and debug upgrade module in Cosmos PR [\#4233](https://github.com/cosmos/cosmos-sdk/pull/4233) against an
15+
internal testnet
1416

1517
### Added
1618

@@ -33,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3335
- [\#17](https://github.com/regen-network/regen-ledger/issues/17) Add define property schema support
3436
- [\#18](https://github.com/regen-network/regen-ledger/issues/18) Graph package and binary serialization format
3537
- [\#27](https://github.com/regen-network/regen-ledger/issues/27) Create claim module
38+
- [\#166185199](https://www.pivotaltracker.com/story/show/166185199) Integrate Cosmos staking modules
3639

3740
## [0.3.0] - 2018-01-09
3841

Makefile

+163-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,170 @@
1-
export GO111MODULE=on
1+
PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation')
2+
VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//')
3+
COMMIT := $(shell git log -1 --format='%H')
4+
LEDGER_ENABLED ?= true
25

3-
install:
4-
go install ./cmd/xrnd
5-
go install ./cmd/xrncli
6+
export GO111MODULE = on
7+
8+
# process build tags
9+
10+
build_tags = netgo
11+
ifeq ($(LEDGER_ENABLED),true)
12+
ifeq ($(OS),Windows_NT)
13+
GCCEXE = $(shell where gcc.exe 2> NUL)
14+
ifeq ($(GCCEXE),)
15+
$(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false)
16+
else
17+
build_tags += ledger
18+
endif
19+
else
20+
UNAME_S = $(shell uname -s)
21+
ifeq ($(UNAME_S),OpenBSD)
22+
$(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988))
23+
else
24+
GCC = $(shell command -v gcc 2> /dev/null)
25+
ifeq ($(GCC),)
26+
$(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false)
27+
else
28+
build_tags += ledger
29+
endif
30+
endif
31+
endif
32+
endif
33+
34+
ifeq ($(WITH_CLEVELDB),yes)
35+
build_tags += gcc
36+
endif
37+
build_tags += $(BUILD_TAGS)
38+
build_tags := $(strip $(build_tags))
39+
40+
whitespace :=
41+
whitespace += $(whitespace)
42+
comma := ,
43+
build_tags_comma_sep := $(subst $(whitespace),$(comma),$(build_tags))
44+
45+
# process linker flags
46+
47+
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=xrn \
48+
-X github.com/cosmos/cosmos-sdk/version.ServerName=xrnd \
49+
-X github.com/cosmos/cosmos-sdk/version.ClientName=xrncli \
50+
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
51+
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
52+
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)"
53+
54+
ifeq ($(WITH_CLEVELDB),yes)
55+
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=cleveldb
56+
endif
57+
ldflags += $(LDFLAGS)
58+
ldflags := $(strip $(ldflags))
59+
60+
BUILD_FLAGS := -tags "$(build_tags)" -ldflags '$(ldflags)'
61+
62+
# The below include contains the tools target.
63+
include contrib/devtools/Makefile
64+
65+
all: install lint check
66+
67+
build: go.sum
68+
ifeq ($(OS),Windows_NT)
69+
go build -mod=readonly $(BUILD_FLAGS) -o build/xrnd.exe ./cmd/xrnd
70+
go build -mod=readonly $(BUILD_FLAGS) -o build/xrncli.exe ./cmd/xrncli
71+
else
72+
go build -mod=readonly $(BUILD_FLAGS) -o build/xrnd ./cmd/xrnd
73+
go build -mod=readonly $(BUILD_FLAGS) -o build/xrncli ./cmd/xrncli
74+
endif
75+
76+
build-linux: go.sum
77+
LEDGER_ENABLED=false GOOS=linux GOARCH=amd64 $(MAKE) build
78+
79+
install: go.sum check-ledger
80+
go install -mod=readonly $(BUILD_FLAGS) ./cmd/xrnd
81+
go install -mod=readonly $(BUILD_FLAGS) ./cmd/xrncli
82+
83+
install-debug: go.sum
84+
go install -mod=readonly $(BUILD_FLAGS) ./cmd/xrndebug
85+
86+
87+
########################################
88+
### Tools & dependencies
89+
90+
go-mod-cache: go.sum
91+
@echo "--> Download go modules to local cache"
92+
@go mod download
93+
94+
go.sum: go.mod
95+
@echo "--> Ensure dependencies have not been modified"
96+
@go mod verify
97+
98+
draw-deps:
99+
@# requires brew install graphviz or apt-get install graphviz
100+
go get github.com/RobotsAndPencils/goviz
101+
@goviz -i ./cmd/xrnd -d 2 | dot -Tpng -o dependency-graph.png
102+
103+
clean:
104+
rm -rf snapcraft-local.yaml build/
105+
106+
distclean: clean
107+
rm -rf vendor/
108+
109+
########################################
110+
### Testing
111+
112+
113+
check: check-unit check-build
114+
check-all: check check-race check-cover
115+
116+
check-unit:
117+
@VERSION=$(VERSION) go test -mod=readonly -tags='ledger test_ledger_mock' ./...
118+
119+
check-race:
120+
@VERSION=$(VERSION) go test -mod=readonly -race -tags='ledger test_ledger_mock' ./...
121+
122+
check-cover:
123+
@go test -mod=readonly -timeout 30m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' ./...
124+
125+
check-build: build
126+
@go test -mod=readonly -p 4 `go list ./cli_test/...` -tags=cli_test
127+
128+
129+
lint: ci-lint
130+
ci-lint:
131+
golangci-lint run
132+
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" | xargs gofmt -d -s
133+
go mod verify
134+
135+
format:
136+
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs gofmt -w -s
137+
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs misspell -w
138+
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs goimports -w -local github.com/cosmos/cosmos-sdk
139+
140+
benchmark:
141+
@go test -mod=readonly -bench=. ./...
142+
143+
144+
########################################
145+
### Local validator nodes using docker and docker-compose
146+
147+
build-docker-xrndnode:
148+
$(MAKE) -C networks/local
149+
150+
# Run a 4-node testnet locally
151+
localnet-start: localnet-stop
152+
@if ! [ -f build/node0/xrnd/config/genesis.json ]; then docker run --rm -v $(CURDIR)/build:/xrnd:Z tendermint/xrndnode testnet --v 4 -o . --starting-ip-address 192.168.10.2 ; fi
153+
docker-compose up -d
154+
155+
# Stop testnet
156+
localnet-stop:
157+
docker-compose down
158+
159+
# include simulations
160+
include sims.mk
161+
162+
.PHONY: all build-linux install install-debug \
163+
go-mod-cache draw-deps clean \
164+
check check-all check-build check-cover check-ledger check-unit check-race
6165

7166
test:
8167
go test ./...
9168

10169
test_cover:
11170
bash -x tests/test_cover.sh
12-
13-
lint:
14-
go get -u golang.org/x/lint/golint
15-
${GOPATH}/bin/golint -set_exit_status ./...

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ can be controlled directly by ecological contracts.
9999

100100
## Testnet Status
101101

102-
See [testnets/](./testnets)
102+
See https://github.com/regen-network/testnets.
103103
<br />
104104
<br />
105105
<br />

app/app.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import (
1212
"github.com/cosmos/cosmos-sdk/x/params"
1313
"github.com/cosmos/cosmos-sdk/x/slashing"
1414
"github.com/cosmos/cosmos-sdk/x/staking"
15+
"github.com/cosmos/cosmos-sdk/x/upgrade"
1516
"github.com/regen-network/regen-ledger/index/postgresql"
1617
"github.com/regen-network/regen-ledger/x/geo"
17-
"github.com/regen-network/regen-ledger/x/upgrade"
1818
"github.com/spf13/viper"
1919
"github.com/tendermint/tendermint/libs/cli"
2020
"github.com/tendermint/tendermint/libs/log"
@@ -66,6 +66,7 @@ func init() {
6666
crisis.AppModuleBasic{},
6767
slashing.AppModuleBasic{},
6868
geo.AppModuleBasic{},
69+
upgrade.AppModuleBasic{},
6970
)
7071
}
7172

@@ -98,13 +99,13 @@ type XrnApp struct {
9899
keyFeeCollection *sdk.KVStoreKey
99100
keyParams *sdk.KVStoreKey
100101
tkeyParams *sdk.TransientStoreKey
102+
upgradeStoreKey *sdk.KVStoreKey
101103
//dataStoreKey *sdk.KVStoreKey
102104
//schemaStoreKey *sdk.KVStoreKey
103105
//espStoreKey *sdk.KVStoreKey
104106
geoStoreKey *sdk.KVStoreKey
105107
//agentStoreKey *sdk.KVStoreKey
106108
//proposalStoreKey *sdk.KVStoreKey
107-
//upgradeStoreKey *sdk.KVStoreKey
108109
//consortiumStoreKey *sdk.KVStoreKey
109110

110111
// keepers
@@ -118,13 +119,13 @@ type XrnApp struct {
118119
govKeeper gov.Keeper
119120
crisisKeeper crisis.Keeper
120121
paramsKeeper params.Keeper
122+
upgradeKeeper upgrade.Keeper
121123
//dataKeeper data.Keeper
122124
//schemaKeeper schema.Keeper
123125
//espKeeper esp.Keeper
124126
geoKeeper geo.Keeper
125127
//agentKeeper group.Keeper
126128
//proposalKeeper proposal.Keeper
127-
//upgradeKeeper upgrade.Keeper
128129
//consortiumKeeper consortium.Keeper
129130

130131
// the module manager
@@ -162,13 +163,13 @@ func NewXrnApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo
162163
keyFeeCollection: sdk.NewKVStoreKey(auth.FeeStoreKey),
163164
keyParams: sdk.NewKVStoreKey(params.StoreKey),
164165
tkeyParams: sdk.NewTransientStoreKey(params.TStoreKey),
166+
upgradeStoreKey: sdk.NewKVStoreKey(upgrade.StoreKey),
165167
//dataStoreKey: sdk.NewKVStoreKey("data"),
166168
//schemaStoreKey: sdk.NewKVStoreKey("schema"),
167169
//espStoreKey: sdk.NewKVStoreKey("esp"),
168170
geoStoreKey: sdk.NewKVStoreKey("geo"),
169171
//agentStoreKey: sdk.NewKVStoreKey("group"),
170172
//proposalStoreKey: sdk.NewKVStoreKey("proposal"),
171-
//upgradeStoreKey: sdk.NewKVStoreKey("upgrade"),
172173
txDecoder: txDecoder,
173174
}
174175

@@ -196,12 +197,14 @@ func NewXrnApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo
196197
slashingSubspace, slashing.DefaultCodespace)
197198
app.crisisKeeper = crisis.NewKeeper(crisisSubspace, invCheckPeriod, app.distrKeeper,
198199
app.bankKeeper, app.feeCollectionKeeper)
200+
app.upgradeKeeper = upgrade.NewKeeper(app.upgradeStoreKey, app.cdc)
199201

200202
// register the proposal types
201203
govRouter := gov.NewRouter()
202204
govRouter.AddRoute(gov.RouterKey, gov.ProposalHandler).
203205
AddRoute(params.RouterKey, params.NewParamChangeProposalHandler(app.paramsKeeper)).
204-
AddRoute(distr.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.distrKeeper))
206+
AddRoute(distr.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.distrKeeper)).
207+
AddRoute(upgrade.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.upgradeKeeper))
205208
app.govKeeper = gov.NewKeeper(app.cdc, app.keyGov, app.paramsKeeper, govSubspace,
206209
app.bankKeeper, &stakingKeeper, gov.DefaultCodespace, govRouter)
207210

@@ -239,12 +242,13 @@ func NewXrnApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo
239242
slashing.NewAppModule(app.slashingKeeper, app.stakingKeeper),
240243
staking.NewAppModule(app.stakingKeeper, app.feeCollectionKeeper, app.distrKeeper, app.accountKeeper),
241244
geo.NewAppModule(app.geoKeeper),
245+
upgrade.NewAppModule(app.upgradeKeeper),
242246
)
243247

244248
// During begin block slashing happens after distr.BeginBlocker so that
245249
// there is nothing left over in the validator fee pool, so as to keep the
246250
// CanWithdrawInvariant invariant.
247-
app.mm.SetOrderBeginBlockers(mint.ModuleName, distr.ModuleName, slashing.ModuleName)
251+
app.mm.SetOrderBeginBlockers(upgrade.ModuleName, mint.ModuleName, distr.ModuleName, slashing.ModuleName)
248252

249253
app.mm.SetOrderEndBlockers(gov.ModuleName, staking.ModuleName)
250254

@@ -260,10 +264,11 @@ func NewXrnApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo
260264
app.MountStores(app.keyMain, app.keyAccount, app.keyStaking, app.keyMint,
261265
app.keyDistr, app.keySlashing, app.keyGov, app.keyFeeCollection,
262266
app.keyParams, app.tkeyParams, app.tkeyStaking, app.tkeyDistr,
267+
app.upgradeStoreKey,
263268
app.geoStoreKey,
264269
//app.schemaStoreKey, app.dataStoreKey,
265270
//app.espStoreKey, app.geoStoreKey, app.agentStoreKey,
266-
//app.proposalStoreKey, app.upgradeStoreKey,
271+
//app.proposalStoreKey,
267272
)
268273

269274
// initialize BaseApp

cmd/xrncli/main.go

+13-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ import (
4848
//agentclient "github.com/regen-network/regen-ledger/x/group/client"
4949
//claimclient "github.com/regen-network/regen-ledger/x/claim/client"
5050
//proposalclient "github.com/regen-network/regen-ledger/x/proposal/client"
51-
//upgraderest "github.com/regen-network/regen-ledger/x/upgrade/client/rest"
51+
"github.com/cosmos/cosmos-sdk/x/upgrade"
52+
upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
53+
upgradecli "github.com/cosmos/cosmos-sdk/x/upgrade/client/cli"
54+
upgraderest "github.com/cosmos/cosmos-sdk/x/upgrade/client/rest"
5255
)
5356

5457
const (
@@ -57,7 +60,6 @@ const (
5760
storeData = "data"
5861
storeAgent = "group"
5962
storeProposal = "proposal"
60-
storeUpgrade = "upgrade"
6163
)
6264

6365
func main() {
@@ -72,14 +74,20 @@ func main() {
7274
config.Seal()
7375

7476
mc := []sdk.ModuleClient{
75-
govClient.NewModuleClient(gv.StoreKey, cdc, paramcli.GetCmdSubmitProposal(cdc), distrcli.GetCmdSubmitProposal(cdc)),
77+
geoclient.NewModuleClient(cdc),
78+
govClient.NewModuleClient(gv.StoreKey, cdc,
79+
paramcli.GetCmdSubmitProposal(cdc),
80+
distrcli.GetCmdSubmitProposal(cdc),
81+
upgradecli.GetCmdSubmitUpgradeProposal(cdc),
82+
upgradecli.GetCmdSubmitCancelUpgradeProposal(cdc),
83+
),
7684
distClient.NewModuleClient(distcmd.StoreKey, cdc),
7785
stakingclient.NewModuleClient(st.StoreKey, cdc),
7886
mintclient.NewModuleClient(mint.StoreKey, cdc),
7987
slashingclient.NewModuleClient(sl.StoreKey, cdc),
8088
crisisclient.NewModuleClient(sl.StoreKey, cdc),
89+
upgradeclient.NewModuleClient(upgrade.StoreKey, cdc),
8190
//proposalclient.NewModuleClient(storeProposal, cdc),
82-
geoclient.NewModuleClient(cdc),
8391
//dataclient.NewModuleClient(storeData, cdc),
8492
//agentclient.NewModuleClient(storeAgent, cdc),
8593
//claimclient.NewModuleClient(storeClaim, cdc),
@@ -182,9 +190,9 @@ func registerRoutes(rs *lcd.RestServer) {
182190
staking.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, rs.KeyBase)
183191
slashing.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, rs.KeyBase)
184192
gov.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, paramsrest.ProposalRESTHandler(rs.CliCtx, rs.Cdc), dist.ProposalRESTHandler(rs.CliCtx, rs.Cdc))
193+
upgraderest.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, "upgrade-plan", upgrade.StoreKey)
185194
mintrest.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc)
186195
//datarest.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, storeData)
187-
//upgraderest.RegisterRoutes(rs.CliCtx, rs.Mux, rs.Cdc, "upgrade-plan", storeUpgrade)
188196
}
189197

190198
func initConfig(cmd *cobra.Command) error {

0 commit comments

Comments
 (0)