diff --git a/test/busi/barrier.go b/test/busi/barrier.go index 7a44ed6..81e7897 100644 --- a/test/busi/barrier.go +++ b/test/busi/barrier.go @@ -148,8 +148,34 @@ func (s *busiServer) TransOutRevertBSaga(ctx context.Context, in *BusiReq) (*emp }) } +func (s *busiServer) TransInRedis(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { + barrier := MustBarrierFromGrpc(ctx) + return &emptypb.Empty{}, barrier.RedisCheckAdjustAmount(RedisGet(), GetRedisAccountKey(TransInUID), int(in.Amount), 86400) +} + +func (s *busiServer) TransOutRedis(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { + barrier := MustBarrierFromGrpc(ctx) + return &emptypb.Empty{}, barrier.RedisCheckAdjustAmount(RedisGet(), GetRedisAccountKey(TransOutUID), int(-in.Amount), 86400) +} + +func (s *busiServer) TransInRevertRedis(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { + barrier := MustBarrierFromGrpc(ctx) + return &emptypb.Empty{}, barrier.RedisCheckAdjustAmount(RedisGet(), GetRedisAccountKey(TransInUID), -int(in.Amount), 86400) +} + +func (s *busiServer) TransOutRevertRedis(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { + barrier := MustBarrierFromGrpc(ctx) + return &emptypb.Empty{}, barrier.RedisCheckAdjustAmount(RedisGet(), GetRedisAccountKey(TransOutUID), int(in.Amount), 86400) +} + func (s *busiServer) QueryPreparedB(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { barrier := MustBarrierFromGrpc(ctx) err := barrier.QueryPrepared(dbGet().ToSQLDB()) return &emptypb.Empty{}, dtmgrpc.DtmError2GrpcError(err) } + +func (s *busiServer) QueryPreparedRedis(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { + barrier := MustBarrierFromGrpc(ctx) + err := barrier.RedisQueryPrepared(RedisGet(), 86400) + return &emptypb.Empty{}, dtmgrpc.DtmError2GrpcError(err) +} diff --git a/test/busi/busi.pb.go b/test/busi/busi.pb.go index c152e5a..09b8d85 100644 --- a/test/busi/busi.pb.go +++ b/test/busi/busi.pb.go @@ -148,7 +148,7 @@ var file_test_busi_busi_proto_rawDesc = []byte{ 0x6e, 0x73, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x25, 0x0a, 0x09, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x32, 0xcc, 0x09, 0x0a, 0x04, 0x42, 0x75, 0x73, 0x69, 0x12, 0x32, 0x0a, 0x07, 0x54, 0x72, + 0x65, 0x32, 0xbe, 0x0b, 0x0a, 0x04, 0x42, 0x75, 0x73, 0x69, 0x12, 0x32, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x49, 0x6e, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x33, @@ -214,19 +214,34 @@ var file_test_busi_busi_proto_rawDesc = []byte{ 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x6f, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x65, 0x70, - 0x61, 0x72, 0x65, 0x64, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, - 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x64, 0x42, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, - 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x3d, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, - 0x65, 0x64, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, - 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x62, 0x75, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x79, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x49, 0x6e, 0x52, 0x65, + 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, + 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, + 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x49, + 0x6e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, 0x62, + 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x4f, 0x75, + 0x74, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, 0x62, + 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, + 0x65, 0x70, 0x61, 0x72, 0x65, 0x64, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, + 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x62, 0x75, 0x73, 0x69, 0x2e, 0x42, 0x75, 0x73, + 0x69, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x64, 0x42, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, + 0x69, 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x64, 0x69, 0x73, 0x12, 0x0d, 0x2e, 0x62, 0x75, 0x73, 0x69, + 0x2e, 0x42, 0x75, 0x73, 0x69, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x62, 0x75, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -266,32 +281,40 @@ var file_test_busi_busi_proto_depIdxs = []int32{ 0, // 15: busi.Busi.TransOutRevertBSaga:input_type -> busi.BusiReq 0, // 16: busi.Busi.TransOutHeaderYes:input_type -> busi.BusiReq 0, // 17: busi.Busi.TransOutHeaderNo:input_type -> busi.BusiReq - 0, // 18: busi.Busi.QueryPrepared:input_type -> busi.BusiReq - 0, // 19: busi.Busi.QueryPreparedB:input_type -> busi.BusiReq - 0, // 20: busi.Busi.QueryPreparedRedis:input_type -> busi.BusiReq - 2, // 21: busi.Busi.TransIn:output_type -> google.protobuf.Empty - 2, // 22: busi.Busi.TransOut:output_type -> google.protobuf.Empty - 2, // 23: busi.Busi.TransInRevert:output_type -> google.protobuf.Empty - 2, // 24: busi.Busi.TransOutRevert:output_type -> google.protobuf.Empty - 2, // 25: busi.Busi.TransInConfirm:output_type -> google.protobuf.Empty - 2, // 26: busi.Busi.TransOutConfirm:output_type -> google.protobuf.Empty - 2, // 27: busi.Busi.XaNotify:output_type -> google.protobuf.Empty - 2, // 28: busi.Busi.TransInXa:output_type -> google.protobuf.Empty - 2, // 29: busi.Busi.TransOutXa:output_type -> google.protobuf.Empty - 2, // 30: busi.Busi.TransInTcc:output_type -> google.protobuf.Empty - 2, // 31: busi.Busi.TransOutTcc:output_type -> google.protobuf.Empty - 2, // 32: busi.Busi.TransInTccNested:output_type -> google.protobuf.Empty - 2, // 33: busi.Busi.TransInBSaga:output_type -> google.protobuf.Empty - 2, // 34: busi.Busi.TransOutBSaga:output_type -> google.protobuf.Empty - 2, // 35: busi.Busi.TransInRevertBSaga:output_type -> google.protobuf.Empty - 2, // 36: busi.Busi.TransOutRevertBSaga:output_type -> google.protobuf.Empty - 2, // 37: busi.Busi.TransOutHeaderYes:output_type -> google.protobuf.Empty - 2, // 38: busi.Busi.TransOutHeaderNo:output_type -> google.protobuf.Empty - 1, // 39: busi.Busi.QueryPrepared:output_type -> busi.BusiReply - 2, // 40: busi.Busi.QueryPreparedB:output_type -> google.protobuf.Empty - 2, // 41: busi.Busi.QueryPreparedRedis:output_type -> google.protobuf.Empty - 21, // [21:42] is the sub-list for method output_type - 0, // [0:21] is the sub-list for method input_type + 0, // 18: busi.Busi.TransInRedis:input_type -> busi.BusiReq + 0, // 19: busi.Busi.TransOutRedis:input_type -> busi.BusiReq + 0, // 20: busi.Busi.TransInRevertRedis:input_type -> busi.BusiReq + 0, // 21: busi.Busi.TransOutRevertRedis:input_type -> busi.BusiReq + 0, // 22: busi.Busi.QueryPrepared:input_type -> busi.BusiReq + 0, // 23: busi.Busi.QueryPreparedB:input_type -> busi.BusiReq + 0, // 24: busi.Busi.QueryPreparedRedis:input_type -> busi.BusiReq + 2, // 25: busi.Busi.TransIn:output_type -> google.protobuf.Empty + 2, // 26: busi.Busi.TransOut:output_type -> google.protobuf.Empty + 2, // 27: busi.Busi.TransInRevert:output_type -> google.protobuf.Empty + 2, // 28: busi.Busi.TransOutRevert:output_type -> google.protobuf.Empty + 2, // 29: busi.Busi.TransInConfirm:output_type -> google.protobuf.Empty + 2, // 30: busi.Busi.TransOutConfirm:output_type -> google.protobuf.Empty + 2, // 31: busi.Busi.XaNotify:output_type -> google.protobuf.Empty + 2, // 32: busi.Busi.TransInXa:output_type -> google.protobuf.Empty + 2, // 33: busi.Busi.TransOutXa:output_type -> google.protobuf.Empty + 2, // 34: busi.Busi.TransInTcc:output_type -> google.protobuf.Empty + 2, // 35: busi.Busi.TransOutTcc:output_type -> google.protobuf.Empty + 2, // 36: busi.Busi.TransInTccNested:output_type -> google.protobuf.Empty + 2, // 37: busi.Busi.TransInBSaga:output_type -> google.protobuf.Empty + 2, // 38: busi.Busi.TransOutBSaga:output_type -> google.protobuf.Empty + 2, // 39: busi.Busi.TransInRevertBSaga:output_type -> google.protobuf.Empty + 2, // 40: busi.Busi.TransOutRevertBSaga:output_type -> google.protobuf.Empty + 2, // 41: busi.Busi.TransOutHeaderYes:output_type -> google.protobuf.Empty + 2, // 42: busi.Busi.TransOutHeaderNo:output_type -> google.protobuf.Empty + 2, // 43: busi.Busi.TransInRedis:output_type -> google.protobuf.Empty + 2, // 44: busi.Busi.TransOutRedis:output_type -> google.protobuf.Empty + 2, // 45: busi.Busi.TransInRevertRedis:output_type -> google.protobuf.Empty + 2, // 46: busi.Busi.TransOutRevertRedis:output_type -> google.protobuf.Empty + 1, // 47: busi.Busi.QueryPrepared:output_type -> busi.BusiReply + 2, // 48: busi.Busi.QueryPreparedB:output_type -> google.protobuf.Empty + 2, // 49: busi.Busi.QueryPreparedRedis:output_type -> google.protobuf.Empty + 25, // [25:50] is the sub-list for method output_type + 0, // [0:25] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/test/busi/busi.proto b/test/busi/busi.proto index 039ac64..72a92b6 100644 --- a/test/busi/busi.proto +++ b/test/busi/busi.proto @@ -37,6 +37,12 @@ service Busi { rpc TransOutRevertBSaga(BusiReq) returns (google.protobuf.Empty) {} rpc TransOutHeaderYes(BusiReq) returns (google.protobuf.Empty) {} rpc TransOutHeaderNo(BusiReq) returns (google.protobuf.Empty) {} + + rpc TransInRedis(BusiReq) returns (google.protobuf.Empty) {} + rpc TransOutRedis(BusiReq) returns (google.protobuf.Empty) {} + rpc TransInRevertRedis(BusiReq) returns (google.protobuf.Empty) {} + rpc TransOutRevertRedis(BusiReq) returns (google.protobuf.Empty) {} + rpc QueryPrepared(BusiReq) returns (BusiReply) {} rpc QueryPreparedB(BusiReq) returns (google.protobuf.Empty) {} rpc QueryPreparedRedis(BusiReq) returns (google.protobuf.Empty) {} diff --git a/test/busi/busi_grpc.pb.go b/test/busi/busi_grpc.pb.go index 177a726..9235453 100644 --- a/test/busi/busi_grpc.pb.go +++ b/test/busi/busi_grpc.pb.go @@ -37,6 +37,10 @@ type BusiClient interface { TransOutRevertBSaga(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) TransOutHeaderYes(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) TransOutHeaderNo(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) + TransInRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) + TransOutRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) + TransInRevertRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) + TransOutRevertRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) QueryPrepared(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*BusiReply, error) QueryPreparedB(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) QueryPreparedRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) @@ -212,6 +216,42 @@ func (c *busiClient) TransOutHeaderNo(ctx context.Context, in *BusiReq, opts ... return out, nil } +func (c *busiClient) TransInRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/busi.Busi/TransInRedis", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *busiClient) TransOutRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/busi.Busi/TransOutRedis", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *busiClient) TransInRevertRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/busi.Busi/TransInRevertRedis", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *busiClient) TransOutRevertRedis(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/busi.Busi/TransOutRevertRedis", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *busiClient) QueryPrepared(ctx context.Context, in *BusiReq, opts ...grpc.CallOption) (*BusiReply, error) { out := new(BusiReply) err := c.cc.Invoke(ctx, "/busi.Busi/QueryPrepared", in, out, opts...) @@ -261,6 +301,10 @@ type BusiServer interface { TransOutRevertBSaga(context.Context, *BusiReq) (*emptypb.Empty, error) TransOutHeaderYes(context.Context, *BusiReq) (*emptypb.Empty, error) TransOutHeaderNo(context.Context, *BusiReq) (*emptypb.Empty, error) + TransInRedis(context.Context, *BusiReq) (*emptypb.Empty, error) + TransOutRedis(context.Context, *BusiReq) (*emptypb.Empty, error) + TransInRevertRedis(context.Context, *BusiReq) (*emptypb.Empty, error) + TransOutRevertRedis(context.Context, *BusiReq) (*emptypb.Empty, error) QueryPrepared(context.Context, *BusiReq) (*BusiReply, error) QueryPreparedB(context.Context, *BusiReq) (*emptypb.Empty, error) QueryPreparedRedis(context.Context, *BusiReq) (*emptypb.Empty, error) @@ -325,6 +369,18 @@ func (UnimplementedBusiServer) TransOutHeaderYes(context.Context, *BusiReq) (*em func (UnimplementedBusiServer) TransOutHeaderNo(context.Context, *BusiReq) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method TransOutHeaderNo not implemented") } +func (UnimplementedBusiServer) TransInRedis(context.Context, *BusiReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransInRedis not implemented") +} +func (UnimplementedBusiServer) TransOutRedis(context.Context, *BusiReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransOutRedis not implemented") +} +func (UnimplementedBusiServer) TransInRevertRedis(context.Context, *BusiReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransInRevertRedis not implemented") +} +func (UnimplementedBusiServer) TransOutRevertRedis(context.Context, *BusiReq) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransOutRevertRedis not implemented") +} func (UnimplementedBusiServer) QueryPrepared(context.Context, *BusiReq) (*BusiReply, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryPrepared not implemented") } @@ -671,6 +727,78 @@ func _Busi_TransOutHeaderNo_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _Busi_TransInRedis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BusiReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusiServer).TransInRedis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/busi.Busi/TransInRedis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusiServer).TransInRedis(ctx, req.(*BusiReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Busi_TransOutRedis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BusiReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusiServer).TransOutRedis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/busi.Busi/TransOutRedis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusiServer).TransOutRedis(ctx, req.(*BusiReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Busi_TransInRevertRedis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BusiReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusiServer).TransInRevertRedis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/busi.Busi/TransInRevertRedis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusiServer).TransInRevertRedis(ctx, req.(*BusiReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Busi_TransOutRevertRedis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BusiReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BusiServer).TransOutRevertRedis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/busi.Busi/TransOutRevertRedis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BusiServer).TransOutRevertRedis(ctx, req.(*BusiReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Busi_QueryPrepared_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(BusiReq) if err := dec(in); err != nil { @@ -804,6 +932,22 @@ var Busi_ServiceDesc = grpc.ServiceDesc{ MethodName: "TransOutHeaderNo", Handler: _Busi_TransOutHeaderNo_Handler, }, + { + MethodName: "TransInRedis", + Handler: _Busi_TransInRedis_Handler, + }, + { + MethodName: "TransOutRedis", + Handler: _Busi_TransOutRedis_Handler, + }, + { + MethodName: "TransInRevertRedis", + Handler: _Busi_TransInRevertRedis_Handler, + }, + { + MethodName: "TransOutRevertRedis", + Handler: _Busi_TransOutRevertRedis_Handler, + }, { MethodName: "QueryPrepared", Handler: _Busi_QueryPrepared_Handler, diff --git a/test/msg_grpc_barrier_redis_test.go b/test/msg_grpc_barrier_redis_test.go new file mode 100644 index 0000000..c3b2d1f --- /dev/null +++ b/test/msg_grpc_barrier_redis_test.go @@ -0,0 +1,83 @@ +package test + +import ( + "errors" + "testing" + + "github.com/dtm-labs/dtm/dtmcli" + "github.com/dtm-labs/dtm/dtmcli/dtmimp" + "github.com/dtm-labs/dtm/dtmgrpc" + "github.com/dtm-labs/dtm/test/busi" + "github.com/stretchr/testify/assert" +) + +func TestMsgGrpcRedisDo(t *testing.T) { + before := getBeforeBalances("redis") + gid := dtmimp.GetFuncName() + req := busi.GenBusiReq(30, false, false) + msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). + Add(busi.BusiGrpc+"/busi.Busi/TransInRedis", req) + err := msg.DoAndSubmit(busi.BusiGrpc+"/busi.Busi/QueryPreparedRedis", func(bb *dtmcli.BranchBarrier) error { + return bb.RedisCheckAdjustAmount(busi.RedisGet(), busi.GetRedisAccountKey(busi.TransOutUID), -30, 86400) + }) + assert.Nil(t, err) + waitTransProcessed(msg.Gid) + assert.Equal(t, []string{StatusSucceed}, getBranchesStatus(msg.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) + assertNotSameBalance(t, before, "redis") +} + +func TestMsgGrpcRedisDoBusiFailed(t *testing.T) { + before := getBeforeBalances("redis") + gid := dtmimp.GetFuncName() + req := busi.GenBusiReq(30, false, false) + msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). + Add(busi.BusiGrpc+"/busi.Busi/TransInRedis", req) + err := msg.DoAndSubmit(busi.BusiGrpc+"/busi.Busi/QueryPreparedRedis", func(bb *dtmcli.BranchBarrier) error { + return errors.New("an error") + }) + assert.Error(t, err) + assertSameBalance(t, before, "redis") +} + +func TestMsgGrpcRedisDoPrepareFailed(t *testing.T) { + before := getBeforeBalances("redis") + gid := dtmimp.GetFuncName() + req := busi.GenBusiReq(30, false, false) + msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer+"not-exists", gid). + Add(busi.BusiGrpc+"/busi.Busi/TransInRedis", req) + err := msg.DoAndSubmit(busi.BusiGrpc+"/busi.Busi/QueryPreparedRedis", func(bb *dtmcli.BranchBarrier) error { + return bb.RedisCheckAdjustAmount(busi.RedisGet(), busi.GetRedisAccountKey(busi.TransOutUID), -30, 86400) + }) + assert.Error(t, err) + assertSameBalance(t, before, "redis") +} + +func TestMsgGrpcRedisDoCommitFailed(t *testing.T) { + before := getBeforeBalances("redis") + gid := dtmimp.GetFuncName() + req := busi.GenBusiReq(30, false, false) + msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). + Add(busi.BusiGrpc+"/busi.Busi/TransInRedis", req) + err := msg.DoAndSubmit(busi.BusiGrpc+"/busi.Busi/QueryPreparedRedis", func(bb *dtmcli.BranchBarrier) error { + return errors.New("after commit error") + }) + assert.Error(t, err) + assertSameBalance(t, before, "redis") +} + +func TestMsgGrpcRedisDoCommitAfterFailed(t *testing.T) { + before := getBeforeBalances("redis") + gid := dtmimp.GetFuncName() + req := busi.GenBusiReq(30, false, false) + msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). + Add(busi.BusiGrpc+"/busi.Busi/TransInRedis", req) + err := msg.DoAndSubmit(busi.BusiGrpc+"/busi.Busi/QueryPreparedRedis", func(bb *dtmcli.BranchBarrier) error { + err := bb.RedisCheckAdjustAmount(busi.RedisGet(), busi.GetRedisAccountKey(busi.TransOutUID), -30, 86400) + dtmimp.E2P(err) + return errors.New("an error") + }) + assert.Error(t, err) + waitTransProcessed(gid) + assertNotSameBalance(t, before, "redis") +}