Skip to content

Commit 63303a3

Browse files
edwardmackqdm12
authored andcommitted
tests(dot): modify integration test files
- add `integration` build tag to test files - improve existing integration test code
1 parent 02744c8 commit 63303a3

6 files changed

+164
-260
lines changed

dot/build_spec_integration_test.go

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
11
// Copyright 2021 ChainSafe Systems (ON)
22
// SPDX-License-Identifier: LGPL-3.0-only
33

4+
//go:build integration
5+
// +build integration
6+
47
package dot
58

69
import (
710
"encoding/json"
8-
"io"
11+
"fmt"
912
"os"
1013
"path/filepath"
1114
"testing"
1215

1316
"github.com/ChainSafe/gossamer/lib/genesis"
17+
"github.com/ChainSafe/gossamer/lib/runtime"
1418
"github.com/stretchr/testify/require"
1519
)
1620

21+
// hex encoding for ":code", used as key for code is raw genesis files.
22+
const codeHex = "0x3a636f6465"
23+
1724
func TestBuildFromGenesis(t *testing.T) {
25+
t.Parallel()
26+
1827
file := genesis.CreateTestGenesisJSONFile(t, false)
1928
bs, err := BuildFromGenesis(file, 0)
2029

21-
expectedChainType := "TESTCHAINTYPE"
30+
const expectedChainType = "TESTCHAINTYPE"
2231
expectedProperties := map[string]interface{}{
2332
"ss58Format": 0.0,
2433
"tokenDecimals": 0.0,
@@ -54,27 +63,29 @@ func TestBuildFromGenesis(t *testing.T) {
5463
}
5564

5665
func TestBuildFromGenesis_WhenGenesisDoesNotExists(t *testing.T) {
66+
t.Parallel()
67+
5768
bs, err := BuildFromGenesis("/not/exists/genesis.json", 0)
5869
require.Nil(t, bs)
59-
require.Error(t, err, os.ErrNotExist)
70+
require.ErrorIs(t, err, os.ErrNotExist)
6071
}
6172

6273
func TestWriteGenesisSpecFileWhenFileAlreadyExists(t *testing.T) {
63-
filename := filepath.Join(t.TempDir(), "existing.json")
64-
file, err := os.Create(filename)
65-
require.NoError(t, err)
66-
err = file.Close()
67-
require.NoError(t, err)
74+
t.Parallel()
6875

76+
filePath := filepath.Join(t.TempDir(), "genesis.raw")
6977
someBytes := []byte("Testing some bytes")
70-
err = WriteGenesisSpecFile(someBytes, filename)
78+
err := WriteGenesisSpecFile(someBytes, filePath)
7179

72-
require.Error(t, err)
80+
require.EqualError(t, err,
81+
fmt.Sprintf("file %s already exists, rename to avoid overwriting", filePath))
7382
}
7483

7584
func TestWriteGenesisSpecFile(t *testing.T) {
85+
t.Parallel()
86+
7687
cfg := NewTestConfig(t)
77-
cfg.Init.Genesis = "../chain/gssmr/genesis.json"
88+
cfg.Init.Genesis = runtime.GetAbsolutePath("../chain/gssmr/genesis.json")
7889

7990
expected, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis)
8091
require.NoError(t, err)
@@ -88,38 +99,32 @@ func TestWriteGenesisSpecFile(t *testing.T) {
8899
data, err := bs.ToJSONRaw()
89100
require.NoError(t, err)
90101

91-
tmpFiles := []string{
92-
"/tmp/unique-raw-genesis.json",
93-
"./unique-raw-genesis.json",
94-
}
95-
96-
for _, tmpFile := range tmpFiles {
97-
err = WriteGenesisSpecFile(data, tmpFile)
98-
require.NoError(t, err)
99-
require.FileExists(t, tmpFile)
102+
tmpFile := filepath.Join(t.TempDir(), "unique-raw-genesis.json")
103+
err = WriteGenesisSpecFile(data, tmpFile)
104+
require.NoError(t, err)
105+
require.FileExists(t, tmpFile)
100106

101-
defer os.Remove(tmpFile)
107+
file, err := os.Open(tmpFile)
108+
require.NoError(t, err)
109+
defer file.Close()
102110

103-
file, err := os.Open(tmpFile)
104-
require.NoError(t, err)
105-
defer file.Close()
111+
gen := new(genesis.Genesis)
106112

107-
genesisBytes, err := io.ReadAll(file)
108-
require.NoError(t, err)
113+
decoder := json.NewDecoder(file)
114+
err = decoder.Decode(gen)
115+
require.NoError(t, err)
109116

110-
gen := new(genesis.Genesis)
111-
err = json.Unmarshal(genesisBytes, gen)
112-
require.NoError(t, err)
117+
require.Equal(t, expected.ChainType, gen.ChainType)
118+
require.Equal(t, expected.Properties, gen.Properties)
113119

114-
require.Equal(t, expected.ChainType, gen.ChainType)
115-
require.Equal(t, expected.Properties, gen.Properties)
116-
}
117120
}
118121

119122
func TestBuildFromDB(t *testing.T) {
123+
t.Parallel()
124+
120125
// setup expected
121126
cfg := NewTestConfig(t)
122-
cfg.Init.Genesis = "../chain/gssmr/genesis.json"
127+
cfg.Init.Genesis = runtime.GetAbsolutePath("../chain/gssmr/genesis.json")
123128
expected, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis)
124129
require.NoError(t, err)
125130
// initialise node (initialise state database and load genesis data)
@@ -134,5 +139,5 @@ func TestBuildFromDB(t *testing.T) {
134139
err = json.Unmarshal(res, &jGen)
135140
require.NoError(t, err)
136141

137-
require.Equal(t, expected.Genesis.Raw["top"]["0x3a636f6465"], jGen.Genesis.Runtime["system"]["code"])
142+
require.Equal(t, expected.Genesis.Raw["top"][codeHex], jGen.Genesis.Runtime["system"]["code"])
138143
}

dot/config_integration_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
// Copyright 2021 ChainSafe Systems (ON)
22
// SPDX-License-Identifier: LGPL-3.0-only
33

4+
//go:build integration
5+
// +build integration
6+
47
package dot
58

69
import (
10+
"os"
711
"testing"
812

913
"github.com/stretchr/testify/require"
1014
)
1115

12-
// TestExportConfig tests exporting a toml configuration file
1316
func TestExportConfig(t *testing.T) {
1417
cfg, cfgFile := newTestConfigWithFile(t)
15-
require.NotNil(t, cfg)
1618

1719
genFile := NewTestGenesisRawFile(t, cfg)
1820

1921
cfg.Init.Genesis = genFile
2022

2123
err := InitNode(cfg)
22-
require.Nil(t, err)
24+
require.NoError(t, err)
2325

2426
file := exportConfig(cfg, cfgFile.Name())
2527
require.NotNil(t, file)
28+
os.Remove(file.Name())
2629
}

dot/import_integration_test.go

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
// Copyright 2021 ChainSafe Systems (ON)
22
// SPDX-License-Identifier: LGPL-3.0-only
33

4+
//go:build integration
5+
// +build integration
6+
47
package dot
58

69
import (
710
"encoding/json"
11+
"io/ioutil"
812
"math/big"
913
"os"
1014
"path/filepath"
1115
"testing"
1216

17+
"github.com/ChainSafe/gossamer/dot/state"
1318
"github.com/ChainSafe/gossamer/dot/types"
19+
"github.com/ChainSafe/gossamer/internal/log"
1420
"github.com/ChainSafe/gossamer/lib/common"
1521
"github.com/ChainSafe/gossamer/pkg/scale"
16-
1722
"github.com/stretchr/testify/require"
1823
)
1924

2025
func setupStateFile(t *testing.T) string {
21-
filename := "../lib/runtime/test_data/kusama/block1482002.out"
26+
t.Helper()
2227

23-
data, err := os.ReadFile(filename)
28+
const filename = "../lib/runtime/test_data/kusama/block1482002.out"
29+
30+
data, err := ioutil.ReadFile(filename)
2431
require.NoError(t, err)
2532

2633
rpcPairs := make(map[string]interface{})
@@ -31,16 +38,17 @@ func setupStateFile(t *testing.T) string {
3138
bz, err := json.Marshal(pairs)
3239
require.NoError(t, err)
3340

34-
testDir := t.TempDir()
35-
fp := filepath.Join(testDir, "state.json")
36-
err = os.WriteFile(fp, bz, 0777)
41+
fp := filepath.Join(t.TempDir(), "state.json")
42+
err = ioutil.WriteFile(fp, bz, 0777)
3743
require.NoError(t, err)
3844

3945
return fp
4046
}
4147

4248
func setupHeaderFile(t *testing.T) string {
43-
headerStr := `{` +
49+
t.Helper()
50+
51+
const headerStr = `{` +
4452
`"digest":{"logs":[` +
4553
`"0x0642414245b501013c0000009659bd0f0000000070edad1c9064fff78cb18435223d8adaf5ea04c24b1a8766e3dc01eb03cc6a0c11b79793d4e31cc0990838229c44fed1669a7c7c79e1e6d0a96374d6496728069d1ef739e290497a0e3b728fa88fcbdd3a5504e0efde0242e7a806dd4fa9260c",` + //nolint:lll
4654
`"0x054241424501019e7f28dddcf27c1e6b328d5694c368d5b2ec5dbe0e412ae1c98f88d53be4d8502fac571f3f19c9caaf281a673319241e0c5095a683ad34316204088a36a4bd86"` + //nolint:lll
@@ -49,20 +57,19 @@ func setupHeaderFile(t *testing.T) string {
4957
`"number":"0x169d12",` +
5058
`"parentHash":"0x3b45c9c22dcece75a30acc9c2968cb311e6b0557350f83b430f47559db786975",` +
5159
`"stateRoot":"0x09f9ca28df0560c2291aa16b56e15e07d1e1927088f51356d522722aa90ca7cb"}`
52-
testDir := t.TempDir()
53-
fp := filepath.Join(testDir, "header.json")
54-
err := os.WriteFile(fp, []byte(headerStr), 0777)
60+
fp := filepath.Join(t.TempDir(), "header.json")
61+
err := ioutil.WriteFile(fp, []byte(headerStr), 0777)
5562
require.NoError(t, err)
5663
return fp
5764
}
5865

5966
func TestNewTrieFromPairs(t *testing.T) {
6067
fp := setupStateFile(t)
61-
tr, err := newTrieFromPairs(fp)
68+
trie, err := newTrieFromPairs(fp)
6269
require.NoError(t, err)
6370

6471
expectedRoot := common.MustHexToHash("0x09f9ca28df0560c2291aa16b56e15e07d1e1927088f51356d522722aa90ca7cb")
65-
require.Equal(t, expectedRoot, tr.MustHash())
72+
require.Equal(t, expectedRoot, trie.MustHash())
6673
}
6774

6875
func TestNewHeaderFromFile(t *testing.T) {
@@ -74,7 +81,7 @@ func TestNewHeaderFromFile(t *testing.T) {
7481
digest := types.NewDigest()
7582
err = scale.Unmarshal(digestBytes, &digest)
7683
require.NoError(t, err)
77-
require.Equal(t, 2, len(digest.Types))
84+
require.Len(t, digest.Types, 2)
7885

7986
expected := &types.Header{
8087
ParentHash: common.MustHexToHash("0x3b45c9c22dcece75a30acc9c2968cb311e6b0557350f83b430f47559db786975"),
@@ -88,7 +95,7 @@ func TestNewHeaderFromFile(t *testing.T) {
8895
}
8996

9097
func TestImportState(t *testing.T) {
91-
basepath := t.TempDir()
98+
basepath := os.TempDir()
9299

93100
cfg := NewTestConfig(t)
94101
require.NotNil(t, cfg)
@@ -104,7 +111,20 @@ func TestImportState(t *testing.T) {
104111
stateFP := setupStateFile(t)
105112
headerFP := setupHeaderFile(t)
106113

107-
firstSlot := uint64(262493679)
114+
const firstSlot = uint64(262493679)
108115
err = ImportState(basepath, stateFP, headerFP, firstSlot)
109116
require.NoError(t, err)
117+
// confirm data is imported into db
118+
config := state.Config{
119+
Path: basepath,
120+
LogLevel: log.Info,
121+
}
122+
srv := state.NewService(config)
123+
srv.SetupBase()
124+
125+
lookupKey := []byte{98, 108, 111, 99, 107, 104, 100, 114, 88, 127, 109, 161, 191, 167, 26, 103, 95, 16, 223, 160,
126+
246, 62, 223, 207, 22, 142, 142, 206, 151, 235, 95, 82, 106, 175, 14, 138, 142, 130, 219, 63}
127+
data, err := srv.DB().Get(lookupKey)
128+
require.NoError(t, err)
129+
require.NotNil(t, data)
110130
}

0 commit comments

Comments
 (0)