41 lines
1.4 KiB
Go
41 lines
1.4 KiB
Go
package buildstep
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
stdio "git.novox.be/novox/mesh-sdk/go"
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
// 1887/A11: a bundle's source pulls the kind's worker by its seat's name and settles each ask by the runtime's id.
|
|
func TestSeatAsksPullsTheKindsWorkerAndSettlesByID(t *testing.T) {
|
|
var pulled []string
|
|
var settled []string
|
|
src := SeatAsks{Language: delivery.AskGo,
|
|
Pull: func(worker string, wait time.Duration) (*stdio.Pulled, error) {
|
|
pulled = append(pulled, worker)
|
|
if worker != "SEAT_NODE_BUILD_GO_CHECK_worker" {
|
|
return nil, nil
|
|
}
|
|
return &stdio.Pulled{ID: "p9", Worker: worker, Body: []byte(`{"v":1}`), Delivered: 2}, nil
|
|
},
|
|
Settle: func(id, fate string) error { settled = append(settled, id+" "+fate); return nil }}
|
|
if p, err := src.Next(context.Background(), delivery.AskDelivery, 0); err != nil || p != nil {
|
|
t.Fatalf("delivery = %+v, %v", p, err)
|
|
}
|
|
p, err := src.Next(context.Background(), delivery.AskCheck, time.Second)
|
|
if err != nil || p == nil || string(p.Data) != `{"v":1}` || p.Delivered != 2 {
|
|
t.Fatalf("check = %+v, %v", p, err)
|
|
}
|
|
_ = p.InProgress()
|
|
_ = p.Ack()
|
|
if len(pulled) != 2 || pulled[0] != "SEAT_NODE_BUILD_GO_DELIVERY_worker" {
|
|
t.Errorf("pulled %v", pulled)
|
|
}
|
|
if len(settled) != 2 || settled[0] != "p9 progress" || settled[1] != "p9 ack" {
|
|
t.Errorf("settled %v", settled)
|
|
}
|
|
}
|