Skip to content

Commit

Permalink
instance_tests, move genesis to runtime
Browse files Browse the repository at this point in the history
  • Loading branch information
timwu20 committed Jun 21, 2023
1 parent 7edf95f commit 1df4b5d
Show file tree
Hide file tree
Showing 19 changed files with 1,346 additions and 67 deletions.
6 changes: 3 additions & 3 deletions dot/core/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func createTestService(t *testing.T, genesisFilePath string,
gen, err := genesis.NewGenesisFromJSONRaw(genesisFilePath)
require.NoError(t, err)

genesisTrie, err := wasmer.NewTrieFromGenesis(*gen)
genesisTrie, err := runtime.NewTrieFromGenesis(*gen)
require.NoError(t, err)

// Extrinsic and context related stuff
Expand Down Expand Up @@ -266,7 +266,7 @@ func newWestendLocalWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand All @@ -287,7 +287,7 @@ func getWestendDevRuntimeCode(t *testing.T) (code []byte) {
westendDevGenesis, err := genesis.NewGenesisFromJSONRaw(path)
require.NoError(t, err)

genesisTrie, err := wasmer.NewTrieFromGenesis(*westendDevGenesis)
genesisTrie, err := runtime.NewTrieFromGenesis(*westendDevGenesis)
require.NoError(t, err)

trieState := rtstorage.NewTrieState(&genesisTrie)
Expand Down
4 changes: 2 additions & 2 deletions dot/digest/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -24,7 +24,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
runtime "github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -38,7 +38,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
3 changes: 1 addition & 2 deletions dot/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import (
"github.com/ChainSafe/gossamer/lib/grandpa"
"github.com/ChainSafe/gossamer/lib/keystore"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/services"
"github.com/ChainSafe/gossamer/lib/utils"
)
Expand Down Expand Up @@ -149,7 +148,7 @@ func (*nodeBuilder) initNode(config *cfg.Config) error {
}

// create trie from genesis
t, err := wasmer.NewTrieFromGenesis(*gen)
t, err := runtime.NewTrieFromGenesis(*gen)
if err != nil {
return fmt.Errorf("failed to create trie from genesis: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion dot/node_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func TestNewNode(t *testing.T) {
return nil, fmt.Errorf("failed to load genesis from file: %w", err)
}
// create trie from genesis
trie, err := wasmer.NewTrieFromGenesis(*gen)
trie, err := runtime.NewTrieFromGenesis(*gen)
if err != nil {
return nil, fmt.Errorf("failed to create trie from genesis: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions dot/rpc/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -24,7 +24,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/rpc/modules/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand All @@ -31,7 +31,7 @@ func newWestendLocalGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions dot/state/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/ChainSafe/gossamer/dot/types"
"github.com/ChainSafe/gossamer/lib/common"
"github.com/ChainSafe/gossamer/lib/genesis"
"github.com/ChainSafe/gossamer/lib/runtime/wasmer"
"github.com/ChainSafe/gossamer/lib/runtime"
"github.com/ChainSafe/gossamer/lib/trie"
"github.com/ChainSafe/gossamer/lib/utils"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -98,7 +98,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
2 changes: 1 addition & 1 deletion dot/sync/syncer_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

parentHash := common.NewHash([]byte{0})
Expand Down
4 changes: 2 additions & 2 deletions lib/babe/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ func newWestendLocalGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

genesisHeader = *types.NewHeader(common.NewHash([]byte{0}),
Expand All @@ -384,7 +384,7 @@ func newWestendDevGenesisWithTrieAndHeader(t *testing.T) (
require.NoError(t, err)
gen = *genesisPtr

genesisTrie, err = wasmer.NewTrieFromGenesis(gen)
genesisTrie, err = runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

genesisHeader = *types.NewHeader(common.NewHash([]byte{0}),
Expand Down
2 changes: 1 addition & 1 deletion lib/runtime/wasmer/genesis.go → lib/runtime/genesis.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2022 ChainSafe Systems (ON)
// SPDX-License-Identifier: LGPL-3.0-only

package wasmer
package runtime

import (
"errors"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2022 ChainSafe Systems (ON)
// SPDX-License-Identifier: LGPL-3.0-only

package wasmer
package runtime

import (
"testing"
Expand Down
10 changes: 5 additions & 5 deletions lib/runtime/wasmer/exports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func Test_Instance_Version(t *testing.T) {
instanceBuilder: func(t *testing.T) instanceVersioner {
genesisPath := utils.GetKusamaGenesisPath(t)
kusamaGenesis := genesisFromRawJSON(t, genesisPath)
genesisTrie, err := NewTrieFromGenesis(kusamaGenesis)
genesisTrie, err := runtime.NewTrieFromGenesis(kusamaGenesis)
require.NoError(t, err)

cfg := Config{
Expand Down Expand Up @@ -170,7 +170,7 @@ func balanceKey(t *testing.T, pub []byte) []byte {
func TestWestendRuntime_ValidateTransaction(t *testing.T) {
genesisPath := utils.GetWestendDevRawGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

// set state to genesis state
Expand Down Expand Up @@ -472,7 +472,7 @@ func TestInstance_ExecuteBlock_WestendRuntime(t *testing.T) {
func TestInstance_ApplyExtrinsic_WestendRuntime(t *testing.T) {
genesisPath := utils.GetWestendDevRawGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

// set state to genesis state
Expand Down Expand Up @@ -529,7 +529,7 @@ func TestInstance_ExecuteBlock_PolkadotRuntime(t *testing.T) {
func TestInstance_ExecuteBlock_PolkadotRuntime_PolkadotBlock1(t *testing.T) {
genesisPath := utils.GetPolkadotGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

expectedGenesisRoot := common.MustHexToHash("0x29d0d972cd27cbc511e9589fcb7a4506d5eb6a9e8df205f00472e5ab354a4e17")
Expand Down Expand Up @@ -579,7 +579,7 @@ func TestInstance_ExecuteBlock_PolkadotRuntime_PolkadotBlock1(t *testing.T) {
func TestInstance_ExecuteBlock_KusamaRuntime_KusamaBlock1(t *testing.T) {
genesisPath := utils.GetKusamaGenesisPath(t)
gen := genesisFromRawJSON(t, genesisPath)
genTrie, err := NewTrieFromGenesis(gen)
genTrie, err := runtime.NewTrieFromGenesis(gen)
require.NoError(t, err)

expectedGenesisRoot := common.MustHexToHash("0xb0006203c3a6e6bd2c6a17b1d4ae8ca49a31da0f4579da950b127774b44aef6b")
Expand Down
18 changes: 12 additions & 6 deletions lib/runtime/wazero/imports.go
Original file line number Diff line number Diff line change
Expand Up @@ -1713,15 +1713,11 @@ func ext_offchain_submit_transaction_version_1(ctx context.Context, m api.Module
}

func ext_offchain_timestamp_version_1(ctx context.Context, m api.Module) uint64 {
logger.Trace("executing...")

now := time.Now().Unix()
return uint64(now)
}

func ext_offchain_sleep_until_version_1(ctx context.Context, m api.Module, deadline uint64) {
logger.Trace("executing...")

dur := time.Until(time.UnixMilli(int64(deadline)))
if dur > 0 {
time.Sleep(dur)
Expand Down Expand Up @@ -2038,7 +2034,12 @@ func ext_storage_get_version_1(ctx context.Context, m api.Module, keySpan uint64
value := storage.Get(key)
logger.Debugf("value: 0x%x", value)

valueSpan, err := write(m, rtCtx.Allocator, scale.MustMarshal(&value))
var option *[]byte
if value != nil {
option = &value
}

valueSpan, err := write(m, rtCtx.Allocator, scale.MustMarshal(option))
if err != nil {
logger.Errorf("failed to allocate: %s", err)
panic(err)
Expand All @@ -2060,7 +2061,12 @@ func ext_storage_next_key_version_1(ctx context.Context, m api.Module, keySpan u
"key: 0x%x; next key 0x%x",
key, next)

nextSpan, err := write(m, rtCtx.Allocator, scale.MustMarshal(&next))
var option *[]byte
if len(next) > 0 {
option = &next
}

nextSpan, err := write(m, rtCtx.Allocator, scale.MustMarshal(option))
if err != nil {
logger.Errorf("failed to allocate: %s", err)
panic(err)
Expand Down
28 changes: 0 additions & 28 deletions lib/runtime/wazero/imports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"github.com/ChainSafe/gossamer/lib/trie/proof"
"github.com/ChainSafe/gossamer/pkg/scale"
"github.com/golang/mock/gomock"
"github.com/klauspost/compress/zstd"
"github.com/stretchr/testify/require"
)

Expand Down Expand Up @@ -91,42 +90,15 @@ func NewTestInstanceWithTrie(t *testing.T, targetRuntime string, tt *trie.Trie)
return r
}

func decompressWasm(code []byte) ([]byte, error) {
compressionFlag := []byte{82, 188, 83, 118, 70, 219, 142, 5}
if !bytes.HasPrefix(code, compressionFlag) {
return code, nil
}

decoder, err := zstd.NewReader(nil)
if err != nil {
return nil, fmt.Errorf("creating zstd reader: %s", err)
}
bytes, err := decoder.DecodeAll(code[len(compressionFlag):], nil)
if err != nil {
return nil, err
}
return bytes, err
}

// NewInstanceFromFile instantiates a runtime from a .wasm file
func NewInstanceFromFile(fp string, cfg Config) (*Instance, error) {
fmt.Println(fp)

// Reads the WebAssembly module as bytes.
// Retrieve WASM binary
bytes, err := ioutil.ReadFile(fp)
if err != nil {
return nil, fmt.Errorf("Failed to read wasm file: %s", err)
}

if strings.Contains(fp, "compact") {
var err error
bytes, err = decompressWasm(bytes)
if err != nil {
return nil, err
}
}

return NewInstance(bytes, cfg)
}

Expand Down
Loading

0 comments on commit 1df4b5d

Please sign in to comment.