func waiter(c *gc.C, m dependency.Manifold, w worker.Worker) gate.Waiter { var waiter gate.Waiter err := m.Output(w, &waiter) c.Assert(err, jc.ErrorIsNil) c.Assert(waiter, gc.NotNil) return waiter }
func unlocker(c *gc.C, m dependency.Manifold, w worker.Worker) gate.Unlocker { var unlocker gate.Unlocker err := m.Output(w, &unlocker) c.Assert(err, jc.ErrorIsNil) c.Assert(unlocker, gc.NotNil) return unlocker }
func assertGate(c *gc.C, manifold dependency.Manifold, unlocker gate.Unlocker) { w, err := manifold.Start(nil) c.Assert(err, jc.ErrorIsNil) defer worker.Stop(w) var waiter gate.Waiter err = manifold.Output(w, &waiter) c.Assert(err, jc.ErrorIsNil) select { case <-waiter.Unlocked(): c.Fatalf("expected gate to be locked") default: } unlocker.Unlock() select { case <-waiter.Unlocked(): default: c.Fatalf("expected gate to be unlocked") } }