Skip to content

Commit

Permalink
adding for commit phase only dummy impl (#195)
Browse files Browse the repository at this point in the history
* adding for commit phase only dummy impl

Signed-off-by: Sam Yuan <yy19902439@126.com>

* fix up

Signed-off-by: Sam Yuan <yy19902439@126.com>

* impl for endorsement only

Signed-off-by: Sam Yuan <yy19902439@126.com>

* fix up

Signed-off-by: Sam Yuan <yy19902439@126.com>

* fix up

Signed-off-by: Sam Yuan <yy19902439@126.com>
  • Loading branch information
SamYuan1990 committed Aug 6, 2021
1 parent b04f171 commit cce0b93
Show file tree
Hide file tree
Showing 22 changed files with 680 additions and 108 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@

# Files from IDE
*.idea/
*.vscode/
9 changes: 9 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,15 @@ jobs:
LATEST:
FABRIC_VERSION: 'latest'
INTERGATION_CASE: 'ANDLogic'
LATEST_ORLogic:
FABRIC_VERSION: 'latest'
INTERGATION_CASE: 'ORLogic'
LATEST_COMMITONLY:
FABRIC_VERSION: 'latest'
INTERGATION_CASE: 'COMMITONLY'
LATEST_ENODRSEMENTONLY:
FABRIC_VERSION: 'latest'
INTERGATION_CASE: 'ENDORSEMNTONLY'
steps:
- script: make integration-test FABRIC_VERSION=$(FABRIC_VERSION) INTERGATION_CASE=$(INTERGATION_CASE)

Expand Down
27 changes: 24 additions & 3 deletions cmd/tape/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,22 @@ var (
rate = run.Flag("rate", "[Optional] Creates tx rate, default 0 as unlimited").Default("0").Float64()
burst = run.Flag("burst", "[Optional] Burst size for Tape, should bigger than rate").Default("1000").Int()
signerNumber = run.Flag("signers", "[Optional] signer parallel Number for Tape, default as 5").Default("5").Int()
version = app.Command("version", "Show version information")

version = app.Command("version", "Show version information")

commitOnly = app.Command("commitOnly", "Start tape with commitOnly mode, starts dummy envelop ends with peer events")
commitcon = commitOnly.Flag("config", "Path to config file").Required().Short('c').String()
commitnum = commitOnly.Flag("number", "Number of tx for shot").Required().Short('n').Int()
commitrate = commitOnly.Flag("rate", "[Optional] Creates tx rate, default 0 as unlimited").Default("0").Float64()
commitburst = commitOnly.Flag("burst", "[Optional] Burst size for Tape, should bigger than rate").Default("1000").Int()
commitsignerNumber = commitOnly.Flag("signers", "[Optional] signer parallel Number for Tape, default as 5").Default("5").Int()

endorsementOnly = app.Command("endorsementOnly", "Start tape with endorsementOnly mode, starts endorsement and end")
endorsementcon = endorsementOnly.Flag("config", "Path to config file").Required().Short('c').String()
endorsementnum = endorsementOnly.Flag("number", "Number of tx for shot").Required().Short('n').Int()
endorsementrate = endorsementOnly.Flag("rate", "[Optional] Creates tx rate, default 0 as unlimited").Default("0").Float64()
endorsementburst = endorsementOnly.Flag("burst", "[Optional] Burst size for Tape, should bigger than rate").Default("1000").Int()
endorsementsignerNumber = endorsementOnly.Flag("signers", "[Optional] signer parallel Number for Tape, default as 5").Default("5").Int()
)

func main() {
Expand All @@ -42,8 +57,14 @@ func main() {
switch fullCmd {
case version.FullCommand():
fmt.Printf(cmdImpl.GetVersionInfo())
case commitOnly.FullCommand():
checkArgs(commitrate, commitburst, commitsignerNumber, logger)
err = cmdImpl.ProcessCommitOnly(*commitcon, *commitnum, *commitburst, *commitsignerNumber, *commitrate, logger)
case endorsementOnly.FullCommand():
checkArgs(endorsementrate, endorsementburst, endorsementsignerNumber, logger)
err = cmdImpl.ProcessEndorsementOnly(*endorsementcon, *endorsementnum, *endorsementburst, *endorsementsignerNumber, *endorsementrate, logger)
case run.FullCommand():
checkArgs(rate, burst, logger)
checkArgs(rate, burst, signerNumber, logger)
err = cmdImpl.Process(*con, *num, *burst, *signerNumber, *rate, logger)
default:
err = errors.Errorf("invalid command: %s", fullCmd)
Expand All @@ -56,7 +77,7 @@ func main() {
os.Exit(0)
}

func checkArgs(rate *float64, burst *int, logger *log.Logger) {
func checkArgs(rate *float64, burst, signerNumber *int, logger *log.Logger) {
if *rate < 0 {
os.Stderr.WriteString("tape: error: rate must be zero (unlimited) or positive number\n")
os.Exit(1)
Expand Down
43 changes: 43 additions & 0 deletions e2e/commitOnly_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package e2e

import (
"io/ioutil"
"os/exec"

"tape/e2e/mock"

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gbytes"
"github.com/onsi/gomega/gexec"
)

var _ = Describe("Mock test for good path", func() {

Context("E2E with multi mocked Fabric", func() {
When("envelope only", func() {
It("should work properly", func() {
server, err := mock.NewServer(2, nil)
server.Start()
defer server.Stop()

config, err := ioutil.TempFile("", "envelop-only-config-*.yaml")
paddrs, oaddr := server.Addresses()
configValue := Values{
PrivSk: mtlsKeyFile.Name(),
SignCert: mtlsCertFile.Name(),
Mtls: false,
PeersAddrs: paddrs,
OrdererAddr: oaddr,
CommitThreshold: 1,
}
GenerateConfigFile(config.Name(), configValue)

cmd := exec.Command(tapeBin, "commitOnly", "-c", config.Name(), "-n", "500")
tapeSession, err = gexec.Start(cmd, nil, nil)
Expect(err).NotTo(HaveOccurred())
Eventually(tapeSession.Out).Should(Say("Time.*Block.*Tx.*"))
})
})
})
})
43 changes: 43 additions & 0 deletions e2e/endorsementOnly_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package e2e

import (
"io/ioutil"
"os/exec"

"tape/e2e/mock"

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gbytes"
"github.com/onsi/gomega/gexec"
)

var _ = Describe("Mock test for good path", func() {

Context("E2E with multi mocked Fabric", func() {
When("endorsement only", func() {
It("should work properly", func() {
server, err := mock.NewServer(2, nil)
server.Start()
defer server.Stop()

config, err := ioutil.TempFile("", "endorsement-only-config-*.yaml")
paddrs, oaddr := server.Addresses()
configValue := Values{
PrivSk: mtlsKeyFile.Name(),
SignCert: mtlsCertFile.Name(),
Mtls: false,
PeersAddrs: paddrs,
OrdererAddr: oaddr,
CommitThreshold: 1,
}
GenerateConfigFile(config.Name(), configValue)

cmd := exec.Command(tapeBin, "endorsementOnly", "-c", config.Name(), "-n", "500")
tapeSession, err = gexec.Start(cmd, nil, nil)
Expect(err).NotTo(HaveOccurred())
Eventually(tapeSession.Out).Should(Say("Time.*Tx.*"))
})
})
})
})
17 changes: 15 additions & 2 deletions e2e/mock/orderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric-protos-go/orderer"
"github.com/hyperledger/fabric/protoutil"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)
Expand All @@ -18,8 +19,20 @@ type Orderer struct {
TxCs []chan struct{}
}

func (o *Orderer) Deliver(orderer.AtomicBroadcast_DeliverServer) error {
panic("Not implemented")
func (o *Orderer) Deliver(srv orderer.AtomicBroadcast_DeliverServer) error {
_, err := srv.Recv()
if err != nil {
panic("expect no recv error")
}
for range o.TxCs {
o.cnt++
if o.cnt%10 == 0 {
srv.Send(&orderer.DeliverResponse{
Type: &orderer.DeliverResponse_Block{Block: protoutil.NewBlock(10, nil)},
})
}
}
return nil
}

func (o *Orderer) Broadcast(srv orderer.AtomicBroadcast_BroadcastServer) error {
Expand Down
11 changes: 5 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,24 @@ module tape
go 1.14

require (
github.com/Shopify/sarama v1.29.1 // indirect
github.com/gogo/protobuf v1.2.1
github.com/golang/protobuf v1.4.2
github.com/google/uuid v1.3.0
github.com/hashicorp/go-version v1.3.0 // indirect
github.com/hyperledger/fabric v2.1.1+incompatible
github.com/hyperledger/fabric-amcl v0.0.0-20210603140002-2670f91851c8 // indirect
github.com/hyperledger/fabric-protos-go v0.0.0-20200424173316-dd554ba3746e
github.com/hyperledger/fabric-sdk-go v1.0.0-beta1.0.20200317135226-e71412ff3db1
github.com/kr/pretty v0.2.0 // indirect
github.com/onsi/ginkgo v1.13.0
github.com/onsi/gomega v1.10.1
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.6.0
github.com/spf13/viper v1.4.0 // indirect
github.com/stretchr/testify v1.5.1 // indirect
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de // indirect
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed // indirect
github.com/sykesm/zap-logfmt v0.0.4 // indirect
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324
google.golang.org/genproto v0.0.0-20191028173616-919d9bdd9fe6 // indirect
google.golang.org/grpc v1.24.0
gopkg.in/alecthomas/kingpin.v2 v2.2.6
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/yaml.v2 v2.3.0
)
Loading

0 comments on commit cce0b93

Please sign in to comment.