@@ -21,6 +21,7 @@ import (
2121 "context"
2222 "database/sql"
2323 "errors"
24+ "sync"
2425 "testing"
2526 "time"
2627
@@ -36,6 +37,7 @@ import (
3637
3738// mockTCCFenceStore is a mock implementation of TCCFenceStore for testing
3839type mockTCCFenceStore struct {
40+ mu sync.RWMutex
3941 insertFunc func (tx * sql.Tx , tccFenceDo * model.TCCFenceDO ) error
4042 queryFunc func (tx * sql.Tx , xid string , branchId int64 ) (* model.TCCFenceDO , error )
4143 updateFunc func (tx * sql.Tx , xid string , branchId int64 , oldStatus enum.FenceStatus , newStatus enum.FenceStatus ) error
@@ -46,48 +48,62 @@ type mockTCCFenceStore struct {
4648}
4749
4850func (m * mockTCCFenceStore ) InsertTCCFenceDO (tx * sql.Tx , tccFenceDo * model.TCCFenceDO ) error {
51+ m .mu .RLock ()
52+ defer m .mu .RUnlock ()
4953 if m .insertFunc != nil {
5054 return m .insertFunc (tx , tccFenceDo )
5155 }
5256 return nil
5357}
5458
5559func (m * mockTCCFenceStore ) QueryTCCFenceDO (tx * sql.Tx , xid string , branchId int64 ) (* model.TCCFenceDO , error ) {
60+ m .mu .RLock ()
61+ defer m .mu .RUnlock ()
5662 if m .queryFunc != nil {
5763 return m .queryFunc (tx , xid , branchId )
5864 }
5965 return nil , nil
6066}
6167
6268func (m * mockTCCFenceStore ) UpdateTCCFenceDO (tx * sql.Tx , xid string , branchId int64 , oldStatus enum.FenceStatus , newStatus enum.FenceStatus ) error {
69+ m .mu .RLock ()
70+ defer m .mu .RUnlock ()
6371 if m .updateFunc != nil {
6472 return m .updateFunc (tx , xid , branchId , oldStatus , newStatus )
6573 }
6674 return nil
6775}
6876
6977func (m * mockTCCFenceStore ) DeleteTCCFenceDO (tx * sql.Tx , xid string , branchId int64 ) error {
78+ m .mu .RLock ()
79+ defer m .mu .RUnlock ()
7080 if m .deleteFunc != nil {
7181 return m .deleteFunc (tx , xid , branchId )
7282 }
7383 return nil
7484}
7585
7686func (m * mockTCCFenceStore ) DeleteMultipleTCCFenceLogIdentity (tx * sql.Tx , identity []model.FenceLogIdentity ) error {
87+ m .mu .RLock ()
88+ defer m .mu .RUnlock ()
7789 if m .deleteMultipleFunc != nil {
7890 return m .deleteMultipleFunc (tx , identity )
7991 }
8092 return nil
8193}
8294
8395func (m * mockTCCFenceStore ) DeleteTCCFenceDOByMdfDate (tx * sql.Tx , datetime time.Time , limit int32 ) (int64 , error ) {
96+ m .mu .RLock ()
97+ defer m .mu .RUnlock ()
8498 if m .deleteTCCFenceDOByMdfDateFunc != nil {
8599 return m .deleteTCCFenceDOByMdfDateFunc (tx , datetime , limit )
86100 }
87101 return 0 , nil
88102}
89103
90104func (m * mockTCCFenceStore ) QueryTCCFenceLogIdentityByMdDate (tx * sql.Tx , datetime time.Time ) ([]model.FenceLogIdentity , error ) {
105+ m .mu .RLock ()
106+ defer m .mu .RUnlock ()
91107 if m .queryTCCFenceLogIdentityByMdDate != nil {
92108 return m .queryTCCFenceLogIdentityByMdDate (tx , datetime )
93109 }
0 commit comments