package link import ( "context" "testing" "github.com/nats-io/nats.go" ) // 1768/AC1: a request dropped as a duplicate of one another builder runs marks nothing in hand: the claim is not made, // so no mark is left behind to fail every later claim. func TestADuplicateDropIsJudgedBeforeTheClaimSoLeavesNoMark(t *testing.T) { claims := 0 m := &natsMachine{ opts: MachineOptions{Claim: func() bool { claims++; return true }}, duplicate: func(context.Context, BuildRequest) string { return "ace is running it" }, } if m.admit(context.Background(), &nats.Msg{}, BuildRequest{ID: "build-1"}) { t.Fatal("a duplicate was admitted") } if claims != 0 { t.Fatalf("a dropped duplicate was claimed %d times, which leaves the in-hand mark behind", claims) } m.duplicate = func(context.Context, BuildRequest) string { return "" } if !m.admit(context.Background(), &nats.Msg{}, BuildRequest{ID: "build-2"}) || claims != 1 { t.Fatalf("a request that is no duplicate was not claimed once: claims=%d", claims) } }