Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

configure mainnet using build tags #700

Merged
merged 8 commits into from
Jun 26, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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
131 changes: 23 additions & 108 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/cosmos/cosmos-sdk/x/crisis"
"github.com/cosmos/cosmos-sdk/x/evidence"
"github.com/cosmos/cosmos-sdk/x/genutil"
"github.com/cosmos/cosmos-sdk/x/gov"
"github.com/cosmos/cosmos-sdk/x/mint"
"github.com/cosmos/cosmos-sdk/x/upgrade"
Expand Down Expand Up @@ -98,14 +97,14 @@ func NewApp(
}

app.keeper.params = params.NewKeeper(
akhilkumarpilli marked this conversation as resolved.
Show resolved Hide resolved
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 +116,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 +141,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 +155,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,105 +193,22 @@ 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.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),
app.setAkashKeepers()

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),
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here. for instance, does ModuleManager have an AppendModule() function or something that can be used in the tag-specific functions?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not able to find a way to append modules in ModuleManager. Tried to reduce the amount of duplicate code and left with these.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, how about

app.mm = module.NewManager(
  genutil.NewModule(),
  // ...
  app.createAkashModules()...,
)
// ...

func (app *App) createAkashModules() []sdk.AppModule {
// ...
}

or even

module.NewManager(app.createAppModules()...)

//...
func (app *App) createAppModules() []sdk.AppModules {
  return append(app.createCoreAppModules(),app.createAkashAppModules()...)
}

func (app *App) createCoreModulesBase() []sdk.AppModules {
  return []sdk.AppModule{
  }
}
// mainnet version:
func (app *App) createAkashAppModules() []sdk.AppModule {
  return []sdk.AppModule{}
}

// !mainnet version
func (app *App) createAkashAppModules() []sdk.AppModule {
  return []sdk.AppModule{
    deployment.NewAppModule(),
    // ...
  }
}


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)

// 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,
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here.

app.setModuleManager()

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),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and here

)
app.setSimulationManager()

app.sm.RegisterStoreDecoders()

Expand Down