func (s *HostSuite) TestGetNonExistentJob(t *c.C) { cluster := s.clusterClient(t) hosts, err := cluster.Hosts() t.Assert(err, c.IsNil) // Getting a non-existent job should error _, err = hosts[0].GetJob("i-dont-exist") t.Assert(hh.IsObjectNotFoundError(err), c.Equals, true) }
func (s *HostSuite) TestAttachNonExistentJob(t *c.C) { cluster := s.clusterClient(t) hosts, err := cluster.Hosts() t.Assert(err, c.IsNil) // Attaching to a non-existent job should error _, err = hosts[0].Attach(&host.AttachReq{JobID: "none", Flags: host.AttachFlagLogs}, false) t.Assert(err, c.NotNil) }
func (s *HostSuite) TestSignalJob(t *c.C) { cluster := s.clusterClient(t) // pick a host to run the job on hosts, err := cluster.Hosts() t.Assert(err, c.IsNil) client := schedutil.PickHost(hosts) // start a signal-service job cmd := exec.JobUsingCluster(cluster, exec.DockerImage(imageURIs["test-apps"]), &host.Job{ Config: host.ContainerConfig{ Args: []string{"/bin/signal"}, DisableLog: true, }, }) cmd.HostID = client.ID() var out bytes.Buffer cmd.Stdout = &out t.Assert(cmd.Start(), c.IsNil) _, err = s.discoverdClient(t).Instances("signal-service", 10*time.Second) t.Assert(err, c.IsNil) // send the job a signal t.Assert(client.SignalJob(cmd.Job.ID, int(syscall.SIGTERM)), c.IsNil) // wait for the job to exit done := make(chan error) go func() { done <- cmd.Wait() }() select { case err := <-done: t.Assert(err, c.IsNil) case <-time.After(12 * time.Second): t.Fatal("timed out waiting for job to stop") } // check the output t.Assert(out.String(), c.Equals, "got signal: terminated") }
func (h *Helper) anyHostClient(t *c.C) *cluster.Host { cluster := h.clusterClient(t) hosts, err := cluster.Hosts() t.Assert(err, c.IsNil) return hosts[0] }