diff --git a/integration/gateway/gateway_bft_test.go b/integration/gateway/gateway_bft_test.go index e8c39fd79a4..8971d109038 100644 --- a/integration/gateway/gateway_bft_test.go +++ b/integration/gateway/gateway_bft_test.go @@ -112,9 +112,6 @@ 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() @@ -122,6 +119,9 @@ var _ = Describe("GatewayService with BFT ordering service", func() { 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()) @@ -141,18 +141,20 @@ 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") @@ -160,8 +162,10 @@ var _ = Describe("GatewayService with BFT ordering service", func() { 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")) @@ -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"))) }) })