Merge branch 'rpcxeth' into rpcfrontier
Conflicts: rpc/api.go
This commit is contained in:
771
rpc/api.go
771
rpc/api.go
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@ package rpc
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"sync"
|
||||
// "sync"
|
||||
"testing"
|
||||
"time"
|
||||
// "time"
|
||||
)
|
||||
|
||||
func TestWeb3Sha3(t *testing.T) {
|
||||
@ -24,33 +24,33 @@ func TestWeb3Sha3(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilterClose(t *testing.T) {
|
||||
t.Skip()
|
||||
api := &EthereumApi{
|
||||
logs: make(map[int]*logFilter),
|
||||
messages: make(map[int]*whisperFilter),
|
||||
quit: make(chan struct{}),
|
||||
}
|
||||
// func TestFilterClose(t *testing.T) {
|
||||
// t.Skip()
|
||||
// api := &EthereumApi{
|
||||
// logs: make(map[int]*logFilter),
|
||||
// messages: make(map[int]*whisperFilter),
|
||||
// quit: make(chan struct{}),
|
||||
// }
|
||||
|
||||
filterTickerTime = 1
|
||||
api.logs[0] = &logFilter{}
|
||||
api.messages[0] = &whisperFilter{}
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
go api.start()
|
||||
go func() {
|
||||
select {
|
||||
case <-time.After(500 * time.Millisecond):
|
||||
api.stop()
|
||||
wg.Done()
|
||||
}
|
||||
}()
|
||||
wg.Wait()
|
||||
if len(api.logs) != 0 {
|
||||
t.Error("expected logs to be empty")
|
||||
}
|
||||
// filterTickerTime = 1
|
||||
// api.logs[0] = &logFilter{}
|
||||
// api.messages[0] = &whisperFilter{}
|
||||
// var wg sync.WaitGroup
|
||||
// wg.Add(1)
|
||||
// go api.start()
|
||||
// go func() {
|
||||
// select {
|
||||
// case <-time.After(500 * time.Millisecond):
|
||||
// api.stop()
|
||||
// wg.Done()
|
||||
// }
|
||||
// }()
|
||||
// wg.Wait()
|
||||
// if len(api.logs) != 0 {
|
||||
// t.Error("expected logs to be empty")
|
||||
// }
|
||||
|
||||
if len(api.messages) != 0 {
|
||||
t.Error("expected messages to be empty")
|
||||
}
|
||||
}
|
||||
// if len(api.messages) != 0 {
|
||||
// t.Error("expected messages to be empty")
|
||||
// }
|
||||
// }
|
||||
|
26
rpc/args.go
26
rpc/args.go
@ -35,8 +35,8 @@ func blockAge(raw interface{}, number *int64) (err error) {
|
||||
}
|
||||
|
||||
type GetBlockByHashArgs struct {
|
||||
BlockHash string
|
||||
Transactions bool
|
||||
BlockHash string
|
||||
IncludeTxs bool
|
||||
}
|
||||
|
||||
func (args *GetBlockByHashArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
@ -57,15 +57,15 @@ func (args *GetBlockByHashArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
args.BlockHash = argstr
|
||||
|
||||
if len(obj) > 1 {
|
||||
args.Transactions = obj[1].(bool)
|
||||
args.IncludeTxs = obj[1].(bool)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type GetBlockByNumberArgs struct {
|
||||
BlockNumber int64
|
||||
Transactions bool
|
||||
BlockNumber int64
|
||||
IncludeTxs bool
|
||||
}
|
||||
|
||||
func (args *GetBlockByNumberArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
@ -86,7 +86,7 @@ func (args *GetBlockByNumberArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
}
|
||||
|
||||
if len(obj) > 1 {
|
||||
args.Transactions = obj[1].(bool)
|
||||
args.IncludeTxs = obj[1].(bool)
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -433,7 +433,7 @@ func (args *Sha3Args) UnmarshalJSON(b []byte) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
type FilterOptions struct {
|
||||
type BlockFilterArgs struct {
|
||||
Earliest int64
|
||||
Latest int64
|
||||
Address interface{}
|
||||
@ -442,7 +442,7 @@ type FilterOptions struct {
|
||||
Max int
|
||||
}
|
||||
|
||||
func (args *FilterOptions) UnmarshalJSON(b []byte) (err error) {
|
||||
func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
var obj []struct {
|
||||
FromBlock interface{} `json:"fromBlock"`
|
||||
ToBlock interface{} `json:"toBlock"`
|
||||
@ -609,6 +609,16 @@ func (args *FilterStringArgs) UnmarshalJSON(b []byte) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (args *FilterStringArgs) requirements() error {
|
||||
switch args.Word {
|
||||
case "latest", "pending":
|
||||
break
|
||||
default:
|
||||
return NewValidationError("Word", "Must be `latest` or `pending`")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type FilterIdArgs struct {
|
||||
Id int
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ func TestGetBlockByHashArgs(t *testing.T) {
|
||||
input := `["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", true]`
|
||||
expected := new(GetBlockByHashArgs)
|
||||
expected.BlockHash = "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
|
||||
expected.Transactions = true
|
||||
expected.IncludeTxs = true
|
||||
|
||||
args := new(GetBlockByHashArgs)
|
||||
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||
@ -93,8 +93,8 @@ func TestGetBlockByHashArgs(t *testing.T) {
|
||||
t.Errorf("BlockHash should be %v but is %v", expected.BlockHash, args.BlockHash)
|
||||
}
|
||||
|
||||
if args.Transactions != expected.Transactions {
|
||||
t.Errorf("Transactions should be %v but is %v", expected.Transactions, args.Transactions)
|
||||
if args.IncludeTxs != expected.IncludeTxs {
|
||||
t.Errorf("IncludeTxs should be %v but is %v", expected.IncludeTxs, args.IncludeTxs)
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,7 +112,7 @@ func TestGetBlockByNumberArgs(t *testing.T) {
|
||||
input := `["0x1b4", false]`
|
||||
expected := new(GetBlockByNumberArgs)
|
||||
expected.BlockNumber = 436
|
||||
expected.Transactions = false
|
||||
expected.IncludeTxs = false
|
||||
|
||||
args := new(GetBlockByNumberArgs)
|
||||
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||
@ -123,8 +123,8 @@ func TestGetBlockByNumberArgs(t *testing.T) {
|
||||
t.Errorf("BlockHash should be %v but is %v", expected.BlockNumber, args.BlockNumber)
|
||||
}
|
||||
|
||||
if args.Transactions != expected.Transactions {
|
||||
t.Errorf("Transactions should be %v but is %v", expected.Transactions, args.Transactions)
|
||||
if args.IncludeTxs != expected.IncludeTxs {
|
||||
t.Errorf("IncludeTxs should be %v but is %v", expected.IncludeTxs, args.IncludeTxs)
|
||||
}
|
||||
}
|
||||
|
||||
@ -388,7 +388,7 @@ func TestGetDataEmptyArgs(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilterOptions(t *testing.T) {
|
||||
func TestBlockFilterArgs(t *testing.T) {
|
||||
input := `[{
|
||||
"fromBlock": "0x1",
|
||||
"toBlock": "0x2",
|
||||
@ -396,7 +396,7 @@ func TestFilterOptions(t *testing.T) {
|
||||
"offset": "0x0",
|
||||
"address": "0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8",
|
||||
"topics": ["0x12341234"]}]`
|
||||
expected := new(FilterOptions)
|
||||
expected := new(BlockFilterArgs)
|
||||
expected.Earliest = 1
|
||||
expected.Latest = 2
|
||||
expected.Max = 3
|
||||
@ -404,7 +404,7 @@ func TestFilterOptions(t *testing.T) {
|
||||
expected.Address = "0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8"
|
||||
// expected.Topics = []string{"0x12341234"}
|
||||
|
||||
args := new(FilterOptions)
|
||||
args := new(BlockFilterArgs)
|
||||
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -434,16 +434,16 @@ func TestFilterOptions(t *testing.T) {
|
||||
// }
|
||||
}
|
||||
|
||||
func TestFilterOptionsWords(t *testing.T) {
|
||||
func TestBlockFilterArgsWords(t *testing.T) {
|
||||
input := `[{
|
||||
"fromBlock": "latest",
|
||||
"toBlock": "pending"
|
||||
}]`
|
||||
expected := new(FilterOptions)
|
||||
expected := new(BlockFilterArgs)
|
||||
expected.Earliest = 0
|
||||
expected.Latest = -1
|
||||
|
||||
args := new(FilterOptions)
|
||||
args := new(BlockFilterArgs)
|
||||
if err := json.Unmarshal([]byte(input), &args); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -457,13 +457,13 @@ func TestFilterOptionsWords(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFilterOptionsNums(t *testing.T) {
|
||||
func TestBlockFilterArgsNums(t *testing.T) {
|
||||
input := `[{
|
||||
"fromBlock": 2,
|
||||
"toBlock": 3
|
||||
}]`
|
||||
|
||||
args := new(FilterOptions)
|
||||
args := new(BlockFilterArgs)
|
||||
err := json.Unmarshal([]byte(input), &args)
|
||||
switch err.(type) {
|
||||
case *DecodeParamError:
|
||||
@ -474,10 +474,10 @@ func TestFilterOptionsNums(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestFilterOptionsEmptyArgs(t *testing.T) {
|
||||
func TestBlockFilterArgsEmptyArgs(t *testing.T) {
|
||||
input := `[]`
|
||||
|
||||
args := new(FilterOptions)
|
||||
args := new(BlockFilterArgs)
|
||||
err := json.Unmarshal([]byte(input), &args)
|
||||
if err == nil {
|
||||
t.Error("Expected error but didn't get one")
|
||||
|
Reference in New Issue
Block a user