"net/http/httptest"
"os"
"strings"
+ "syscall"
"testing"
"time"
}
func (s *TestSuite) Test_doMain(c *C) {
- args := []string{"-poll-interval", "1", "-container-priority-poll-interval", "1", "-crunch-run-command", "echo"}
+ args := []string{"-poll-interval", "2", "-container-priority-poll-interval", "1", "-crunch-run-command", "echo"}
os.Args = append(os.Args, args...)
go func() {
- time.Sleep(2 * time.Second)
- doneProcessing <- true
+ time.Sleep(5 * time.Second)
+ sigChan <- syscall.SIGINT
}()
err := doMain()
var containers ContainerList
err = arv.List("containers", params, &containers)
c.Check(err, IsNil)
- c.Assert(containers.ItemsAvailable, Equals, 0)
+ c.Assert(len(containers.Items), Equals, 0)
// Previously "Queued" container should now be in "Complete" state
var container Container
log.SetOutput(tempfile)
go func() {
- time.Sleep(1 * time.Second)
- doneProcessing <- true
+ time.Sleep(2 * time.Second)
+ sigChan <- syscall.SIGTERM
}()
runQueuedContainers(1, 1, crunchCmd)
- // Give some time for run goroutine to complete
- time.Sleep(5 * time.Second)
+ // Wait for all running crunch jobs to complete / terminate
+ waitGroup.Wait()
buf, _ := ioutil.ReadFile(tempfile.Name())
c.Check(strings.Contains(string(buf), expected), Equals, true)