Skip to content
This repository has been archived by the owner on Mar 5, 2023. It is now read-only.

Commit

Permalink
Merge branch 'refactor-api' into 1.x
Browse files Browse the repository at this point in the history
# Conflicts:
#	fabex.go
  • Loading branch information
vadiminshakov committed Jun 3, 2020
2 parents 841b1ff + 1b0a68a commit 27bbe13
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 67 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@ unit-tests:
@cd blockfetcher && go test -v

integration-tests:
@cd tests/chaincode/fabcar/go && GOPROXY="https://goproxy.io" GOSUMDB=off go mod vendor
@cd client/ && go test -v
@cd ./rest && go test -v
6 changes: 3 additions & 3 deletions client/example/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"fmt"
fabcli "github.com/hyperledger-labs/fabex/client"
"github.com/hyperledger-labs/fabex/helpers"
pb "github.com/hyperledger-labs/fabex/proto"
"log"
)

Expand All @@ -41,10 +40,11 @@ func main() {
Use this commented lines for your experiments!
*/

//txs, err := client.Explore(1, 15)
//txs, err := client.GetRange(1, 15)
//txs, err := client.Get(&pb.Entry{Txid:"3a3e933a3d9953b0b10e6573254b6d3cf2347d72058c0347a55054babdd8e1a1"})
//txs, err := client.Get(&pb.Entry{Payload: "WriteSet"})
txs, err := client.Get(&pb.Entry{Blocknum: 5})
//txs, err := client.Get(&pb.Entry{Blocknum: 5})
txs, err := client.Get(nil)
if err != nil {
log.Fatal(err)
}
Expand Down
14 changes: 11 additions & 3 deletions client/fabex_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"google.golang.org/grpc"
"io"
"net"
"reflect"
)

type FabexClient struct {
Expand All @@ -40,9 +41,9 @@ func New(addr, port string) (*FabexClient, error) {
return &FabexClient{pb.NewFabexClient(conn)}, nil
}

func (fabexCli *FabexClient) Explore(startblock, endblock int) ([]db.Tx, error) {
func (fabexCli *FabexClient) GetRange(startblock, endblock int) ([]db.Tx, error) {

stream, err := fabexCli.Client.Explore(context.Background(), &pb.RequestRange{Startblock: int64(startblock), Endblock: int64(endblock)})
stream, err := fabexCli.Client.GetRange(context.Background(), &pb.RequestRange{Startblock: int64(startblock), Endblock: int64(endblock)})
if err != nil {
return nil, err
}
Expand All @@ -62,7 +63,14 @@ func (fabexCli *FabexClient) Explore(startblock, endblock int) ([]db.Tx, error)
}

func (fabexCli *FabexClient) Get(filter *pb.Entry) ([]db.Tx, error) {

checknull := &pb.Entry{}
checknull.Blocknum = 0
if reflect.DeepEqual(filter, checknull) {
return nil, errors.New("requests for blocks with a number less than 1 are not allowed")
}
if filter == nil {
filter = &pb.Entry{}
}
stream, err := fabexCli.Client.Get(context.Background(), filter)
if err != nil {
return nil, err
Expand Down
10 changes: 8 additions & 2 deletions client/fabex_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ func TestNew(t *testing.T) {
}
}

func TestExplore(t *testing.T) {
func TestGetRange(t *testing.T) {
fabcli, err := New("localhost", "6000")
if err != nil {
t.Errorf(err.Error())
}
txs, err := fabcli.Explore(0, 3)
txs, err := fabcli.GetRange(0, 3)
if err != nil {
t.Errorf(err.Error())
}
Expand Down Expand Up @@ -150,4 +150,10 @@ func TestGet(t *testing.T) {
}
assert.Greater(t, len(txs), 0, "No transactions found")

txs, err = fabcli.Get(nil)
if err != nil {
t.Errorf(err.Error())
}
assert.Greater(t, len(txs), 0, "No transactions found")

}
30 changes: 25 additions & 5 deletions fabex.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,18 +218,18 @@ func NewFabexServer(addr string, port string, conf *models.Fabex) *FabexServer {
return &FabexServer{addr, port, conf}
}

func (s *FabexServer) Explore(req *pb.RequestRange, stream pb.Fabex_ExploreServer) error {
func (s *FabexServer) GetRange(req *pb.RequestRange, stream pb.Fabex_GetRangeServer) error {
// set blocks counter to latest saved in db block number value
blockCounter := req.Startblock

// insert missing blocks/txs into db
for blockCounter <= req.Endblock {
customBlock, err := blockfetcher.GetBlock(s.Conf.LedgerClient, uint64(blockCounter))
QueryResults, err := s.Conf.Db.GetByBlocknum(uint64(blockCounter))
if err != nil {
return errors.Wrap(err, "GetBlock error")
return errors.Wrapf(err, "failed to get txs by block number %d", blockCounter)
}
if customBlock != nil {
for _, queryResult := range customBlock.Txs {
if QueryResults != nil {
for _, queryResult := range QueryResults {
stream.Send(&pb.Entry{Channelid: queryResult.ChannelId, Txid: queryResult.Txid, Hash: queryResult.Hash, Previoushash: queryResult.PreviousHash, Blocknum: queryResult.Blocknum, Payload: queryResult.Payload, Time: queryResult.Time})
}
}
Expand All @@ -240,6 +240,7 @@ func (s *FabexServer) Explore(req *pb.RequestRange, stream pb.Fabex_ExploreServe
}

func (s *FabexServer) Get(req *pb.Entry, stream pb.Fabex_GetServer) error {

switch {
case req.Txid != "":
QueryResults, err := s.Conf.Db.GetByTxId(req.Txid)
Expand Down Expand Up @@ -268,6 +269,25 @@ func (s *FabexServer) Get(req *pb.Entry, stream pb.Fabex_GetServer) error {
for _, queryResult := range QueryResults {
stream.Send(&pb.Entry{Channelid: queryResult.ChannelId, Txid: queryResult.Txid, Hash: queryResult.Hash, Previoushash: queryResult.PreviousHash, Blocknum: queryResult.Blocknum, Payload: queryResult.Payload, Time: queryResult.Time})
}
default:
// set blocks counter to latest saved in db block number value
blockCounter := 1

// insert missing blocks/txs into db
for {
queryResults, err := s.Conf.Db.GetByBlocknum(uint64(blockCounter))
if err != nil {
return errors.Wrapf(err, "failed to get txs by block number %d", blockCounter)
}
if queryResults == nil {
break
}
for _, queryResult := range queryResults {
stream.Send(&pb.Entry{Channelid: queryResult.ChannelId, Txid: queryResult.Txid, Hash: queryResult.Hash, Previoushash: queryResult.PreviousHash, Blocknum: queryResult.Blocknum, Payload: queryResult.Payload, Time: queryResult.Time})
}

blockCounter++
}
}

return nil
Expand Down
104 changes: 52 additions & 52 deletions proto/fabex.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion proto/fabex.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package fabex;
option go_package = "github.com/hyperledger-labs/fabex/proto";

service Fabex {
rpc Explore(RequestRange) returns (stream Entry);
rpc Get(Entry) returns (stream Entry);
rpc GetRange(RequestRange) returns (stream Entry);
}

message RequestRange {
Expand Down
2 changes: 1 addition & 1 deletion tests/chaincode/fabcar/go/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module fabcar

go 1.13
go 1.14

require (
github.com/fsouza/go-dockerclient v1.6.5 // indirect
Expand Down

0 comments on commit 27bbe13

Please sign in to comment.