Drive the archive reopen debounce test from a clock (closes #190)
check / check (push) Successful in 4m16s
check / check (push) Successful in 4m16s
The archive writer now reads the time its reopen debounce is measured on from a clock field, time.Now outside tests. The debounce test moves that clock instead of sleeping past a real 2 second window, so a slow host between the two quick writes can no longer turn a correct result red. Model: opus-5-5
Šī revīzija ir iekļauta:
@@ -194,6 +194,10 @@ type archiveWriter struct {
|
||||
lastReopen time.Time
|
||||
reopens int
|
||||
|
||||
// now is the clock the reopen debounce is measured on. It is
|
||||
// time.Now outside tests.
|
||||
now func() time.Time
|
||||
|
||||
// evicted marks a writer that has been removed from the
|
||||
// registry. Its handle is closed and it must never open the
|
||||
// file again: nothing holds it any more, so a reopen would
|
||||
@@ -228,6 +232,7 @@ func newArchiveWriter(
|
||||
path: path,
|
||||
log: log,
|
||||
debounce: archiveReopenDebounce,
|
||||
now: time.Now,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +268,7 @@ func (w *archiveWriter) write(
|
||||
)
|
||||
}
|
||||
|
||||
if time.Since(w.lastReopen) >= w.debounce {
|
||||
if w.now().Sub(w.lastReopen) >= w.debounce {
|
||||
return w.reopen(expiry)
|
||||
}
|
||||
|
||||
@@ -323,7 +328,7 @@ func (w *archiveWriter) openMode(
|
||||
}
|
||||
|
||||
w.db = gdb
|
||||
w.lastReopen = time.Now()
|
||||
w.lastReopen = w.now()
|
||||
w.reopens++
|
||||
|
||||
if expiry > 0 {
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user