Example #1
0
func (s *ValidationSuite) TestMissingSecretary(c *gc.C) {
	manager, err := lease.NewManager(lease.ManagerConfig{
		Client: struct{ corelease.Client }{},
		Clock:  struct{ clock.Clock }{},
	})
	c.Check(err, gc.ErrorMatches, "nil Secretary not valid")
	c.Check(err, jc.Satisfies, errors.IsNotValid)
	c.Check(manager, gc.IsNil)
}
Example #2
0
func (s *ValidationSuite) TestMissingMaxSleep(c *gc.C) {
	manager, err := lease.NewManager(lease.ManagerConfig{
		Client:    NewClient(nil, nil),
		Secretary: struct{ lease.Secretary }{},
		Clock:     coretesting.NewClock(time.Now()),
	})
	c.Check(err, gc.ErrorMatches, "non-positive MaxSleep not valid")
	c.Check(err, jc.Satisfies, errors.IsNotValid)
	c.Check(manager, gc.IsNil)
}
Example #3
0
func (s *ValidationSuite) TestMissingClock(c *gc.C) {
	manager, err := lease.NewManager(lease.ManagerConfig{
		Client:    struct{ corelease.Client }{},
		Secretary: struct{ lease.Secretary }{},
		MaxSleep:  time.Minute,
	})
	c.Check(err, gc.ErrorMatches, "nil Clock not valid")
	c.Check(err, jc.Satisfies, errors.IsNotValid)
	c.Check(manager, gc.IsNil)
}
Example #4
0
File: workers.go Project: bac/juju
func (wf workersFactory) NewSingularWorker() (workers.LeaseWorker, error) {
	client, err := wf.st.getSingularLeaseClient()
	if err != nil {
		return nil, errors.Trace(err)
	}
	manager, err := lease.NewManager(lease.ManagerConfig{
		Secretary: singularSecretary{wf.st.ModelUUID()},
		Client:    client,
		Clock:     wf.clock,
		MaxSleep:  time.Minute,
	})
	if err != nil {
		return nil, errors.Trace(err)
	}
	return manager, nil
}
Example #5
0
File: workers.go Project: bac/juju
func (wf workersFactory) NewLeadershipWorker() (workers.LeaseWorker, error) {
	client, err := wf.st.getLeadershipLeaseClient()
	if err != nil {
		return nil, errors.Trace(err)
	}
	manager, err := lease.NewManager(lease.ManagerConfig{
		Secretary: leadershipSecretary{},
		Client:    client,
		Clock:     wf.clock,
		MaxSleep:  time.Minute,
	})
	if err != nil {
		return nil, errors.Trace(err)
	}
	return manager, nil
}
Example #6
0
// RunTest sets up a Manager and a Clock and passes them into the supplied
// test function. The manager will be cleaned up afterwards.
func (fix *Fixture) RunTest(c *gc.C, test func(*lease.Manager, *testing.Clock)) {
	clock := testing.NewClock(defaultClockStart)
	client := NewClient(fix.leases, fix.expectCalls)
	manager, err := lease.NewManager(lease.ManagerConfig{
		Clock:     clock,
		Client:    client,
		Secretary: Secretary{},
		MaxSleep:  defaultMaxSleep,
	})
	c.Assert(err, jc.ErrorIsNil)
	defer func() {
		// Dirty tests will probably have stopped the manager anyway, but no
		// sense leaving them around if things aren't exactly as we expect.
		manager.Kill()
		err := manager.Wait()
		if !fix.expectDirty {
			c.Check(err, jc.ErrorIsNil)
		}
	}()
	defer client.Wait(c)
	waitAlarms(c, clock, 1)
	test(manager, clock)
}