1package nomad
2
3import (
4	"testing"
5	"time"
6
7	msgpackrpc "github.com/hashicorp/net-rpc-msgpackrpc"
8	"github.com/hashicorp/nomad/nomad/mock"
9	"github.com/hashicorp/nomad/nomad/structs"
10	"github.com/hashicorp/nomad/testutil"
11)
12
13func TestPlanEndpoint_Submit(t *testing.T) {
14	t.Parallel()
15
16	s1, cleanupS1 := TestServer(t, func(c *Config) {
17		c.NumSchedulers = 0
18	})
19	defer cleanupS1()
20	codec := rpcClient(t, s1)
21	testutil.WaitForLeader(t, s1.RPC)
22
23	// Create the register request
24	eval1 := mock.Eval()
25	s1.evalBroker.Enqueue(eval1)
26
27	evalOut, token, err := s1.evalBroker.Dequeue([]string{eval1.Type}, time.Second)
28	if err != nil {
29		t.Fatalf("err: %v", err)
30	}
31	if evalOut != eval1 {
32		t.Fatalf("Bad eval")
33	}
34
35	// Submit a plan
36	plan := mock.Plan()
37	plan.EvalID = eval1.ID
38	plan.EvalToken = token
39	plan.Job = mock.Job()
40	req := &structs.PlanRequest{
41		Plan:         plan,
42		WriteRequest: structs.WriteRequest{Region: "global"},
43	}
44	var resp structs.PlanResponse
45	if err := msgpackrpc.CallWithCodec(codec, "Plan.Submit", req, &resp); err != nil {
46		t.Fatalf("err: %v", err)
47	}
48	if resp.Result == nil {
49		t.Fatalf("missing result")
50	}
51}
52