From b58a77ecc007dc9f21585556db86e83a7a90e6a0 Mon Sep 17 00:00:00 2001 From: Michael Schurter Date: Wed, 9 Jan 2019 13:37:08 -0800 Subject: [PATCH] test: assert service interpolation behavior Ported from pre-0.9 tests. --- .../taskrunner/service_hook_test.go | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 client/allocrunner/taskrunner/service_hook_test.go diff --git a/client/allocrunner/taskrunner/service_hook_test.go b/client/allocrunner/taskrunner/service_hook_test.go new file mode 100644 index 000000000..f8825be49 --- /dev/null +++ b/client/allocrunner/taskrunner/service_hook_test.go @@ -0,0 +1,86 @@ +package taskrunner + +import ( + "testing" + + "github.com/hashicorp/nomad/client/taskenv" + "github.com/hashicorp/nomad/nomad/structs" + "github.com/stretchr/testify/require" +) + +// TestTaskRunner_ServiceHook_InterpolateServices asserts that all service +// and check fields are properly interpolated. +func TestTaskRunner_ServiceHook_InterpolateServices(t *testing.T) { + t.Parallel() + services := []*structs.Service{ + { + Name: "${name}", + PortLabel: "${portlabel}", + Tags: []string{"${tags}"}, + Checks: []*structs.ServiceCheck{ + { + Name: "${checkname}", + Type: "${checktype}", + Command: "${checkcmd}", + Args: []string{"${checkarg}"}, + Path: "${checkstr}", + Protocol: "${checkproto}", + PortLabel: "${checklabel}", + InitialStatus: "${checkstatus}", + Method: "${checkmethod}", + Header: map[string][]string{ + "${checkheaderk}": {"${checkheaderv}"}, + }, + }, + }, + }, + } + + env := &taskenv.TaskEnv{ + EnvMap: map[string]string{ + "name": "name", + "portlabel": "portlabel", + "tags": "tags", + "checkname": "checkname", + "checktype": "checktype", + "checkcmd": "checkcmd", + "checkarg": "checkarg", + "checkstr": "checkstr", + "checkpath": "checkpath", + "checkproto": "checkproto", + "checklabel": "checklabel", + "checkstatus": "checkstatus", + "checkmethod": "checkmethod", + "checkheaderk": "checkheaderk", + "checkheaderv": "checkheaderv", + }, + } + + interpolated := interpolateServices(env, services) + + exp := []*structs.Service{ + { + Name: "name", + PortLabel: "portlabel", + Tags: []string{"tags"}, + Checks: []*structs.ServiceCheck{ + { + Name: "checkname", + Type: "checktype", + Command: "checkcmd", + Args: []string{"checkarg"}, + Path: "checkstr", + Protocol: "checkproto", + PortLabel: "checklabel", + InitialStatus: "checkstatus", + Method: "checkmethod", + Header: map[string][]string{ + "checkheaderk": {"checkheaderv"}, + }, + }, + }, + }, + } + + require.Equal(t, exp, interpolated) +}