mesh/delivery merged: source.main moved to novox/mesh-sdk@4f4d5ca9c956
mesh/delivery-group group fix/puller-wakes-on-capacity merged: every member is merged
mesh/check pass a8fbabbfc373 on 4f4d5ca9c956 | unit 1102 run, 679 kept, 2 skipped | integration 1103 run, 721 kept, 2 skipped | over bound: unit, inte…
40 lines
1007 B
Go
40 lines
1007 B
Go
package buildstep
|
|
|
|
import (
|
|
"encoding/json"
|
|
"sync"
|
|
"testing"
|
|
|
|
stdio "git.novox.be/novox/mesh-sdk/go"
|
|
)
|
|
|
|
// configWatch is a double of stdio.WatchConfig: it hands the value now at the start, as the runtime does, and a test
|
|
// hands each change after with set.
|
|
type configWatch struct {
|
|
mu sync.Mutex
|
|
value string
|
|
handle func(stdio.ProvisionChange) error
|
|
asked string
|
|
}
|
|
|
|
func (w *configWatch) watch(key string, handle func(stdio.ProvisionChange) error) error {
|
|
w.mu.Lock()
|
|
w.asked, w.handle = key, handle
|
|
value := w.value
|
|
w.mu.Unlock()
|
|
return handle(stdio.ProvisionChange{Kind: "config", Key: key, Value: json.RawMessage(`"` + value + `"`)})
|
|
}
|
|
|
|
func (w *configWatch) set(t *testing.T, value string) {
|
|
t.Helper()
|
|
w.mu.Lock()
|
|
handle, key := w.handle, w.asked
|
|
w.mu.Unlock()
|
|
if handle == nil {
|
|
t.Fatal("the puller watches no config value")
|
|
}
|
|
if err := handle(stdio.ProvisionChange{Kind: "config", Key: key, Value: json.RawMessage(`"` + value + `"`)}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|