1package api
2
3import (
4	"testing"
5	"time"
6
7	"github.com/stretchr/testify/assert"
8)
9
10// TestService_CheckRestart asserts Service.CheckRestart settings are properly
11// inherited by Checks.
12func TestService_CheckRestart(t *testing.T) {
13	job := &Job{Name: stringToPtr("job")}
14	tg := &TaskGroup{Name: stringToPtr("group")}
15	task := &Task{Name: "task"}
16	service := &Service{
17		CheckRestart: &CheckRestart{
18			Limit:          11,
19			Grace:          timeToPtr(11 * time.Second),
20			IgnoreWarnings: true,
21		},
22		Checks: []ServiceCheck{
23			{
24				Name: "all-set",
25				CheckRestart: &CheckRestart{
26					Limit:          22,
27					Grace:          timeToPtr(22 * time.Second),
28					IgnoreWarnings: true,
29				},
30			},
31			{
32				Name: "some-set",
33				CheckRestart: &CheckRestart{
34					Limit: 33,
35					Grace: timeToPtr(33 * time.Second),
36				},
37			},
38			{
39				Name: "unset",
40			},
41		},
42	}
43
44	service.Canonicalize(task, tg, job)
45	assert.Equal(t, service.Checks[0].CheckRestart.Limit, 22)
46	assert.Equal(t, *service.Checks[0].CheckRestart.Grace, 22*time.Second)
47	assert.True(t, service.Checks[0].CheckRestart.IgnoreWarnings)
48
49	assert.Equal(t, service.Checks[1].CheckRestart.Limit, 33)
50	assert.Equal(t, *service.Checks[1].CheckRestart.Grace, 33*time.Second)
51	assert.True(t, service.Checks[1].CheckRestart.IgnoreWarnings)
52
53	assert.Equal(t, service.Checks[2].CheckRestart.Limit, 11)
54	assert.Equal(t, *service.Checks[2].CheckRestart.Grace, 11*time.Second)
55	assert.True(t, service.Checks[2].CheckRestart.IgnoreWarnings)
56}
57
58// TestService_Connect asserts Service.Connect settings are properly
59// inherited by Checks.
60func TestService_Connect(t *testing.T) {
61	job := &Job{Name: stringToPtr("job")}
62	tg := &TaskGroup{Name: stringToPtr("group")}
63	task := &Task{Name: "task"}
64	service := &Service{
65		Connect: &ConsulConnect{
66			SidecarService: &ConsulSidecarService{
67				Proxy: &ConsulProxy{
68					Upstreams: []*ConsulUpstream{
69						{
70							DestinationName: "upstream",
71							LocalBindPort:   80,
72						},
73					},
74					LocalServicePort: 8000,
75				},
76			},
77		},
78	}
79
80	service.Canonicalize(task, tg, job)
81	proxy := service.Connect.SidecarService.Proxy
82	assert.Equal(t, proxy.Upstreams[0].LocalBindPort, 80)
83	assert.Equal(t, proxy.Upstreams[0].DestinationName, "upstream")
84	assert.Equal(t, proxy.LocalServicePort, 8000)
85}
86