@@ -8,13 +8,14 @@ package auditor_test
88
99import (
1010 "context"
11- "errors"
11+ stderrors "errors"
1212 "io"
1313 "math"
1414 "math/rand/v2"
1515 "testing"
1616 "time"
1717
18+ "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
1819 "github.com/hyperledger-labs/fabric-token-sdk/token"
1920 drivermock "github.com/hyperledger-labs/fabric-token-sdk/token/driver/mock"
2021 tokenmock "github.com/hyperledger-labs/fabric-token-sdk/token/mock"
@@ -157,7 +158,7 @@ func TestService_Check_ReturnsIssues(t *testing.T) {
157158}
158159
159160func TestService_Check_ReturnsError (t * testing.T ) {
160- expectedErr := errors .New ("check failed" )
161+ expectedErr := stderrors .New ("check failed" )
161162 cs := & auditmock.CheckService {}
162163 cs .CheckReturns (nil , expectedErr )
163164 svc := newTestService (newTestStoreService (t , newFakeStore ()), cs )
@@ -184,7 +185,7 @@ func TestGet_NilWallet_ReturnsNil(t *testing.T) {
184185}
185186
186187func TestGetByTMSID_GetServiceError_ReturnsNil (t * testing.T ) {
187- sp := & fakeServiceProvider {err : errors .New ("registry lookup failed" )}
188+ sp := & fakeServiceProvider {err : stderrors .New ("registry lookup failed" )}
188189 tmsID := token.TMSID {Network : "net" , Channel : "ch" , Namespace : "ns" }
189190 got := auditor .GetByTMSID (sp , tmsID )
190191 assert .Nil (t , got )
@@ -211,7 +212,7 @@ func TestService_SetStatus_Success(t *testing.T) {
211212}
212213
213214func TestService_SetStatus_Error (t * testing.T ) {
214- expectedErr := errors .New ("db write error" )
215+ expectedErr := stderrors .New ("db write error" )
215216 fakeStore := newFakeStore ()
216217 fakeStore .SetStatusReturns (expectedErr )
217218 svc := newTestService (newTestStoreService (t , fakeStore ), nil )
@@ -230,7 +231,7 @@ func TestService_GetStatus_Success(t *testing.T) {
230231}
231232
232233func TestService_GetStatus_Error (t * testing.T ) {
233- expectedErr := errors .New ("db read error" )
234+ expectedErr := stderrors .New ("db read error" )
234235 fakeStore := newFakeStore ()
235236 fakeStore .GetStatusReturns (0 , "" , expectedErr )
236237 svc := newTestService (newTestStoreService (t , fakeStore ), nil )
@@ -249,7 +250,7 @@ func TestService_GetTokenRequest_Success(t *testing.T) {
249250}
250251
251252func TestService_GetTokenRequest_Error (t * testing.T ) {
252- expectedErr := errors .New ("not found" )
253+ expectedErr := stderrors .New ("not found" )
253254 fakeStore := newFakeStore ()
254255 fakeStore .GetTokenRequestReturns (nil , expectedErr )
255256 svc := newTestService (newTestStoreService (t , fakeStore ), nil )
@@ -315,7 +316,7 @@ func TestService_Audit_Success(t *testing.T) {
315316
316317func TestService_Audit_DBCleanSuccess (t * testing.T ) {
317318 fakeStore := newFakeStore ()
318- fakeStore .GetStatusReturns (0 , "" , errors .New ("db status err" ))
319+ fakeStore .GetStatusReturns (0 , "" , stderrors .New ("db status err" ))
319320
320321 svc := newTestService (newTestStoreService (t , fakeStore ), nil )
321322 tx := & auditmock.Transaction {}
@@ -345,7 +346,7 @@ func TestService_Audit_NotUnknown(t *testing.T) {
345346
346347func TestService_Audit_TMSProviderIrrelevant (t * testing.T ) {
347348 tmsProv := & depmock.TokenManagementServiceProvider {}
348- tmsProv .TokenManagementServiceReturns (nil , errors .New ("tms err" ))
349+ tmsProv .TokenManagementServiceReturns (nil , stderrors .New ("tms err" ))
349350
350351 svc := auditor .NewService (
351352 token.TMSID {}, nil ,
@@ -368,7 +369,7 @@ func TestService_Audit_TMSProviderIrrelevant(t *testing.T) {
368369
369370func TestService_Append_Error_TMSProvider (t * testing.T ) {
370371 tmsProv := & depmock.TokenManagementServiceProvider {}
371- tmsProv .TokenManagementServiceReturns (nil , errors .New ("tms err" ))
372+ tmsProv .TokenManagementServiceReturns (nil , stderrors .New ("tms err" ))
372373
373374 svc := auditor .NewService (
374375 token.TMSID {}, nil ,
@@ -386,7 +387,7 @@ func TestService_Append_Error_TMSProvider(t *testing.T) {
386387
387388func TestService_Append_GetNetworkError (t * testing.T ) {
388389 netProvider := & auditmock.NetworkProvider {}
389- netProvider .GetNetworkReturns (nil , errors .New ("network unavailable" ))
390+ netProvider .GetNetworkReturns (nil , stderrors .New ("network unavailable" ))
390391
391392 svc := auditor .NewService (
392393 token.TMSID {}, netProvider ,
@@ -427,7 +428,7 @@ func TestService_Append_Success(t *testing.T) {
427428
428429func TestService_Append_AddFinalityListenerError (t * testing.T ) {
429430 fakeNet := & auditmock.Network {}
430- fakeNet .AddFinalityListenerReturns (errors .New ("listener fail" ))
431+ fakeNet .AddFinalityListenerReturns (stderrors .New ("listener fail" ))
431432
432433 netProvider := & auditmock.NetworkProvider {}
433434 netProvider .GetNetworkReturns (network .NewNetwork (fakeNet , nil ), nil )
@@ -453,7 +454,7 @@ func TestService_Append_AuditError(t *testing.T) {
453454 fakeStore := newFakeStore ()
454455 fakeStore .NewTransactionStoreTransactionStub = func () (dbdriver.TransactionStoreTransaction , error ) {
455456 fakeAW := & auditmock.TransactionStoreTransaction {}
456- fakeAW .CommitReturns (errors .New ("db append err" ))
457+ fakeAW .CommitReturns (stderrors .New ("db append err" ))
457458
458459 return fakeAW , nil
459460 }
@@ -498,13 +499,13 @@ func TestNewServiceManager(t *testing.T) {
498499
499500func TestServiceManager_Auditor (t * testing.T ) {
500501 netProv := & auditmock.NetworkProvider {}
501- netProv .GetNetworkReturns (nil , errors .New ("net err" ))
502+ netProv .GetNetworkReturns (nil , stderrors .New ("net err" ))
502503
503504 ssm := & auditdbmock.AuditStoreServiceManager {}
504- ssm .StoreServiceByTMSIdReturns (nil , errors .New ("db err" ))
505+ ssm .StoreServiceByTMSIdReturns (nil , stderrors .New ("db err" ))
505506
506507 tsm := & auditmock.TokensServiceManager {}
507- tsm .ServiceByTMSIdReturns (nil , errors .New ("tok err" ))
508+ tsm .ServiceByTMSIdReturns (nil , stderrors .New ("tok err" ))
508509
509510 sm := auditor .NewServiceManager (
510511 netProv , ssm , tsm ,
@@ -693,10 +694,11 @@ func (m *mockAuditDB) AcquireLocks(ctx context.Context, anchor string, eIDs ...s
693694 if m .acquireLocksFunc != nil {
694695 return m .acquireLocksFunc (ctx , anchor , eIDs ... )
695696 }
697+
696698 return m .store .AcquireLocks (ctx , anchor , eIDs ... )
697699}
698700
699- func (m * mockAuditDB ) Append (ctx context.Context , req auditdb. TokenRequest ) error {
701+ func (m * mockAuditDB ) Append (ctx context.Context , req * token. Request ) error {
700702 return m .store .Append (ctx , req )
701703}
702704
@@ -714,14 +716,15 @@ func (m *mockAuditDB) GetTokenRequest(ctx context.Context, txID string) ([]byte,
714716
715717func newMockAuditDB (t * testing.T , acquireFunc func (ctx context.Context , anchor string , eIDs ... string ) error ) * mockAuditDB {
716718 t .Helper ()
719+
717720 return & mockAuditDB {
718721 store : newTestStoreService (t , newFakeStore ()),
719722 acquireLocksFunc : acquireFunc ,
720723 }
721724}
722725
723726// newTestServiceWithMockDB creates a test service with a mockable AcquireLocks implementation
724- func newTestServiceWithMockDB (mockDB * mockAuditDB , checkService auditor.CheckService ) * auditor. Service {
727+ func newTestServiceWithMockDB (mockDB * mockAuditDB , checkService auditor.CheckService ) * testServiceWrapper {
725728 // We need to use reflection or create a custom service for testing
726729 // For now, we'll create the service and then replace its auditDB field
727730 svc := auditor .NewService (
@@ -735,7 +738,7 @@ func newTestServiceWithMockDB(mockDB *mockAuditDB, checkService auditor.CheckSer
735738 checkService ,
736739 nil , // lockConfig (uses defaults)
737740 )
738-
741+
739742 // Create a wrapper service that uses our mock
740743 return & testServiceWrapper {
741744 Service : svc ,
@@ -798,6 +801,7 @@ func (w *testServiceWrapper) acquireLocksWithRetryMock(ctx context.Context, anch
798801 select {
799802 case <- ctx .Done ():
800803 timer .Stop ()
804+
801805 return errors .WithMessagef (ctx .Err (), "lock acquisition cancelled during backoff after %d attempts for anchor [%s]" , attempt + 1 , anchor )
802806 case <- timer .C :
803807 // Continue to next retry attempt
@@ -818,6 +822,7 @@ func (w *testServiceWrapper) calculateBackoffMock(attempt int, cfg *auditor.Lock
818822 if finalDelay < 0 {
819823 finalDelay = cfg .InitialBackoff
820824 }
825+
821826 return finalDelay
822827}
823828
@@ -841,8 +846,9 @@ func TestService_AcquireLocksWithRetry_Success_AfterRetries(t *testing.T) {
841846 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
842847 callCount ++
843848 if callCount < 3 {
844- return errors .New ("lock conflict" )
849+ return stderrors .New ("lock conflict" )
845850 }
851+
846852 return nil
847853 })
848854 svc := newTestServiceWithMockDB (mockDB , nil )
@@ -860,7 +866,7 @@ func TestService_AcquireLocksWithRetry_Success_AfterRetries(t *testing.T) {
860866
861867func TestService_AcquireLocksWithRetry_Failure_MaxRetriesExceeded (t * testing.T ) {
862868 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
863- return errors .New ("persistent lock conflict" )
869+ return stderrors .New ("persistent lock conflict" )
864870 })
865871 svc := newTestServiceWithMockDB (mockDB , nil )
866872
@@ -879,7 +885,7 @@ func TestService_AcquireLocksWithRetry_Failure_MaxRetriesExceeded(t *testing.T)
879885
880886func TestService_AcquireLocksWithRetry_ContextCancelled_BeforeRetry (t * testing.T ) {
881887 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
882- return errors .New ("lock conflict" )
888+ return stderrors .New ("lock conflict" )
883889 })
884890 svc := newTestServiceWithMockDB (mockDB , nil )
885891
@@ -903,7 +909,8 @@ func TestService_AcquireLocksWithRetry_ContextCancelled_DuringBackoff(t *testing
903909 callCount := 0
904910 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
905911 callCount ++
906- return errors .New ("lock conflict" )
912+
913+ return stderrors .New ("lock conflict" )
907914 })
908915 svc := newTestServiceWithMockDB (mockDB , nil )
909916
@@ -929,8 +936,9 @@ func TestService_AcquireLocksWithRetry_ExponentialBackoff(t *testing.T) {
929936 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
930937 callTimes = append (callTimes , time .Now ())
931938 if len (callTimes ) < 4 {
932- return errors .New ("lock conflict" )
939+ return stderrors .New ("lock conflict" )
933940 }
941+
934942 return nil
935943 })
936944 svc := newTestServiceWithMockDB (mockDB , nil )
@@ -961,6 +969,7 @@ func TestService_AcquireLocksWithRetry_MultipleEnrollmentIDs(t *testing.T) {
961969 mockDB := newMockAuditDB (t , func (ctx context.Context , anchor string , eIDs ... string ) error {
962970 capturedAnchor = anchor
963971 capturedEIDs = eIDs
972+
964973 return nil
965974 })
966975 svc := newTestServiceWithMockDB (mockDB , nil )
0 commit comments