You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2020/01/14 11:33:55 UTC
[servicecomb-pack] 06/08: SCB-1696 Added compensation failure test
cases
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git
commit a448291d61640a8360085688de4bd8c9995a4a9d
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Mon Jan 13 02:15:27 2020 +0800
SCB-1696 Added compensation failure test cases
---
.../alpha_records_transaction_events.feature | 34 +++++++++++++++++---
.../test/resources/car_compensate_failed_retry.btm | 36 ++++++++++++++++++++++
2 files changed, 66 insertions(+), 4 deletions(-)
diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature
index 1e914b5..4f0aa48 100644
--- a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature
+++ b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/alpha_records_transaction_events.feature
@@ -57,7 +57,7 @@ Feature: Alpha records transaction events
| car | TxStartedEvent |
| car | TxEndedEvent |
| booking | SagaAbortedEvent |
- | car | TxCompensatedEvent |
+ | car | TxCompensateAckSucceedEvent |
Then Car Service contains the following booking orders
| id | name | amount | confirmed | cancelled |
@@ -84,8 +84,8 @@ Feature: Alpha records transaction events
| hotel | TxStartedEvent |
| hotel | TxEndedEvent |
| booking | SagaAbortedEvent |
- | hotel | TxCompensatedEvent |
- | car | TxCompensatedEvent |
+ | hotel | TxCompensateAckSucceedEvent |
+ | car | TxCompensateAckSucceedEvent |
Then Car Service contains the following booking orders
| id | name | amount | confirmed | cancelled |
@@ -159,11 +159,37 @@ Feature: Alpha records transaction events
| hotel | TxStartedEvent |
| hotel | TxAbortedEvent |
| booking | SagaAbortedEvent |
- | car | TxCompensatedEvent |
+ | car | TxCompensateAckSucceedEvent |
Then Car Service contains the following booking orders
| id | name | amount | confirmed | cancelled |
| 1 | Sean | 5 | false | true |
Then Hotel Service contains the following booking orders
+ | id | name | amount | confirmed | cancelled |
+
+ Scenario: 7.Hotel sub-transaction failed and Car sub-transaction compensate failed and global transaction suspended
+ Given Car Service is up and running
+ And Hotel Service is up and running
+ And Booking Service is up and running
+ And Alpha is up and running
+ Given Install the byteman script car_compensate_failed_retry.btm to Car Service
+ When User Sean requests to book 5 cars and 3 rooms fail
+ Then Alpha records the following events
+ | serviceName | type |
+ | booking | SagaStartedEvent |
+ | car | TxStartedEvent |
+ | car | TxEndedEvent |
+ | hotel | TxStartedEvent |
+ | hotel | TxAbortedEvent |
+ | booking | SagaAbortedEvent |
+ | car | TxCompensateAckFailedEvent |
+ | car | TxCompensateAckFailedEvent |
+ | car | TxCompensateAckFailedEvent |
+
+ Then Car Service contains the following booking orders
+ | id | name | amount | confirmed | cancelled |
+ | 1 | Sean | 5 | true | false |
+
+ Then Hotel Service contains the following booking orders
| id | name | amount | confirmed | cancelled |
\ No newline at end of file
diff --git a/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/car_compensate_failed_retry.btm b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/car_compensate_failed_retry.btm
new file mode 100644
index 0000000..f79e00e
--- /dev/null
+++ b/acceptance-tests/acceptance-pack-akka-spring-demo/src/test/resources/car_compensate_failed_retry.btm
@@ -0,0 +1,36 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+##############################################################
+# rules to compensable failed after car order failed
+#
+###############################################################
+
+RULE set_the_compensable_reverseretries_to_3
+INTERFACE org.apache.servicecomb.pack.omega.transaction.annotations.Compensable
+METHOD reverseRetries
+AT EXIT
+IF TRUE
+DO RETURN 3
+ENDRULE
+
+RULE car_cancel_exception
+CLASS org.apache.servicecomb.pack.demo.car.CarBookingService
+METHOD cancel
+AT ENTRY
+IF TRUE
+DO debug("throw RuntimeException here"),
+ throw new RuntimeException("Car cancel failed!")
+ENDRULE