Files
Loki/internal/loki/store_conc_test.go
Loki de6551a153 Rebaptise AJEAN en Loki (fork, lignée conservée)
- module github.com/R0m1k3/Loki, cmd/loki, internal/loki (package loki)
- LOKI_HOME, LOKI_MODEL_DIRS, LOKI_SERVICE, LOKI_DL_CONNS ; /etc/loki ;
  units loki-engine / loki-ui ; binaire et aide CLI
- updateRepo pointe sur R0m1k3/Loki (l'auto-update ne tirera plus les
  binaires AJEAN amont)

Conservé à l'identique : le domaine ajean.link (service de tunnel amont),
les littéraux de migration 0.7.x (migrate_07.go), RELEASE_NOTES.md et
LICENSE (historique et licence de l'amont).

go build/vet/test : verts.
2026-08-14 21:33:15 +00:00

36 lines
763 B
Go

package loki
import (
"sync"
"testing"
"time"
)
// Deux « process » logiques qui martèlent la base en parallèle ne doivent ni
// s'exclure ni perdre d'écriture : c'est le scénario du serveur, où le service
// de lien tourne pendant qu'on tape des commandes.
func TestAccesConcurrent(t *testing.T) {
testHome(t)
var wg sync.WaitGroup
for i := 0; i < 8; i++ {
wg.Add(1)
go func(n int) {
defer wg.Done()
for j := 0; j < 20; j++ {
_ = SetConfigKey("K", "v")
_ = ReadConfig()
}
}(i)
}
done := make(chan struct{})
go func() { wg.Wait(); close(done) }()
select {
case <-done:
case <-time.After(30 * time.Second):
t.Fatal("blocage sous accès concurrent")
}
if ReadConfig()["K"] != "v" {
t.Fatal("écriture perdue")
}
}