github.com/kardianos/nomad@v0.1.3-0.20151022182107-b13df73ee850/api/evaluations_test.go (about) 1 package api 2 3 import ( 4 "reflect" 5 "sort" 6 "strings" 7 "testing" 8 ) 9 10 func TestEvaluations_List(t *testing.T) { 11 c, s := makeClient(t, nil, nil) 12 defer s.Stop() 13 e := c.Evaluations() 14 15 // Listing when nothing exists returns empty 16 result, qm, err := e.List(nil) 17 if err != nil { 18 t.Fatalf("err: %s", err) 19 } 20 if qm.LastIndex != 0 { 21 t.Fatalf("bad index: %d", qm.LastIndex) 22 } 23 if n := len(result); n != 0 { 24 t.Fatalf("expected 0 evaluations, got: %d", n) 25 } 26 27 // Register a job. This will create an evaluation. 28 jobs := c.Jobs() 29 job := testJob() 30 evalID, wm, err := jobs.Register(job, nil) 31 if err != nil { 32 t.Fatalf("err: %s", err) 33 } 34 assertWriteMeta(t, wm) 35 36 // Check the evaluations again 37 result, qm, err = e.List(nil) 38 if err != nil { 39 t.Fatalf("err: %s", err) 40 } 41 assertQueryMeta(t, qm) 42 43 // Check if we have the right list 44 if len(result) != 1 || result[0].ID != evalID { 45 t.Fatalf("bad: %#v", result) 46 } 47 } 48 49 func TestEvaluations_Info(t *testing.T) { 50 c, s := makeClient(t, nil, nil) 51 defer s.Stop() 52 e := c.Evaluations() 53 54 // Querying a non-existent evaluation returns error 55 _, _, err := e.Info("8E231CF4-CA48-43FF-B694-5801E69E22FA", nil) 56 if err == nil || !strings.Contains(err.Error(), "not found") { 57 t.Fatalf("expected not found error, got: %s", err) 58 } 59 60 // Register a job. Creates a new evaluation. 61 jobs := c.Jobs() 62 job := testJob() 63 evalID, wm, err := jobs.Register(job, nil) 64 if err != nil { 65 t.Fatalf("err: %s", err) 66 } 67 assertWriteMeta(t, wm) 68 69 // Try looking up by the new eval ID 70 result, qm, err := e.Info(evalID, nil) 71 if err != nil { 72 t.Fatalf("err: %s", err) 73 } 74 assertQueryMeta(t, qm) 75 76 // Check that we got the right result 77 if result == nil || result.ID != evalID { 78 t.Fatalf("expected eval %q, got: %#v", evalID, result) 79 } 80 } 81 82 func TestEvaluations_Allocations(t *testing.T) { 83 c, s := makeClient(t, nil, nil) 84 defer s.Stop() 85 e := c.Evaluations() 86 87 // Returns empty if no allocations 88 allocs, qm, err := e.Allocations("8E231CF4-CA48-43FF-B694-5801E69E22FA", nil) 89 if err != nil { 90 t.Fatalf("err: %s", err) 91 } 92 if qm.LastIndex != 0 { 93 t.Fatalf("bad index: %d", qm.LastIndex) 94 } 95 if n := len(allocs); n != 0 { 96 t.Fatalf("expected 0 allocs, got: %d", n) 97 } 98 } 99 100 func TestEvaluations_Sort(t *testing.T) { 101 evals := []*Evaluation{ 102 &Evaluation{CreateIndex: 2}, 103 &Evaluation{CreateIndex: 1}, 104 &Evaluation{CreateIndex: 5}, 105 } 106 sort.Sort(EvalIndexSort(evals)) 107 108 expect := []*Evaluation{ 109 &Evaluation{CreateIndex: 5}, 110 &Evaluation{CreateIndex: 2}, 111 &Evaluation{CreateIndex: 1}, 112 } 113 if !reflect.DeepEqual(evals, expect) { 114 t.Fatalf("\n\n%#v\n\n%#v", evals, expect) 115 } 116 }