1- package locktest
1+ package locktesting
22
33import (
44 "context"
55 "database/sql"
66 "fmt"
7- "log/slog"
87 "sync"
98 "testing"
109 "time"
@@ -56,7 +55,7 @@ func TestProviderLocking(
5655
5756 for i := range count {
5857 g .Go (func () error {
59- ctx := t . Context ()
58+ ctx := context . Background ()
6059 migrationResults , err := providers [i ].Up (ctx )
6160 if err != nil {
6261 return err
@@ -123,13 +122,14 @@ func TestConcurrentLocking(
123122 lockTimeout time.Duration ,
124123) {
125124 t .Helper ()
125+ ctx := context .Background ()
126126
127127 // TODO(mf): I wonder if there's a better way to do logging in tests that conditionally enables
128128 // it. Maybe using testing.T.Log? But that doesn't have levels. Maybe use a global flag to
129129 // enable debug logging in tests?
130130
131131 // logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: slog.LevelDebug}))
132- logger := slog .New (slog .DiscardHandler )
132+ // logger := slog.New(slog.DiscardHandler)
133133
134134 // Number of concurrent lockers to test
135135 const count = 5
@@ -149,27 +149,27 @@ func TestConcurrentLocking(
149149 go func () {
150150 defer wg .Done ()
151151
152- ctx , cancel := context .WithTimeout (t . Context () , lockTimeout )
152+ ctx , cancel := context .WithTimeout (ctx , lockTimeout )
153153 defer cancel ()
154154
155155 // Try to acquire the lock
156156 if err := lockers [i ].Lock (ctx , db ); err != nil {
157- logger .Debug ("Locker failed to acquire lock" , slog .Int ("locker" , i ), slog .String ("error" , err .Error ()))
157+ // logger.Debug("Locker failed to acquire lock", slog.Int("locker", i), slog.String("error", err.Error()))
158158 return
159159 }
160160
161161 successCh <- i
162- logger .Debug ("Locker acquired lock" , slog .Int ("locker" , i ))
162+ // logger.Debug("Locker acquired lock", slog.Int("locker", i))
163163
164164 // Hold the lock long enough for all other goroutines to exhaust their retries. This
165165 // ensures only ONE locker succeeds in the concurrent test
166166 time .Sleep (lockTimeout * 2 )
167167
168168 // Release the lock
169- if err := lockers [i ].Unlock (t . Context () , db ); err != nil {
169+ if err := lockers [i ].Unlock (ctx , db ); err != nil {
170170 t .Errorf ("Locker %d failed to release lock: %v" , i , err )
171171 } else {
172- logger .Debug ("Locker released lock" , slog .Int ("locker" , i ))
172+ // logger.Debug("Locker released lock", slog.Int("locker", i))
173173 }
174174 }()
175175 }
@@ -195,5 +195,5 @@ func TestConcurrentLocking(
195195 }
196196
197197 require .Equal (t , 1 , len (successful ), "Exactly one locker should acquire the lock" )
198- logger .Debug ("Concurrent locking test passed" , slog .Int ("winning_locker" , successful [0 ]))
198+ // logger.Debug("Concurrent locking test passed", slog.Int("winning_locker", successful[0]))
199199}
0 commit comments