Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
50ee279f
Commit
50ee279f
authored
Feb 24, 2017
by
Péter Szilágyi
Committed by
GitHub
Feb 24, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3705 from karalabe/drop-legacy-commands
Drop legacy commands
parents
562ccff8
aca066f3
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
0 additions
and
446 deletions
+0
-446
main.go
cmd/ethtest/main.go
+0
-224
chaincmd.go
cmd/geth/chaincmd.go
+0
-60
main.go
cmd/geth/main.go
+0
-1
main.go
cmd/gethrpctest/main.go
+0
-161
No files found.
cmd/ethtest/main.go
deleted
100644 → 0
View file @
562ccff8
// Copyright 2014 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/>.
// ethtest executes Ethereum JSON tests.
package
main
import
(
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/tests"
"gopkg.in/urfave/cli.v1"
)
var
(
continueOnError
=
false
testExtension
=
".json"
defaultTest
=
"all"
defaultDir
=
"."
allTests
=
[]
string
{
"BlockTests"
,
"StateTests"
,
"TransactionTests"
,
"VMTests"
,
"RLPTests"
}
testDirMapping
=
map
[
string
]
string
{
"BlockTests"
:
"BlockchainTests"
}
skipTests
=
[]
string
{}
TestFlag
=
cli
.
StringFlag
{
Name
:
"test"
,
Usage
:
"Test type (string): VMTests, TransactionTests, StateTests, BlockTests"
,
Value
:
defaultTest
,
}
FileFlag
=
cli
.
StringFlag
{
Name
:
"file"
,
Usage
:
"Test file or directory. Directories are searched for .json files 1 level deep"
,
Value
:
defaultDir
,
EnvVar
:
"ETHEREUM_TEST_PATH"
,
}
ContinueOnErrorFlag
=
cli
.
BoolFlag
{
Name
:
"continue"
,
Usage
:
"Continue running tests on error (true) or [default] exit immediately (false)"
,
}
ReadStdInFlag
=
cli
.
BoolFlag
{
Name
:
"stdin"
,
Usage
:
"Accept input from stdin instead of reading from file"
,
}
SkipTestsFlag
=
cli
.
StringFlag
{
Name
:
"skip"
,
Usage
:
"Tests names to skip"
,
}
TraceFlag
=
cli
.
BoolFlag
{
Name
:
"trace"
,
Usage
:
"Enable VM tracing"
,
}
)
func
runTestWithReader
(
test
string
,
r
io
.
Reader
)
error
{
log
.
Info
(
"Running test"
,
"test"
,
test
)
var
err
error
switch
strings
.
ToLower
(
test
)
{
case
"bk"
,
"block"
,
"blocktest"
,
"blockchaintest"
,
"blocktests"
,
"blockchaintests"
:
err
=
tests
.
RunBlockTestWithReader
(
params
.
MainNetHomesteadBlock
,
params
.
MainNetDAOForkBlock
,
params
.
MainNetHomesteadGasRepriceBlock
,
r
,
skipTests
)
case
"st"
,
"state"
,
"statetest"
,
"statetests"
:
rs
:=
&
params
.
ChainConfig
{
HomesteadBlock
:
params
.
MainNetHomesteadBlock
,
DAOForkBlock
:
params
.
MainNetDAOForkBlock
,
DAOForkSupport
:
true
,
EIP150Block
:
params
.
MainNetHomesteadGasRepriceBlock
}
err
=
tests
.
RunStateTestWithReader
(
rs
,
r
,
skipTests
)
case
"tx"
,
"transactiontest"
,
"transactiontests"
:
rs
:=
&
params
.
ChainConfig
{
HomesteadBlock
:
params
.
MainNetHomesteadBlock
,
DAOForkBlock
:
params
.
MainNetDAOForkBlock
,
DAOForkSupport
:
true
,
EIP150Block
:
params
.
MainNetHomesteadGasRepriceBlock
}
err
=
tests
.
RunTransactionTestsWithReader
(
rs
,
r
,
skipTests
)
case
"vm"
,
"vmtest"
,
"vmtests"
:
err
=
tests
.
RunVmTestWithReader
(
r
,
skipTests
)
case
"rlp"
,
"rlptest"
,
"rlptests"
:
err
=
tests
.
RunRLPTestWithReader
(
r
,
skipTests
)
default
:
err
=
fmt
.
Errorf
(
"Invalid test type specified: %v"
,
test
)
}
return
err
}
func
getFiles
(
path
string
)
([]
string
,
error
)
{
log
.
Info
(
"Listing files"
,
"path"
,
path
)
var
files
[]
string
f
,
err
:=
os
.
Open
(
path
)
if
err
!=
nil
{
return
nil
,
err
}
defer
f
.
Close
()
fi
,
err
:=
f
.
Stat
()
if
err
!=
nil
{
return
nil
,
err
}
switch
mode
:=
fi
.
Mode
();
{
case
mode
.
IsDir
()
:
fi
,
_
:=
ioutil
.
ReadDir
(
path
)
files
=
make
([]
string
,
len
(
fi
))
for
i
,
v
:=
range
fi
{
// only go 1 depth and leave directory entires blank
if
!
v
.
IsDir
()
&&
v
.
Name
()[
len
(
v
.
Name
())
-
len
(
testExtension
)
:
len
(
v
.
Name
())]
==
testExtension
{
files
[
i
]
=
filepath
.
Join
(
path
,
v
.
Name
())
log
.
Info
(
"Found test file"
,
"file"
,
files
[
i
])
}
}
case
mode
.
IsRegular
()
:
files
=
make
([]
string
,
1
)
files
[
0
]
=
path
}
return
files
,
nil
}
func
runSuite
(
test
,
file
string
)
{
var
tests
[]
string
if
test
==
defaultTest
{
tests
=
allTests
}
else
{
tests
=
[]
string
{
test
}
}
for
_
,
curTest
:=
range
tests
{
suiteLogger
:=
log
.
New
(
"suite"
,
file
,
"test"
,
curTest
)
suiteLogger
.
Info
(
"Running test suite"
)
var
err
error
var
files
[]
string
if
test
==
defaultTest
{
// check if we have an explicit directory mapping for the test
if
_
,
ok
:=
testDirMapping
[
curTest
];
ok
{
files
,
err
=
getFiles
(
filepath
.
Join
(
file
,
testDirMapping
[
curTest
]))
}
else
{
// otherwise assume test name
files
,
err
=
getFiles
(
filepath
.
Join
(
file
,
curTest
))
}
}
else
{
files
,
err
=
getFiles
(
file
)
}
if
err
!=
nil
{
suiteLogger
.
Crit
(
"Failed to gather files"
,
"error"
,
err
)
}
if
len
(
files
)
==
0
{
suiteLogger
.
Warn
(
"No files matched path"
)
}
for
_
,
curFile
:=
range
files
{
// Skip blank entries
if
len
(
curFile
)
==
0
{
continue
}
testLogger
:=
suiteLogger
.
New
(
"file"
,
curFile
)
r
,
err
:=
os
.
Open
(
curFile
)
if
err
!=
nil
{
testLogger
.
Crit
(
"Failed to open file"
)
}
defer
r
.
Close
()
err
=
runTestWithReader
(
curTest
,
r
)
if
err
!=
nil
{
if
continueOnError
{
testLogger
.
Error
(
"Test failed, continuing"
,
"error"
,
err
)
}
else
{
testLogger
.
Crit
(
"Test failed, aborting"
,
"error"
,
err
)
}
}
}
}
}
func
setupApp
(
c
*
cli
.
Context
)
error
{
flagTest
:=
c
.
GlobalString
(
TestFlag
.
Name
)
flagFile
:=
c
.
GlobalString
(
FileFlag
.
Name
)
continueOnError
=
c
.
GlobalBool
(
ContinueOnErrorFlag
.
Name
)
useStdIn
:=
c
.
GlobalBool
(
ReadStdInFlag
.
Name
)
skipTests
=
strings
.
Split
(
c
.
GlobalString
(
SkipTestsFlag
.
Name
),
" "
)
if
!
useStdIn
{
runSuite
(
flagTest
,
flagFile
)
}
else
{
return
runTestWithReader
(
flagTest
,
os
.
Stdin
)
}
return
nil
}
func
main
()
{
log
.
Root
()
.
SetHandler
(
log
.
StreamHandler
(
os
.
Stderr
,
log
.
TerminalFormat
()))
app
:=
cli
.
NewApp
()
app
.
Name
=
"ethtest"
app
.
Usage
=
"go-ethereum test interface"
app
.
Action
=
setupApp
app
.
Version
=
"0.2.0"
app
.
Author
=
"go-ethereum team"
app
.
Flags
=
[]
cli
.
Flag
{
TestFlag
,
FileFlag
,
ContinueOnErrorFlag
,
ReadStdInFlag
,
SkipTestsFlag
,
TraceFlag
,
}
if
err
:=
app
.
Run
(
os
.
Args
);
err
!=
nil
{
log
.
Crit
(
"Failed to run the tester"
,
"error"
,
err
)
}
}
cmd/geth/chaincmd.go
View file @
50ee279f
...
@@ -19,7 +19,6 @@ package main
...
@@ -19,7 +19,6 @@ package main
import
(
import
(
"fmt"
"fmt"
"os"
"os"
"path/filepath"
"runtime"
"runtime"
"strconv"
"strconv"
"sync/atomic"
"sync/atomic"
...
@@ -72,16 +71,6 @@ Requires a first argument of the file to write to.
...
@@ -72,16 +71,6 @@ Requires a first argument of the file to write to.
Optional second and third arguments control the first and
Optional second and third arguments control the first and
last block to write. In this mode, the file will be appended
last block to write. In this mode, the file will be appended
if already existing.
if already existing.
`
,
}
upgradedbCommand
=
cli
.
Command
{
Action
:
upgradeDB
,
Name
:
"upgradedb"
,
Usage
:
"Upgrade chainblock database"
,
ArgsUsage
:
" "
,
Category
:
"BLOCKCHAIN COMMANDS"
,
Description
:
`
TODO: Please write this
`
,
`
,
}
}
removedbCommand
=
cli
.
Command
{
removedbCommand
=
cli
.
Command
{
...
@@ -255,49 +244,6 @@ func removeDB(ctx *cli.Context) error {
...
@@ -255,49 +244,6 @@ func removeDB(ctx *cli.Context) error {
return
nil
return
nil
}
}
func
upgradeDB
(
ctx
*
cli
.
Context
)
error
{
log
.
Info
(
fmt
.
Sprint
(
"Upgrading blockchain database"
))
stack
:=
utils
.
MakeNode
(
ctx
,
clientIdentifier
,
gitCommit
)
chain
,
chainDb
:=
utils
.
MakeChain
(
ctx
,
stack
)
bcVersion
:=
core
.
GetBlockChainVersion
(
chainDb
)
if
bcVersion
==
0
{
bcVersion
=
core
.
BlockChainVersion
}
// Export the current chain.
filename
:=
fmt
.
Sprintf
(
"blockchain_%d_%s.chain"
,
bcVersion
,
time
.
Now
()
.
Format
(
"20060102_150405"
))
exportFile
:=
filepath
.
Join
(
ctx
.
GlobalString
(
utils
.
DataDirFlag
.
Name
),
filename
)
if
err
:=
utils
.
ExportChain
(
chain
,
exportFile
);
err
!=
nil
{
utils
.
Fatalf
(
"Unable to export chain for reimport %s"
,
err
)
}
chainDb
.
Close
()
if
dir
:=
dbDirectory
(
chainDb
);
dir
!=
""
{
os
.
RemoveAll
(
dir
)
}
// Import the chain file.
chain
,
chainDb
=
utils
.
MakeChain
(
ctx
,
stack
)
core
.
WriteBlockChainVersion
(
chainDb
,
core
.
BlockChainVersion
)
err
:=
utils
.
ImportChain
(
chain
,
exportFile
)
chainDb
.
Close
()
if
err
!=
nil
{
utils
.
Fatalf
(
"Import error %v (a backup is made in %s, use the import command to import it)"
,
err
,
exportFile
)
}
else
{
os
.
Remove
(
exportFile
)
log
.
Info
(
fmt
.
Sprint
(
"Import finished"
))
}
return
nil
}
func
dbDirectory
(
db
ethdb
.
Database
)
string
{
ldb
,
ok
:=
db
.
(
*
ethdb
.
LDBDatabase
)
if
!
ok
{
return
""
}
return
ldb
.
Path
()
}
func
dump
(
ctx
*
cli
.
Context
)
error
{
func
dump
(
ctx
*
cli
.
Context
)
error
{
stack
:=
makeFullNode
(
ctx
)
stack
:=
makeFullNode
(
ctx
)
chain
,
chainDb
:=
utils
.
MakeChain
(
ctx
,
stack
)
chain
,
chainDb
:=
utils
.
MakeChain
(
ctx
,
stack
)
...
@@ -329,9 +275,3 @@ func hashish(x string) bool {
...
@@ -329,9 +275,3 @@ func hashish(x string) bool {
_
,
err
:=
strconv
.
Atoi
(
x
)
_
,
err
:=
strconv
.
Atoi
(
x
)
return
err
!=
nil
return
err
!=
nil
}
}
func
closeAll
(
dbs
...
ethdb
.
Database
)
{
for
_
,
db
:=
range
dbs
{
db
.
Close
()
}
}
cmd/geth/main.go
View file @
50ee279f
...
@@ -65,7 +65,6 @@ func init() {
...
@@ -65,7 +65,6 @@ func init() {
initCommand
,
initCommand
,
importCommand
,
importCommand
,
exportCommand
,
exportCommand
,
upgradedbCommand
,
removedbCommand
,
removedbCommand
,
dumpCommand
,
dumpCommand
,
// See monitorcmd.go:
// See monitorcmd.go:
...
...
cmd/gethrpctest/main.go
deleted
100644 → 0
View file @
562ccff8
// Copyright 2015 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/>.
// gethrpctest is a command to run the external RPC tests.
package
main
import
(
"flag"
"fmt"
"os"
"os/signal"
"github.com/ethereum/go-ethereum/accounts/keystore"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/tests"
whisper
"github.com/ethereum/go-ethereum/whisper/whisperv2"
)
const
defaultTestKey
=
"b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291"
var
(
testFile
=
flag
.
String
(
"json"
,
""
,
"Path to the .json test file to load"
)
testName
=
flag
.
String
(
"test"
,
""
,
"Name of the test from the .json file to run"
)
testKey
=
flag
.
String
(
"key"
,
defaultTestKey
,
"Private key of a test account to inject"
)
)
func
main
()
{
flag
.
Parse
()
// Enable logging errors, we really do want to see those
log
.
Root
()
.
SetHandler
(
log
.
LvlFilterHandler
(
log
.
LvlError
,
log
.
StreamHandler
(
os
.
Stderr
,
log
.
TerminalFormat
())))
// Load the test suite to run the RPC against
tests
,
err
:=
tests
.
LoadBlockTests
(
*
testFile
)
if
err
!=
nil
{
log
.
Crit
(
fmt
.
Sprintf
(
"Failed to load test suite: %v"
,
err
))
}
test
,
found
:=
tests
[
*
testName
]
if
!
found
{
log
.
Crit
(
fmt
.
Sprintf
(
"Requested test (%s) not found within suite"
,
*
testName
))
}
stack
,
err
:=
MakeSystemNode
(
*
testKey
,
test
)
if
err
!=
nil
{
log
.
Crit
(
fmt
.
Sprintf
(
"Failed to assemble test stack: %v"
,
err
))
}
if
err
:=
stack
.
Start
();
err
!=
nil
{
log
.
Crit
(
fmt
.
Sprintf
(
"Failed to start test node: %v"
,
err
))
}
defer
stack
.
Stop
()
log
.
Info
(
"Test node started..."
)
// Make sure the tests contained within the suite pass
if
err
:=
RunTest
(
stack
,
test
);
err
!=
nil
{
log
.
Crit
(
fmt
.
Sprintf
(
"Failed to run the pre-configured test: %v"
,
err
))
}
log
.
Info
(
"Initial test suite passed..."
)
quit
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
quit
,
os
.
Interrupt
)
<-
quit
}
// MakeSystemNode configures a protocol stack for the RPC tests based on a given
// keystore path and initial pre-state.
func
MakeSystemNode
(
privkey
string
,
test
*
tests
.
BlockTest
)
(
*
node
.
Node
,
error
)
{
// Create a networkless protocol stack
stack
,
err
:=
node
.
New
(
&
node
.
Config
{
UseLightweightKDF
:
true
,
IPCPath
:
node
.
DefaultIPCEndpoint
(
""
),
HTTPHost
:
node
.
DefaultHTTPHost
,
HTTPPort
:
node
.
DefaultHTTPPort
,
HTTPModules
:
[]
string
{
"admin"
,
"db"
,
"eth"
,
"debug"
,
"miner"
,
"net"
,
"shh"
,
"txpool"
,
"personal"
,
"web3"
},
WSHost
:
node
.
DefaultWSHost
,
WSPort
:
node
.
DefaultWSPort
,
WSModules
:
[]
string
{
"admin"
,
"db"
,
"eth"
,
"debug"
,
"miner"
,
"net"
,
"shh"
,
"txpool"
,
"personal"
,
"web3"
},
NoDiscovery
:
true
,
})
if
err
!=
nil
{
return
nil
,
err
}
// Create the keystore and inject an unlocked account if requested
ks
:=
stack
.
AccountManager
()
.
Backends
(
keystore
.
KeyStoreType
)[
0
]
.
(
*
keystore
.
KeyStore
)
if
len
(
privkey
)
>
0
{
key
,
err
:=
crypto
.
HexToECDSA
(
privkey
)
if
err
!=
nil
{
return
nil
,
err
}
a
,
err
:=
ks
.
ImportECDSA
(
key
,
""
)
if
err
!=
nil
{
return
nil
,
err
}
if
err
:=
ks
.
Unlock
(
a
,
""
);
err
!=
nil
{
return
nil
,
err
}
}
// Initialize and register the Ethereum protocol
db
,
_
:=
ethdb
.
NewMemDatabase
()
if
_
,
err
:=
test
.
InsertPreState
(
db
);
err
!=
nil
{
return
nil
,
err
}
ethConf
:=
&
eth
.
Config
{
TestGenesisState
:
db
,
TestGenesisBlock
:
test
.
Genesis
,
ChainConfig
:
&
params
.
ChainConfig
{
HomesteadBlock
:
params
.
MainNetHomesteadBlock
},
}
if
err
:=
stack
.
Register
(
func
(
ctx
*
node
.
ServiceContext
)
(
node
.
Service
,
error
)
{
return
eth
.
New
(
ctx
,
ethConf
)
});
err
!=
nil
{
return
nil
,
err
}
// Initialize and register the Whisper protocol
if
err
:=
stack
.
Register
(
func
(
*
node
.
ServiceContext
)
(
node
.
Service
,
error
)
{
return
whisper
.
New
(),
nil
});
err
!=
nil
{
return
nil
,
err
}
return
stack
,
nil
}
// RunTest executes the specified test against an already pre-configured protocol
// stack to ensure basic checks pass before running RPC tests.
func
RunTest
(
stack
*
node
.
Node
,
test
*
tests
.
BlockTest
)
error
{
var
ethereum
*
eth
.
Ethereum
stack
.
Service
(
&
ethereum
)
blockchain
:=
ethereum
.
BlockChain
()
// Process the blocks and verify the imported headers
blocks
,
err
:=
test
.
TryBlocksInsert
(
blockchain
)
if
err
!=
nil
{
return
err
}
if
err
:=
test
.
ValidateImportedHeaders
(
blockchain
,
blocks
);
err
!=
nil
{
return
err
}
// Retrieve the assembled state and validate it
stateDb
,
err
:=
blockchain
.
State
()
if
err
!=
nil
{
return
err
}
if
err
:=
test
.
ValidatePostState
(
stateDb
);
err
!=
nil
{
return
err
}
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment