func TestAgentLoadUnloadJob(t *testing.T) { uManager := unit.NewFakeUnitManager() usGenerator := unit.NewUnitStateGenerator(uManager) fReg := registry.NewFakeRegistry() mach := &machine.FakeMachine{machine.MachineState{ID: "XXX"}} a, err := New(uManager, usGenerator, fReg, mach, DefaultTTL) if err != nil { t.Fatalf("Failed creating Agent: %v", err) } j := newTestJobFromUnitContents(t, "foo.service", "") err = a.loadJob(j) if err != nil { t.Fatalf("Failed calling Agent.loadJob: %v", err) } jobs, err := a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } jsLoaded := job.JobStateLoaded expectJobs := map[string]*job.Job{ "foo.service": &job.Job{ Name: "foo.service", UnitState: &unit.UnitState{ LoadState: "loaded", ActiveState: "active", SubState: "running", MachineID: "", }, State: &jsLoaded, Unit: unit.Unit{}, TargetState: job.JobState(""), TargetMachineID: "", }, } if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } a.unloadJob("foo.service") // This sucks, but we have to do it if Agent.unloadJob is going to spin // off the real work that matters in a goroutine time.Sleep(200) jobs, err = a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } expectJobs = map[string]*job.Job{} if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } }
func TestAgentLoadStartStopUnit(t *testing.T) { uManager := unit.NewFakeUnitManager() usGenerator := unit.NewUnitStateGenerator(uManager) fReg := registry.NewFakeRegistry() mach := &machine.FakeMachine{MachineState: machine.MachineState{ID: "XXX"}} a := New(uManager, usGenerator, fReg, mach, time.Second) u := newTestUnitFromUnitContents(t, "foo.service", "") err := a.loadUnit(u) if err != nil { t.Fatalf("Failed calling Agent.loadUnit: %v", err) } err = a.startUnit("foo.service") if err != nil { t.Fatalf("Failed starting unit foo.service: %v", err) } units, err := a.units() if err != nil { t.Fatalf("Failed calling Agent.units: %v", err) } jsLaunched := job.JobStateLaunched expectUnits := unitStates{ "foo.service": unitState{ state: jsLaunched, }, } if !reflect.DeepEqual(expectUnits, units) { t.Fatalf("Received unexpected collection of Units: %#v\nExpected: %#v", units, expectUnits) } err = a.stopUnit("foo.service") if err != nil { t.Fatalf("Failed stopping unit foo.service: %v", err) } units, err = a.units() if err != nil { t.Fatalf("Failed calling Agent.units: %v", err) } jsLoaded := job.JobStateLoaded expectUnits = unitStates{ "foo.service": unitState{ state: jsLoaded, }, } if !reflect.DeepEqual(expectUnits, units) { t.Fatalf("Received unexpected collection of Units: %#v\nExpected: %#v", units, expectUnits) } }
func TestAgentLoadUnloadJob(t *testing.T) { uManager := unit.NewFakeUnitManager() usGenerator := unit.NewUnitStateGenerator(uManager) fReg := registry.NewFakeRegistry() mach := &machine.FakeMachine{machine.MachineState{ID: "XXX"}} a := New(uManager, usGenerator, fReg, mach, time.Second) j := newTestJobFromUnitContents(t, "foo.service", "") err := a.loadJob(j) if err != nil { t.Fatalf("Failed calling Agent.loadJob: %v", err) } jobs, err := a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } jsLoaded := job.JobStateLoaded expectJobs := map[string]*job.Job{ "foo.service": &job.Job{ Name: "foo.service", State: &jsLoaded, Unit: unit.UnitFile{}, TargetState: job.JobState(""), TargetMachineID: "", }, } if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } a.unloadJob("foo.service") jobs, err = a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } expectJobs = map[string]*job.Job{} if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } }
func TestAgentLoadStartStopJob(t *testing.T) { uManager := unit.NewFakeUnitManager() usGenerator := unit.NewUnitStateGenerator(uManager) fReg := registry.NewFakeRegistry() mach := &machine.FakeMachine{machine.MachineState{ID: "XXX"}} a, err := New(uManager, usGenerator, fReg, mach, DefaultTTL) if err != nil { t.Fatalf("Failed creating Agent: %v", err) } u, err := unit.NewUnit("") if err != nil { t.Fatalf("Failed creating Unit: %v", err) } j := job.NewJob("foo.service", *u) err = a.loadJob(j) if err != nil { t.Fatalf("Failed calling Agent.loadJob: %v", err) } a.startJob("foo.service") jobs, err := a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } jsLaunched := job.JobStateLaunched expectJobs := map[string]*job.Job{ "foo.service": &job.Job{ Name: "foo.service", UnitState: &unit.UnitState{ LoadState: "loaded", ActiveState: "active", SubState: "running", MachineID: "", }, State: &jsLaunched, Unit: unit.Unit{}, TargetState: job.JobState(""), TargetMachineID: "", }, } if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } a.stopJob("foo.service") jobs, err = a.jobs() if err != nil { t.Fatalf("Failed calling Agent.jobs: %v", err) } jsLoaded := job.JobStateLoaded expectJobs = map[string]*job.Job{ "foo.service": &job.Job{ Name: "foo.service", UnitState: &unit.UnitState{ LoadState: "loaded", ActiveState: "active", SubState: "running", MachineID: "", }, State: &jsLoaded, Unit: unit.Unit{}, TargetState: job.JobState(""), TargetMachineID: "", }, } if !reflect.DeepEqual(expectJobs, jobs) { t.Fatalf("Received unexpected collection of Jobs: %#v\nExpected: %#v", jobs, expectJobs) } }