testapp

package
v0.7.32 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2024 License: GPL-3.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultChainID       = "odin"
	DefaultAccountsCount = 10
)
View Source
const (
	DefaultBondDenom   = "loki"
	DefaultHelperDenom = "minigeo"
)
View Source
const (
	Seed = 42
)

Variables

View Source
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

View Source
var (
	WasmExtra1FileName string
	WasmExtra2FileName string
)
View Source
var RAND *rand.Rand
View Source
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"
View Source
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
View Source
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
View Source
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.
View Source
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"))
`))
View Source
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.

View Source
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 CreateTestApp

func CreateTestApp(params ...bool) (*odinapp.OdinApp, sdk.Context)

func CreateTestInput

func CreateTestInput(params ...bool) (*odinapp.OdinApp, sdk.Context, me.Keeper)

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

func NewSimApp

func NewSimApp(chainID string, logger log.Logger) *odinapp.OdinApp

NewSimApp creates instance of our app using in test.

func ParseTime

func ParseTime(t int64) time.Time

ParseTime is a helper function to parse from number to time.Time with UTC locale.

func Wasm56

func Wasm56(time int) []byte

An oracle script to test heavy computation.

PREPARE:
  Loop for `time` times and ask external data with calldata "new beeb".
EXECUTE:
  Loop for `time` times and set return data "new beeb".

func Wasm78

func Wasm78(time int) []byte

An oracle script to test large calldata

PREPARE:
  Ask external data with calldata "b"*time
EXECUTE:
  Return with data "b"*time

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

type AuthBuilder struct {
	Accounts   []Account
	AccAddrMap map[string]Account
}

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

func NewBankBuilder(balCount int, balances map[string]sdk.Coins, initialSupply sdk.Coins) *BankBuilder

func (BankBuilder) Build

func (b BankBuilder) Build() ([]banktypes.Balance, sdk.Coins)

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

type GasMeterWrapper struct {
	sdk.GasMeter
	GasRecords []GasRecord
}

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 GasRecord

type GasRecord struct {
	Gas        sdk.Gas
	Descriptor string
}

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

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

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 CreateAppCustomBalances(balancesRate ...int) (*odinapp.OdinApp, sdk.Context, TestAppBuilder)

func CreateAppCustomValidators

func CreateAppCustomValidators(accountsCount int, powers ...int) (*odinapp.OdinApp, sdk.Context, TestAppBuilder)

func CreateDefaultGenesisApp

func CreateDefaultGenesisApp(accountsCount int) TestAppBuilder

func NewTestAppBuilder

func NewTestAppBuilder(dir string, logger log.Logger) TestAppBuilder

type Wasm4Input

type Wasm4Input struct {
	IDs      []int64
	Calldata string
}

type Wasm4Output

type Wasm4Output struct {
	Ret string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL