swarm, ethclient: Add version test for http api

Clear redundant addition of BlockNumber in ethclient
This commit is contained in:
lash 2018-01-23 17:18:46 +01:00
parent 690522b09d
commit 88ed2d4b2d
3 changed files with 41 additions and 18 deletions

View file

@ -76,12 +76,6 @@ type rpcBlock struct {
UncleHashes []common.Hash `json:"uncles"`
}
func (ec *Client) BlockNumber(ctx context.Context) (big.Int, error) {
number := &big.Int{}
err := ec.c.CallContext(ctx, &number, "eth_blockNumber")
return *number, err
}
func (ec *Client) getBlock(ctx context.Context, method string, args ...interface{}) (*types.Block, error) {
var raw json.RawMessage
err := ec.c.CallContext(ctx, &raw, method, args...)

View file

@ -23,24 +23,17 @@ import (
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
"sync"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/swarm/api"
swarm "github.com/ethereum/go-ethereum/swarm/api/client"
"github.com/ethereum/go-ethereum/swarm/storage"
"github.com/ethereum/go-ethereum/swarm/testutil"
)
func init() {
log.Root().SetHandler(log.CallerFileHandler(log.LvlFilterHandler(log.LvlTrace, log.StreamHandler(os.Stderr, log.TerminalFormat(true)))))
}
// \TODO if create -> get -> update -> get, the last get with return 1.1 because 1.2 retrieve is still pending
func TestBzzResource(t *testing.T) {
srv := testutil.NewTestSwarmServer(t)
defer srv.Close()
@ -65,6 +58,7 @@ func TestBzzResource(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("err %s", resp.Status)
}
@ -75,7 +69,6 @@ func TestBzzResource(t *testing.T) {
if !bytes.Equal(b, []byte(keybyteshash)) {
t.Fatalf("resource update hash mismatch, expected '%s' got '%s'", keybyteshash, b)
}
resp.Body.Close()
// get latest update (1.1) through resource directly
url = fmt.Sprintf("%s/bzz-resource:/%x", srv.URL, keybytes)
@ -83,6 +76,7 @@ func TestBzzResource(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("err %s", resp.Status)
}
@ -93,7 +87,6 @@ func TestBzzResource(t *testing.T) {
if !bytes.Equal(databytes, b) {
t.Fatalf("Expected body '%x', got '%x'", databytes, b)
}
resp.Body.Close()
// update 2
url = fmt.Sprintf("%s/bzz-resource:/%x", srv.URL, keybytes)
@ -102,6 +95,7 @@ func TestBzzResource(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("Update returned %d", resp.Status)
}
@ -112,6 +106,7 @@ func TestBzzResource(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("err %s", resp.Status)
}
@ -122,7 +117,42 @@ func TestBzzResource(t *testing.T) {
if !bytes.Equal(data, b) {
t.Fatalf("Expected body '%x', got '%x'", data, b)
}
resp.Body.Close()
// get latest update (1.2) with specified period
url = fmt.Sprintf("%s/bzz-resource:/%x/1", srv.URL, keybytes)
resp, err = http.Get(url)
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("err %s", resp.Status)
}
b, err = ioutil.ReadAll(resp.Body)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(data, b) {
t.Fatalf("Expected body '%x', got '%x'", data, b)
}
// get first update (1.1) with specified period and version
url = fmt.Sprintf("%s/bzz-resource:/%x/1/1", srv.URL, keybytes)
resp, err = http.Get(url)
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Fatalf("err %s", resp.Status)
}
b, err = ioutil.ReadAll(resp.Body)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(databytes, b) {
t.Fatalf("Expected body '%x', got '%x'", databytes, b)
}
}
func TestBzzGetPath(t *testing.T) {

View file

@ -625,8 +625,7 @@ func (self *ResourceHandler) Close() {
}
func (self *ResourceHandler) GetBlock() (uint64, error) {
ctx, cancel := context.WithCancel(self.ctx)
defer cancel()
ctx, _ := context.WithCancel(self.ctx)
blockheader, err := self.ethClient.HeaderByNumber(ctx, nil)
if err != nil {
return 0, err