master
go 60 lines 1.4 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package nagios
4
5 import (
6 "context"
7 "errors"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 )
12
13 func TestServiceStateFromExecution(t *testing.T) {
14 tests := map[string]struct {
15 exitCode int
16 err error
17 want string
18 }{
19 "success maps to ok": {
20 exitCode: 0,
21 want: nagiosStateOK,
22 },
23 "warning exit maps to warning even when err is non nil": {
24 exitCode: 1,
25 err: errors.New("plugin returned warning"),
26 want: nagiosStateWarning,
27 },
28 "critical exit maps to critical even when err is non nil": {
29 exitCode: 2,
30 err: errors.New("plugin returned critical"),
31 want: nagiosStateCritical,
32 },
33 "unknown exit maps to unknown even when err is non nil": {
34 exitCode: 3,
35 err: errors.New("plugin returned unknown"),
36 want: nagiosStateUnknown,
37 },
38 "timeout maps to unknown service state": {
39 exitCode: -1,
40 err: errNagiosCheckTimeout,
41 want: nagiosStateUnknown,
42 },
43 "deadline exceeded maps to unknown service state": {
44 exitCode: -1,
45 err: context.DeadlineExceeded,
46 want: nagiosStateUnknown,
47 },
48 "non nagios exit defaults to unknown": {
49 exitCode: 7,
50 err: errors.New("bad exit"),
51 want: nagiosStateUnknown,
52 },
53 }
54
55 for name, tc := range tests {
56 t.Run(name, func(t *testing.T) {
57 assert.Equal(t, tc.want, serviceStateFromExecution(tc.exitCode, tc.err))
58 })
59 }
60 }