Skip to content

Commit

Permalink
refactor gateway bft test
Browse files Browse the repository at this point in the history
Signed-off-by: Fedor Partanskiy <pfi79@mail.ru>
  • Loading branch information
pfi79 committed Jan 22, 2024
1 parent ef20365 commit 45c07f6
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions integration/gateway/gateway_bft_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,16 +112,16 @@ var _ = Describe("GatewayService with BFT ordering service", func() {
})

It("Submit transaction", func() {
ctx, cancel := context.WithTimeout(context.Background(), network.EventuallyTimeout*2)
defer cancel()

org1Peer0 := network.Peer("Org1", "peer0")
conn := network.PeerClientConn(org1Peer0)
defer conn.Close()
gw := gateway.NewGatewayClient(conn)
signer := network.PeerUserSigner(org1Peer0, "User1")

By("Submitting a new transaction")
ctx, cancel := context.WithTimeout(context.Background(), network.EventuallyTimeout)
defer cancel()

submitRequest := prepareTransaction(ctx, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err := gw.Submit(ctx, submitRequest)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -141,27 +141,31 @@ var _ = Describe("GatewayService with BFT ordering service", func() {
Expect(rpcErr.Details()[0].(*gateway.ErrorDetail).Message).To(Equal("received unsuccessful response from orderer: status=SERVICE_UNAVAILABLE, info=failed to submit request: request already processed"))

By("Shutting down orderer2")
ctx2, cancel2 := context.WithTimeout(context.Background(), network.EventuallyTimeout)
defer cancel2()
ordererProcesses["orderer2"].Signal(syscall.SIGTERM)
Eventually(ordererProcesses["orderer2"].Wait(), network.EventuallyTimeout).Should(Receive())

By("Submitting a new transaction")
submitRequest = prepareTransaction(ctx, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx, submitRequest)
submitRequest = prepareTransaction(ctx2, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx2, submitRequest)
Expect(err).NotTo(HaveOccurred())

waitForCommit(ctx, gw, signer, channel, submitRequest.TransactionId)
waitForCommit(ctx2, gw, signer, channel, submitRequest.TransactionId)

By("Checking the ledger state")
result = evaluateTransaction(ctx, gw, signer, channel, "gatewaycc", "query", []string{"a"})
result = evaluateTransaction(ctx2, gw, signer, channel, "gatewaycc", "query", []string{"a"})
Expect(result.Payload).To(Equal([]byte("80")))

By("Shutting down orderer1 - no longer quorate")
ordererProcesses["orderer1"].Signal(syscall.SIGTERM)
Eventually(ordererProcesses["orderer1"].Wait(), network.EventuallyTimeout).Should(Receive())

By("Submitting a new transaction")
submitRequest = prepareTransaction(ctx, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx, submitRequest)
ctx3, cancel3 := context.WithTimeout(context.Background(), network.EventuallyTimeout*2)
defer cancel3()
submitRequest = prepareTransaction(ctx3, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx3, submitRequest)
Expect(err).To(HaveOccurred())
rpcErr = status.Convert(err)
Expect(rpcErr.Message()).To(Equal("insufficient number of orderers could successfully process transaction to satisfy quorum requirement"))
Expand All @@ -181,23 +185,25 @@ var _ = Describe("GatewayService with BFT ordering service", func() {
Eventually(peerGinkgoRunner[0].Err(), network.EventuallyTimeout, time.Second).Should(gbytes.Say(fmt.Sprintf("%s, \\{READY", needAdr)))

By("Resubmitting the same transaction")
_, err = gw.Submit(ctx, submitRequest)
_, err = gw.Submit(ctx3, submitRequest)
Expect(err).NotTo(HaveOccurred())
waitForCommit(ctx, gw, signer, channel, submitRequest.TransactionId)
waitForCommit(ctx3, gw, signer, channel, submitRequest.TransactionId)

By("Checking the ledger state")
result = evaluateTransaction(ctx, gw, signer, channel, "gatewaycc", "query", []string{"a"})
result = evaluateTransaction(ctx3, gw, signer, channel, "gatewaycc", "query", []string{"a"})
Expect(result.Payload).To(Equal([]byte("70")))

By("Submitting a new transaction")
submitRequest = prepareTransaction(ctx, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx, submitRequest)
ctx4, cancel4 := context.WithTimeout(context.Background(), network.EventuallyTimeout)
defer cancel4()
submitRequest = prepareTransaction(ctx4, gw, signer, channel, "gatewaycc", "invoke", []string{"a", "b", "10"})
_, err = gw.Submit(ctx4, submitRequest)
Expect(err).NotTo(HaveOccurred())

waitForCommit(ctx, gw, signer, channel, submitRequest.TransactionId)
waitForCommit(ctx4, gw, signer, channel, submitRequest.TransactionId)

By("Checking the ledger state")
result = evaluateTransaction(ctx, gw, signer, channel, "gatewaycc", "query", []string{"a"})
result = evaluateTransaction(ctx4, gw, signer, channel, "gatewaycc", "query", []string{"a"})
Expect(result.Payload).To(Equal([]byte("60")))
})
})
Expand Down

0 comments on commit 45c07f6

Please sign in to comment.