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) } }