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  }