1
16
17 package sysctl
18
19 import (
20 "fmt"
21 "reflect"
22 "testing"
23
24 "k8s.io/apimachinery/pkg/util/version"
25 )
26
27 func Test_getSafeSysctlAllowlist(t *testing.T) {
28 tests := []struct {
29 name string
30 getVersion func() (*version.Version, error)
31 want []string
32 }{
33 {
34 name: "failed to get kernelVersion, only return safeSysctls with no kernelVersion limit",
35 getVersion: func() (*version.Version, error) {
36 return nil, fmt.Errorf("fork error")
37 },
38 want: []string{
39 "kernel.shm_rmid_forced",
40 "net.ipv4.ip_local_port_range",
41 "net.ipv4.tcp_syncookies",
42 "net.ipv4.ping_group_range",
43 "net.ipv4.ip_unprivileged_port_start",
44 },
45 },
46 {
47 name: "kernelVersion is 3.18.0, return safeSysctls with no kernelVersion limit and net.ipv4.ip_local_reserved_ports",
48 getVersion: func() (*version.Version, error) {
49 kernelVersionStr := "3.18.0-957.27.2.el7.x86_64"
50 return version.ParseGeneric(kernelVersionStr)
51 },
52 want: []string{
53 "kernel.shm_rmid_forced",
54 "net.ipv4.ip_local_port_range",
55 "net.ipv4.tcp_syncookies",
56 "net.ipv4.ping_group_range",
57 "net.ipv4.ip_unprivileged_port_start",
58 "net.ipv4.ip_local_reserved_ports",
59 },
60 },
61 {
62 name: "kernelVersion is 5.15.0, return safeSysctls with no kernelVersion limit and kernelVersion below 5.15.0",
63 getVersion: func() (*version.Version, error) {
64 kernelVersionStr := "5.15.0-75-generic"
65 return version.ParseGeneric(kernelVersionStr)
66 },
67 want: []string{
68 "kernel.shm_rmid_forced",
69 "net.ipv4.ip_local_port_range",
70 "net.ipv4.tcp_syncookies",
71 "net.ipv4.ping_group_range",
72 "net.ipv4.ip_unprivileged_port_start",
73 "net.ipv4.ip_local_reserved_ports",
74 "net.ipv4.tcp_keepalive_time",
75 "net.ipv4.tcp_fin_timeout",
76 "net.ipv4.tcp_keepalive_intvl",
77 "net.ipv4.tcp_keepalive_probes",
78 },
79 },
80 }
81 for _, tt := range tests {
82 t.Run(tt.name, func(t *testing.T) {
83 if got := getSafeSysctlAllowlist(tt.getVersion); !reflect.DeepEqual(got, tt.want) {
84 t.Errorf("getSafeSysctlAllowlist() = %v, want %v", got, tt.want)
85 }
86 })
87 }
88 }
89
View as plain text