Skip to content

Commit

Permalink
configure mainnet using build tags (#700)
Browse files Browse the repository at this point in the history
* configure mainnet using build tags

* Fix link warnings

* Format cmd configure file

* Add integration test github actions and config build flag

* Fix suggested changes

* Reduce amount of common code
  • Loading branch information
akhilkumarpilli committed Jun 26, 2020
1 parent c7de0f0 commit 50d68fe
Show file tree
Hide file tree
Showing 12 changed files with 290 additions and 154 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,10 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- run: make test-integration
integration-mainnet:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
- run: MAINNET=true make test-integration

26 changes: 16 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,17 @@ APP_DIR := ./app
GO := GO111MODULE=on go
GOBIN := $(shell go env GOPATH)/bin

# Setting mainnet flag based on env value
# export MAINNET=true to set build tag mainnet
ifeq ($(MAINNET),true)
BUILD_MAINNET=mainnet
endif

GOLANGCI_LINT_VERSION = v1.27.0

IMAGE_BUILD_ENV = GOOS=linux GOARCH=amd64

BUILD_FLAGS = -mod=readonly -tags "netgo ledger" -ldflags \
BUILD_FLAGS = -mod=readonly -tags "netgo ledger $(BUILD_MAINNET)" -ldflags \
'-X github.com/cosmos/cosmos-sdk/version.Name=akash \
-X github.com/cosmos/cosmos-sdk/version.ServerName=akashd \
-X github.com/cosmos/cosmos-sdk/version.ClientName=akashctl \
Expand Down Expand Up @@ -73,16 +79,16 @@ shellcheck:
-x /shellcheck/script/shellcheck.sh

test:
$(GO) test ./...
$(GO) test -tags=$(BUILD_MAINNET) ./...

test-nocache:
$(GO) test -count=1 ./...
$(GO) test -tags=$(BUILD_MAINNET) -count=1 ./...

test-full:
$(GO) test -race ./...
$(GO) test -tags=$(BUILD_MAINNET) -race ./...

test-coverage:
$(GO) test -coverprofile=coverage.txt \
$(GO) test -tags=$(BUILD_MAINNET) -coverprofile=coverage.txt \
-covermode=count \
-coverpkg="./..." \
./...
Expand Down Expand Up @@ -143,7 +149,7 @@ devdeps-install:

test-integration: $(BINS)
cp akashctl akashd ./_build
go test -mod=readonly -p 4 -tags=integration -v ./integration/...
go test -mod=readonly -p 4 -tags "integration $(BUILD_MAINNET)" -v ./integration/...

test-k8s-integration:
# ASSUMES:
Expand Down Expand Up @@ -220,20 +226,20 @@ update-swagger-docs:

test-sim-fullapp:
@echo "Running app simulation test..."
go test -mod=readonly ${APP_DIR} -run=TestFullAppSimulation -Enabled=true \
go test -mod=readonly -tags=$(BUILD_MAINNET) ${APP_DIR} -run=TestFullAppSimulation -Enabled=true \
-NumBlocks=50 -BlockSize=100 -Commit=true -Seed=99 -Period=5 -v -timeout 10m

test-sim-nondeterminism:
@echo "Running non-determinism test. This may take several minutes..."
go test -mod=readonly $(APP_DIR) -run TestAppStateDeterminism -Enabled=true \
go test -mod=readonly -tags=$(BUILD_MAINNET) $(APP_DIR) -run TestAppStateDeterminism -Enabled=true \
-NumBlocks=50 -BlockSize=100 -Commit=true -Period=0 -v -timeout 24h

test-sim-import-export:
@echo "Running application import/export simulation..."
go test -mod=readonly $(APP_DIR) -run=TestAppImportExport -Enabled=true \
go test -mod=readonly -tags=$(BUILD_MAINNET) $(APP_DIR) -run=TestAppImportExport -Enabled=true \
-NumBlocks=50 -BlockSize=100 -Commit=true -Seed=99 -Period=5 -v -timeout 10m

test-sim-after-import:
@echo "Running application simulation-after-import..."
go test -mod=readonly $(APP_DIR) -run=TestAppSimulationAfterImport -Enabled=true \
go test -mod=readonly -tags=$(BUILD_MAINNET) $(APP_DIR) -run=TestAppSimulationAfterImport -Enabled=true \
-NumBlocks=50 -BlockSize=100 -Commit=true -Seed=99 -Period=5 -v -timeout 10m
168 changes: 72 additions & 96 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,14 @@ func NewApp(
}

app.keeper.params = params.NewKeeper(
cdc,
keys[params.StoreKey],
tkeys[params.TStoreKey],
app.cdc,
app.keys[params.StoreKey],
app.tkeys[params.TStoreKey],
)

app.keeper.acct = auth.NewAccountKeeper(
cdc,
keys[auth.StoreKey],
app.cdc,
app.keys[auth.StoreKey],
app.keeper.params.Subspace(auth.DefaultParamspace),
auth.ProtoBaseAccount,
)
Expand All @@ -117,23 +117,23 @@ func NewApp(
)

app.keeper.supply = supply.NewKeeper(
cdc,
keys[supply.StoreKey],
app.cdc,
app.keys[supply.StoreKey],
app.keeper.acct,
app.keeper.bank,
macPerms(),
)

skeeper := staking.NewKeeper(
cdc,
keys[staking.StoreKey],
app.cdc,
app.keys[staking.StoreKey],
app.keeper.supply,
app.keeper.params.Subspace(staking.DefaultParamspace),
)

app.keeper.distr = distr.NewKeeper(
cdc,
keys[distr.StoreKey],
app.cdc,
app.keys[distr.StoreKey],
app.keeper.params.Subspace(distr.DefaultParamspace),
&skeeper,
app.keeper.supply,
Expand All @@ -142,8 +142,8 @@ func NewApp(
)

app.keeper.slashing = slashing.NewKeeper(
cdc,
keys[slashing.StoreKey],
app.cdc,
app.keys[slashing.StoreKey],
&skeeper,
app.keeper.params.Subspace(slashing.DefaultParamspace),
)
Expand All @@ -156,33 +156,32 @@ func NewApp(
)

app.keeper.mint = mint.NewKeeper(
cdc,
keys[mint.StoreKey],
app.cdc,
app.keys[mint.StoreKey],
app.keeper.params.Subspace(mint.DefaultParamspace),
&skeeper,
app.keeper.supply,
auth.FeeCollectorName,
)

app.keeper.upgrade = upgrade.NewKeeper(skipUpgradeHeights, keys[upgrade.StoreKey], cdc)
app.keeper.upgrade = upgrade.NewKeeper(skipUpgradeHeights, app.keys[upgrade.StoreKey], app.cdc)

app.keeper.crisis = crisis.NewKeeper(
app.keeper.params.Subspace(crisis.DefaultParamspace),
invCheckPeriod,
app.invCheckPeriod,
app.keeper.supply,
auth.FeeCollectorName,
)

// create evidence keeper with evidence router
evidenceKeeper := evidence.NewKeeper(
app.cdc, keys[evidence.StoreKey],
app.cdc, app.keys[evidence.StoreKey],
app.keeper.params.Subspace(evidence.DefaultParamspace),
&app.keeper.staking,
app.keeper.slashing,
)
evidenceRouter := evidence.NewRouter()

// TODO: register evidence routes
evidenceKeeper.SetRouter(evidenceRouter)

app.keeper.evidence = *evidenceKeeper
Expand All @@ -195,104 +194,81 @@ func NewApp(
AddRoute(upgrade.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.keeper.upgrade))

app.keeper.gov = gov.NewKeeper(
cdc,
keys[gov.StoreKey],
app.cdc,
app.keys[gov.StoreKey],
app.keeper.params.Subspace(gov.DefaultParamspace).WithKeyTable(gov.ParamKeyTable()),
app.keeper.supply,
&skeeper,
govRouter,
)

app.keeper.deployment = deployment.NewKeeper(
cdc,
keys[deployment.StoreKey],
)

app.keeper.market = market.NewKeeper(
cdc,
keys[market.StoreKey],
)

app.keeper.provider = provider.NewKeeper(
cdc,
keys[provider.StoreKey],
)
app.setAkashKeepers()

app.mm = module.NewManager(
genutil.NewAppModule(app.keeper.acct, app.keeper.staking, app.BaseApp.DeliverTx),
auth.NewAppModule(app.keeper.acct),
bank.NewAppModule(app.keeper.bank, app.keeper.acct),

supply.NewAppModule(app.keeper.supply, app.keeper.acct),
distr.NewAppModule(app.keeper.distr, app.keeper.acct, app.keeper.supply, app.keeper.staking),

mint.NewAppModule(app.keeper.mint),
slashing.NewAppModule(app.keeper.slashing, app.keeper.acct, app.keeper.staking),

staking.NewAppModule(app.keeper.staking, app.keeper.acct, app.keeper.supply),

gov.NewAppModule(app.keeper.gov, app.keeper.acct, app.keeper.supply),
upgrade.NewAppModule(app.keeper.upgrade),
evidence.NewAppModule(app.keeper.evidence),
crisis.NewAppModule(&app.keeper.crisis),

// akash
deployment.NewAppModule(
app.keeper.deployment,
app.keeper.market,
app.keeper.bank,
),

market.NewAppModule(
app.keeper.market,
app.keeper.deployment,
app.keeper.provider,
app.keeper.bank,
),

provider.NewAppModule(app.keeper.provider, app.keeper.bank, app.keeper.market),
append([]module.AppModule{
genutil.NewAppModule(app.keeper.acct, app.keeper.staking, app.BaseApp.DeliverTx),
auth.NewAppModule(app.keeper.acct),
bank.NewAppModule(app.keeper.bank, app.keeper.acct),
supply.NewAppModule(app.keeper.supply, app.keeper.acct),
distr.NewAppModule(app.keeper.distr, app.keeper.acct, app.keeper.supply, app.keeper.staking),
mint.NewAppModule(app.keeper.mint),
slashing.NewAppModule(app.keeper.slashing, app.keeper.acct, app.keeper.staking),
staking.NewAppModule(app.keeper.staking, app.keeper.acct, app.keeper.supply),
gov.NewAppModule(app.keeper.gov, app.keeper.acct, app.keeper.supply),
upgrade.NewAppModule(app.keeper.upgrade),
evidence.NewAppModule(app.keeper.evidence),
crisis.NewAppModule(&app.keeper.crisis),
},

app.akashAppModules()...,
)...,
)

app.mm.SetOrderBeginBlockers(upgrade.ModuleName, mint.ModuleName, distr.ModuleName, slashing.ModuleName, evidence.ModuleName)
app.mm.SetOrderEndBlockers(crisis.ModuleName, gov.ModuleName, staking.ModuleName, deployment.ModuleName, market.ModuleName)
app.mm.SetOrderEndBlockers(
append([]string{
crisis.ModuleName, gov.ModuleName, staking.ModuleName},
app.akashEndBlockModules()...,
)...,
)

// NOTE: The genutils module must occur after staking so that pools are
// properly initialized with tokens from genesis accounts.
app.mm.SetOrderInitGenesis(
auth.ModuleName,
distr.ModuleName,
staking.ModuleName,
bank.ModuleName,
slashing.ModuleName,
gov.ModuleName,
mint.ModuleName,
supply.ModuleName,
crisis.ModuleName,
genutil.ModuleName,
evidence.ModuleName,

// akash
deployment.ModuleName,
provider.ModuleName,
market.ModuleName,
append([]string{
auth.ModuleName,
distr.ModuleName,
staking.ModuleName,
bank.ModuleName,
slashing.ModuleName,
gov.ModuleName,
mint.ModuleName,
supply.ModuleName,
crisis.ModuleName,
genutil.ModuleName,
evidence.ModuleName,
},

app.akashInitGenesisOrder()...,
)...,
)

app.mm.RegisterInvariants(&app.keeper.crisis)
app.mm.RegisterRoutes(app.Router(), app.QueryRouter())

app.sm = module.NewSimulationManager(
auth.NewAppModule(app.keeper.acct),
bank.NewAppModule(app.keeper.bank, app.keeper.acct),
supply.NewAppModule(app.keeper.supply, app.keeper.acct),
mint.NewAppModule(app.keeper.mint),
staking.NewAppModule(app.keeper.staking, app.keeper.acct, app.keeper.supply),
distr.NewAppModule(app.keeper.distr, app.keeper.acct, app.keeper.supply, app.keeper.staking),
slashing.NewAppModule(app.keeper.slashing, app.keeper.acct, app.keeper.staking),
params.NewAppModule(), // NOTE: only used for simulation to generate randomized param change proposals
deployment.NewAppModuleSimulation(app.keeper.deployment, app.keeper.acct),
market.NewAppModuleSimulation(app.keeper.market, app.keeper.acct, app.keeper.deployment,
app.keeper.provider, app.keeper.bank),
provider.NewAppModuleSimulation(app.keeper.provider, app.keeper.acct),
append([]module.AppModuleSimulation{
auth.NewAppModule(app.keeper.acct),
bank.NewAppModule(app.keeper.bank, app.keeper.acct),
supply.NewAppModule(app.keeper.supply, app.keeper.acct),
mint.NewAppModule(app.keeper.mint),
staking.NewAppModule(app.keeper.staking, app.keeper.acct, app.keeper.supply),
distr.NewAppModule(app.keeper.distr, app.keeper.acct, app.keeper.supply, app.keeper.staking),
slashing.NewAppModule(app.keeper.slashing, app.keeper.acct, app.keeper.staking),
params.NewAppModule(), // NOTE: only used for simulation to generate randomized param change proposals
},
app.akashSimModules()...,
)...,
)

app.sm.RegisterStoreDecoders()
Expand Down

0 comments on commit 50d68fe

Please sign in to comment.