blob: a4471469c0ec86650c16b6f98ecf4355ba5ddc17 [file] [log] [blame]
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +09001package main
2
3import (
4 "fmt"
5 "path/filepath"
6 "testing"
7)
8
9func TestPara(t *testing.T) {
10 cwd, err := filepath.Abs(".")
11 if err != nil {
12 panic(err)
13 }
14 katiDir = cwd
Shinichiro Hamajia6808422015-05-13 18:00:50 +090015 jobsFlag = 4
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +090016
17 paraChan := make(chan *ParaResult)
18 para := NewParaWorker(paraChan)
19 go para.Run()
20
21 num_tasks := 100
22 for i := 0; i < num_tasks; i++ {
23 runners := []runner{
24 {
25 output: fmt.Sprintf("%d", i),
26 cmd: fmt.Sprintf("echo test%d 2>&1", i),
27 shell: "/bin/sh",
28 },
29 }
30 para.RunCommand(runners)
31 }
32
Shinichiro Hamajia6808422015-05-13 18:00:50 +090033 var started []*ParaResult
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +090034 var results []*ParaResult
Shinichiro Hamajia6808422015-05-13 18:00:50 +090035 for len(started) != num_tasks || len(results) != num_tasks {
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +090036 select {
37 case r := <-paraChan:
Shinichiro Hamajia6808422015-05-13 18:00:50 +090038 fmt.Printf("started=%d finished=%d\n", len(started), len(results))
39 if r.status < 0 && r.signal < 0 {
40 started = append(started, r)
41 } else {
42 results = append(results, r)
43 }
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +090044 }
45 }
46
47 para.Wait()
48}