...
1
2
3
4
5
6
7
8 package sysconf_test
9
10 import (
11 "bytes"
12 "os/exec"
13 "strconv"
14 "strings"
15 "testing"
16
17 "github.com/tklauser/go-sysconf"
18 )
19
20 func TestSysconf(t *testing.T) {
21
22
23 val, err := sysconf.Sysconf(sysconf.SC_CLK_TCK)
24 if err != nil {
25 t.Fatalf("Sysconf(SC_CLK_TCK): %v", err)
26 }
27 t.Logf("clock ticks = %v", val)
28
29 _, err = sysconf.Sysconf(-1)
30 if err == nil {
31 t.Errorf("Sysconf(-1) returned %v, want non-nil", err)
32 }
33 }
34
35 func TestOpenMax(t *testing.T) {
36 openMax, err := sysconf.Sysconf(sysconf.SC_OPEN_MAX)
37 if err != nil {
38 t.Fatalf("Sysconf(SC_OPEN_MAX): %v", err)
39 }
40
41
42 _POSIX_OPEN_MAX := int64(20)
43
44
45 if openMax < _POSIX_OPEN_MAX {
46 t.Errorf("Sysconf(SC_OPEN_MAX) (%d) expected to be greater or equal _POSIX_OPEN_MAX (%d)",
47 openMax, _POSIX_OPEN_MAX)
48 }
49 }
50
51 func TestGetconf(t *testing.T) {
52 testCases := []struct {
53 goVar int
54 name string
55 }{
56 {sysconf.SC_CLK_TCK, "CLK_TCK"},
57 {sysconf.SC_HOST_NAME_MAX, "HOST_NAME_MAX"},
58 {sysconf.SC_OPEN_MAX, "OPEN_MAX"},
59 {sysconf.SC_PAGE_SIZE, "PAGE_SIZE"},
60 }
61
62 getconf, err := exec.LookPath("getconf")
63 if err != nil {
64 t.Skipf("getconf not found in PATH: %v", err)
65 }
66
67 for _, tc := range testCases {
68 cmd := exec.Command(getconf, tc.name)
69 var out bytes.Buffer
70 cmd.Stdout = &out
71 if err := cmd.Run(); err != nil {
72
73 t.Skipf("failed to invoke getconf: %v", err)
74 break
75 }
76 want, err := strconv.ParseInt(strings.TrimSpace(out.String()), 10, 64)
77 if err != nil {
78 t.Errorf("strconv.ParseInt: %v", err)
79 }
80
81 got, err := sysconf.Sysconf(tc.goVar)
82 if err != nil {
83 t.Errorf("Sysconf(%s/%d): %v", tc.name, tc.goVar, err)
84 }
85
86 if got != want {
87 t.Errorf("Sysconf(%v/%d) returned %v, want %v", tc.name, tc.goVar, got, want)
88 }
89 }
90 }
91
View as plain text