aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/gdex/genesis_test.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2018-10-24 18:59:48 +0800
committerWei-Ning Huang <w@dexon.org>2019-03-12 12:19:09 +0800
commitd4f73229104ee8f12737ce5b3da4c9360d02dbeb (patch)
treecfe0626288a7c36300791ac1f5d1843e5114f7ee /cmd/gdex/genesis_test.go
parent08720a6cc45e2ce975b8284d91b2ebe9e40b46f7 (diff)
downloaddexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar.gz
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar.bz2
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar.lz
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar.xz
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.tar.zst
dexon-d4f73229104ee8f12737ce5b3da4c9360d02dbeb.zip
Rename geth -> gdex and fix Dockerfile
Diffstat (limited to 'cmd/gdex/genesis_test.go')
-rw-r--r--cmd/gdex/genesis_test.go110
1 files changed, 110 insertions, 0 deletions
diff --git a/cmd/gdex/genesis_test.go b/cmd/gdex/genesis_test.go
new file mode 100644
index 000000000..05da35563
--- /dev/null
+++ b/cmd/gdex/genesis_test.go
@@ -0,0 +1,110 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of go-ethereum.
+//
+// go-ethereum is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// go-ethereum is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
+
+package main
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+var customGenesisTests = []struct {
+ genesis string
+ query string
+ result string
+}{
+ // Plain genesis file without anything extra
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00"
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+ // Genesis file with an empty chain configuration (ensure missing fields work)
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {}
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+ // Genesis file with specific chain configurations
+ {
+ genesis: `{
+ "alloc" : {},
+ "coinbase" : "0x0000000000000000000000000000000000000000",
+ "difficulty" : "0x20000",
+ "extraData" : "",
+ "gasLimit" : "0x2fefd8",
+ "nonce" : "0x0000000000000042",
+ "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "timestamp" : "0x00",
+ "config" : {
+ "homesteadBlock" : 314,
+ "daoForkBlock" : 141,
+ "daoForkSupport" : true
+ }
+ }`,
+ query: "eth.getBlock(0).nonce",
+ result: "0x0000000000000042",
+ },
+}
+
+// Tests that initializing Geth with a custom genesis block and chain definitions
+// work properly.
+func TestCustomGenesis(t *testing.T) {
+ for i, tt := range customGenesisTests {
+ // Create a temporary data directory to use and inspect later
+ datadir := tmpdir(t)
+ defer os.RemoveAll(datadir)
+
+ // Initialize the data directory with the custom genesis block
+ json := filepath.Join(datadir, "genesis.json")
+ if err := ioutil.WriteFile(json, []byte(tt.genesis), 0600); err != nil {
+ t.Fatalf("test %d: failed to write genesis file: %v", i, err)
+ }
+ runGeth(t, "--datadir", datadir, "init", json).WaitExit()
+
+ // Query the custom genesis block
+ gdex := runGeth(t,
+ "--datadir", datadir, "--maxpeers", "0", "--port", "0",
+ "--nodiscover", "--nat", "none", "--ipcdisable",
+ "--exec", tt.query, "console")
+ gdex.ExpectRegexp(tt.result)
+ gdex.ExpectExit()
+ }
+}