master
go 44 lines 1004 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package pinger
4
5 import (
6 "context"
7 "errors"
8 "syscall"
9 "testing"
10
11 "github.com/netdata/netdata/go/plugins/logger"
12 "github.com/stretchr/testify/assert"
13 "github.com/stretchr/testify/require"
14 )
15
16 func TestProbeError_Unwrap(t *testing.T) {
17 err := &ProbeError{Host: "host", Stage: "run", Err: syscall.EPERM}
18
19 var errno syscall.Errno
20 require.True(t, errors.As(err, &errno))
21 assert.Equal(t, syscall.EPERM, errno)
22 }
23
24 func TestClient_ProbePreservesErrno(t *testing.T) {
25 runner := &fakeRunner{
26 byHost: map[string][]fakeResult{
27 "host": {{err: syscall.EPERM}},
28 },
29 }
30
31 c, err := newClient(testConfig(), logger.NewWithWriter(nil), runner)
32 require.NoError(t, err)
33
34 _, err = c.Probe(context.Background(), "host")
35 require.Error(t, err)
36
37 var probeErr *ProbeError
38 require.True(t, errors.As(err, &probeErr))
39 assert.Equal(t, "host", probeErr.Host)
40
41 var errno syscall.Errno
42 require.True(t, errors.As(err, &errno))
43 assert.Equal(t, syscall.EPERM, errno)
44 }