Documentation ¶
Index ¶
- Constants
- Variables
- func CheckBalances(t *testing.T, ctx sdk.Context, bankKeeper odinbankkeeper.WrappedBankKeeper, ...)
- func CreateTestApp(params ...bool) (*odinapp.OdinApp, sdk.Context)
- func CreateTestInput(params ...bool) (*odinapp.OdinApp, sdk.Context, me.Keeper)
- func MustGetBalances(ctx sdk.Context, bankKeeper odinbankkeeper.WrappedBankKeeper, ...) sdk.Coins
- func NewSimApp(chainID string, logger log.Logger) *odinapp.OdinApp
- func ParseTime(t int64) time.Time
- func Wasm56(time int) []byte
- func Wasm78(time int) []byte
- type Account
- type AuthBuilder
- type BankBuilder
- type EmptyAppOptions
- type GasMeterWrapper
- type GasRecord
- type OracleBuilder
- type StakingBuilder
- type TestAppBuilder
- func CreateAppCustomBalances(balancesRate ...int) (*odinapp.OdinApp, sdk.Context, TestAppBuilder)
- func CreateAppCustomValidators(accountsCount int, powers ...int) (*odinapp.OdinApp, sdk.Context, TestAppBuilder)
- func CreateDefaultGenesisApp(accountsCount int) TestAppBuilder
- func NewTestAppBuilder(dir string, logger log.Logger) TestAppBuilder
- type Wasm4Input
- type Wasm4Output
Constants ¶
const ( DefaultChainID = "odin" DefaultAccountsCount = 10 )
const ( DefaultBondDenom = "loki" DefaultHelperDenom = "minigeo" )
const (
Seed = 42
)
Variables ¶
var ( EmptyCoins = sdk.Coins(nil) Coin1minigeo = sdk.NewInt64Coin(DefaultHelperDenom, 1) Coin10loki = sdk.NewInt64Coin(DefaultBondDenom, 10) Coin100000000minigeo = sdk.NewInt64Coin(DefaultHelperDenom, 100000000) Coins1000000loki = sdk.NewCoins(sdk.NewInt64Coin(DefaultBondDenom, 1000000)) Coins99999999loki = sdk.NewCoins(sdk.NewInt64Coin(DefaultBondDenom, 99999999)) Coin100000000loki = sdk.NewInt64Coin(DefaultBondDenom, 100000000) Coin10000000000loki = sdk.NewInt64Coin(DefaultBondDenom, 10000000000) Coins100000000loki = sdk.NewCoins(Coin100000000loki) Coins10000000000loki = sdk.NewCoins(Coin10000000000loki) DefaultDataProvidersPool = sdk.NewCoins(Coin100000000loki) DefaultCommunityPool = sdk.NewCoins(Coin100000000minigeo, Coin100000000loki) )
nolint
var ( WasmExtra1FileName string WasmExtra2FileName string )
var RAND *rand.Rand
var Wasm1 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t1 (func (param i64 i64 i64 i64)))
(type $t2 (func (param i64 i64)))
(import "env" "ask_external_data" (func $ask_external_data (type $t1)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare") (type $t0)
(local $l0 i64)
i64.const 1
i64.const 1
i32.const 1024
i64.extend_u/i32
tee_local $l0
i64.const 4
call $ask_external_data
i64.const 2
i64.const 2
get_local $l0
i64.const 4
call $ask_external_data
i64.const 3
i64.const 3
get_local $l0
i64.const 4
call $ask_external_data)
(func $execute (export "execute") (type $t0)
i32.const 1024
i64.extend_u/i32
i64.const 4
call $set_return_data)
(table $T0 1 1 anyfunc)
(memory $memory (export "memory") 17)
(data (i32.const 1024) "beeb"))
`))
A simple Owasm script with the following specification:
PREPARE: CALL ask_external_data with EID 1 DID 1 CALLDATA "beeb" CALL ask_external_data with EID 2 DID 2 CALLDATA "beeb" CALL ask_external_data with EID 3 DID 3 CALLDATA "beeb" EXECUTE: CALL set_return_date with RETDATE "beeb"
var Wasm2 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t2 (func (param i64 i64)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare")
i64.const 1024
i64.const 4
call $set_return_data)
(func $execute (export "execute"))
(memory $memory (export "memory") 17)
(data (i32.const 1024) "beeb"))
`))
A bad Owasm script with the following specification:
PREPARE: CALL set_return_data with RETDATA "beeb" -- Not allowed during prepare EXECUTE: DO NOTHING
var Wasm3 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t1 (func (param i64 i64 i64 i64)))
(type $t2 (func (param i64 i64)))
(import "env" "ask_external_data" (func $ask_external_data (type $t1)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare") (type $t0))
(func $execute (export "execute") (type $t0))
(table $T0 1 1 anyfunc)
(memory $memory (export "memory") 17)
(data (i32.const 1024) "beeb"))
`))
A silly oracle script, primarily to test that you must make at least one raw request:
PREPARE: DO NOTHING EXECUTE: DO NOTHING
var Wasm4 []byte
An oracle script for testing complex interactions.
PREPARE: Call into the given data source ids with the given calldata. EXECUTE: Assume all validators report, append all reports to the final result.
var Wasm9 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t1 (func (param i64 i64 i64 i64)))
(type $t2 (func (param i64 i64)))
(import "env" "ask_external_data" (func $ask_external_data (type $t1)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare") (type $t0))
(func $execute (export "execute") (type $t0)
i32.const 1024
i64.extend_u/i32
i64.const 4
call $set_return_data
i32.const 1024
i64.extend_u/i32
i64.const 4
call $set_return_data)
(table $T0 1 1 anyfunc)
(memory $memory (export "memory") 17)
(data (i32.const 1024) "beeb"))
`))
var WasmExtra1 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t2 (func (param i64 i64)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare") (type $t0))
(func $execute (export "execute") (type $t0))
(memory $memory (export "memory") 17))
`))
An extra Owasm code to test creating or editing oracle scripts.
var WasmExtra2 []byte = wat2wasm([]byte(`
(module
(type $t0 (func))
(type $t1 (func (param i64 i64 i64 i64)))
(type $t2 (func (param i64 i64)))
(import "env" "ask_external_data" (func $ask_external_data (type $t1)))
(import "env" "set_return_data" (func $set_return_data (type $t2)))
(func $prepare (export "prepare") (type $t0))
(func $execute (export "execute") (type $t0))
(memory $memory (export "memory") 17))
`))
Another extra Owasm code to test creating or editing oracle scripts.
Functions ¶
func CheckBalances ¶
func CheckBalances( t *testing.T, ctx sdk.Context, bankKeeper odinbankkeeper.WrappedBankKeeper, address sdk.AccAddress, expected sdk.Coins, )
func CreateTestInput ¶
CreateTestInput creates a new test environment for unit tests. params[0] - activate; params[1] - fund pools; Deprecated
- use TestAppBuilder instead
func MustGetBalances ¶
func MustGetBalances(ctx sdk.Context, bankKeeper odinbankkeeper.WrappedBankKeeper, address sdk.AccAddress) sdk.Coins
Types ¶
type Account ¶
type Account struct { PrivKey crypto.PrivKey PubKey crypto.PubKey Address sdk.AccAddress ValAddress sdk.ValAddress }
Account is a data structure to store key of test account.
var ( Owner Account Treasury Account FeePayer Account Peter Account Alice Account Bob Account Carol Account OraclePoolProvider Account FeePoolProvider Account NotBondedPool Account Validators []Account DataSources []oracletypes.DataSource OracleScripts []oracletypes.OracleScript OwasmVM *owasm.Vm )
nolint
type AuthBuilder ¶
func NewAuthBuilder ¶
func NewAuthBuilder(accCount int) *AuthBuilder
func (AuthBuilder) Build ¶
func (b AuthBuilder) Build() []authtypes.GenesisAccount
type BankBuilder ¶
type BankBuilder struct { Balances []banktypes.Balance TotalSupply sdk.Coins BalancesMap map[string]sdk.Coins }
func NewBankBuilder ¶
type EmptyAppOptions ¶
type EmptyAppOptions struct{}
EmptyAppOptions is a stub implementing AppOptions
func (EmptyAppOptions) Get ¶
func (ao EmptyAppOptions) Get(o string) interface{}
Get implements AppOptions
type GasMeterWrapper ¶
GasMeterWrapper wrap gas meter for testing purpose
func NewGasMeterWrapper ¶
func NewGasMeterWrapper(meter sdk.GasMeter) *GasMeterWrapper
NewGasMeterWrapper to wrap gas meters for testing purposes
func (*GasMeterWrapper) ConsumeGas ¶
func (m *GasMeterWrapper) ConsumeGas(amount sdk.Gas, descriptor string)
func (*GasMeterWrapper) CountDescriptor ¶
func (m *GasMeterWrapper) CountDescriptor(descriptor string) int
func (*GasMeterWrapper) CountRecord ¶
func (m *GasMeterWrapper) CountRecord(amount sdk.Gas, descriptor string) int
type OracleBuilder ¶
type OracleBuilder struct { DataSources []oracletypes.DataSource OracleScripts []oracletypes.OracleScript // contains filtered or unexported fields }
func NewOracleBuilder ¶
func NewOracleBuilder(homePath string) *OracleBuilder
func (OracleBuilder) Build ¶
func (b OracleBuilder) Build() ([]oracletypes.OracleScript, []oracletypes.DataSource)
type StakingBuilder ¶
type StakingBuilder struct { ValAccounts []Account DelAccounts []Account Validators stakingtypes.Validators Delegations stakingtypes.Delegations BondDenom string Powers []int }
func NewStakingBuilder ¶
func NewStakingBuilder(valCount int, bondDenom string, powers ...int) *StakingBuilder
func (StakingBuilder) AddDelegations ¶
func (b StakingBuilder) AddDelegations(delegations ...sdk.Dec)
func (StakingBuilder) Build ¶
func (b StakingBuilder) Build() (stakingtypes.Validators, stakingtypes.Delegations)
type TestAppBuilder ¶
type TestAppBuilder interface { Build(chainID string, stateBytes []byte, params ...bool) *odinapp.OdinApp Codec() codec.Codec AddGenesis() TestAppBuilder UpdateModules(modulesGenesis map[string]json.RawMessage) TestAppBuilder GetAuthBuilder() *AuthBuilder GetStakingBuilder() *StakingBuilder GetBankBuilder() *BankBuilder GetOracleBuilder() *OracleBuilder SetAuthBuilder(*AuthBuilder) SetStakingBuilder(*StakingBuilder) SetBankBuilder(*BankBuilder) SetOracleBuilder(*OracleBuilder) }
func CreateAppCustomBalances ¶
func CreateDefaultGenesisApp ¶
func CreateDefaultGenesisApp(accountsCount int) TestAppBuilder
func NewTestAppBuilder ¶
func NewTestAppBuilder(dir string, logger log.Logger) TestAppBuilder
type Wasm4Input ¶
type Wasm4Output ¶
type Wasm4Output struct {
Ret string
}
Source Files ¶
- account.go
- coins.go
- custom.go
- init.go
- install.go
- module_builder.go
- oracle.go
- setup.go
- testapp_builder.go
- util.go
- wasm_1_simple.go
- wasm_2_return_in_prepare.go
- wasm_3_do_nothing.go
- wasm_4_complex.go
- wasm_56_computation.go
- wasm_78_large_calldata.go
- wasm_9_set_data_several_times.go
- wasm_extras.go
- wasm_util.go