@@ -83,7 +83,7 @@ func TestCachedFetcher_IsCacheStale(t *testing.T) {
8383 assert .False (t , fetcher .isCacheStale ())
8484
8585 // Manually set lastFetched to the past instead of sleeping
86- fetcher .lastFetched = time .Now ().Add (- fetcher .freshnessInterval * 2 )
86+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- fetcher .freshnessInterval * 2 ). UnixNano () )
8787 assert .True (t , fetcher .isCacheStale ())
8888}
8989
@@ -237,7 +237,7 @@ func TestCachedFetcher_UnspentTokensIteratorBy_StaleCache(t *testing.T) {
237237 fetcher .update (ctx )
238238
239239 // Trigger hard refresh by setting lastFetched to the past
240- fetcher .lastFetched = time .Now ().Add (- fetcher .freshnessInterval * 2 )
240+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- fetcher .freshnessInterval * 2 ). UnixNano () )
241241 assert .True (t , fetcher .isCacheStale ())
242242
243243 // Setup second call expectation
@@ -787,7 +787,7 @@ func TestCachedFetcher_SoftRefresh(t *testing.T) {
787787func TestCachedFetcher_Update_ThunderingHerd (t * testing.T ) {
788788 mockDB := new (mockTokenDB )
789789 // Short freshness interval
790- fetcher := newCachedFetcher (mockDB , 0 , 50 * time .Millisecond , 100 )
790+ fetcher := NewCachedFetcher (mockDB , 0 , 50 * time .Millisecond , 100 )
791791
792792 // Initial population
793793 mockDB .On ("SpendableTokensIteratorBy" , mock .Anything , "" , token2 .Type ("" )).
@@ -798,7 +798,7 @@ func TestCachedFetcher_Update_ThunderingHerd(t *testing.T) {
798798
799799 // Trigger staleness manually
800800 fetcher .mu .Lock ()
801- fetcher .lastFetched = time .Now ().Add (- 10 * time .Second )
801+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- 10 * time .Second ). UnixNano () )
802802 fetcher .mu .Unlock ()
803803
804804 // Block the next DB call with a mock that waits
@@ -1039,7 +1039,7 @@ func (m *mockStoreServiceManager) StoreServiceByTMSId(tmsID token.TMSID) (*token
10391039func TestCachedFetcher_UpdateDoesNotBlockReaders (t * testing.T ) {
10401040 mockDB := new (mockTokenDB )
10411041 // Use long freshness interval so cache won't be stale
1042- fetcher := newCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
1042+ fetcher := NewCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
10431043
10441044 // Pre-populate the cache so readers can hit it
10451045 initialTokens := []* token2.UnspentTokenInWallet {
@@ -1052,7 +1052,7 @@ func TestCachedFetcher_UpdateDoesNotBlockReaders(t *testing.T) {
10521052 fetcher .update (ctx )
10531053
10541054 // Make cache stale so update() will be called
1055- fetcher .lastFetched = time .Now ().Add (- 20 * time .Second )
1055+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- 20 * time .Second ). UnixNano () )
10561056
10571057 // Use channels to synchronize instead of Sleep
10581058 dbStarted := make (chan struct {})
@@ -1110,10 +1110,10 @@ func TestCachedFetcher_UpdateDoesNotBlockReaders(t *testing.T) {
11101110// completes, update() correctly re-acquires the lock and performs the cache update.
11111111func TestCachedFetcher_UpdateReacquiresLockAfterDB (t * testing.T ) {
11121112 mockDB := new (mockTokenDB )
1113- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
1113+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
11141114
11151115 // Pre-populate to make cache appear stale
1116- fetcher .lastFetched = time .Now ().Add (- 20 * time .Second )
1116+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- 20 * time .Second ). UnixNano () )
11171117
11181118 tokens := []* token2.UnspentTokenInWallet {
11191119 {WalletID : "wallet1" , Type : "USD" , Quantity : "300" },
0 commit comments