github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/pkg/parsers/kernel/kernel_unix_test.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package kernel // import "github.com/docker/docker/pkg/parsers/kernel" 5 6 import ( 7 "fmt" 8 "testing" 9 ) 10 11 func assertParseRelease(t *testing.T, release string, b *VersionInfo, result int) { 12 var ( 13 a *VersionInfo 14 ) 15 a, _ = ParseRelease(release) 16 17 if r := CompareKernelVersion(*a, *b); r != result { 18 t.Fatalf("Unexpected kernel version comparison result for (%v,%v). Found %d, expected %d", release, b, r, result) 19 } 20 if a.Flavor != b.Flavor { 21 t.Fatalf("Unexpected parsed kernel flavor. Found %s, expected %s", a.Flavor, b.Flavor) 22 } 23 } 24 25 // TestParseRelease tests the ParseRelease() function 26 func TestParseRelease(t *testing.T) { 27 assertParseRelease(t, "3.8.0", &VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 0) 28 assertParseRelease(t, "3.4.54.longterm-1", &VersionInfo{Kernel: 3, Major: 4, Minor: 54, Flavor: ".longterm-1"}, 0) 29 assertParseRelease(t, "3.4.54.longterm-1", &VersionInfo{Kernel: 3, Major: 4, Minor: 54, Flavor: ".longterm-1"}, 0) 30 assertParseRelease(t, "3.8.0-19-generic", &VersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "-19-generic"}, 0) 31 assertParseRelease(t, "3.10.0-862.2.3.el7.x86_64", &VersionInfo{Kernel: 3, Major: 10, Minor: 0, Flavor: "-862.2.3.el7.x86_64"}, 0) 32 assertParseRelease(t, "3.12.8tag", &VersionInfo{Kernel: 3, Major: 12, Minor: 8, Flavor: "tag"}, 0) 33 assertParseRelease(t, "3.12-1-amd64", &VersionInfo{Kernel: 3, Major: 12, Minor: 0, Flavor: "-1-amd64"}, 0) 34 assertParseRelease(t, "3.8.0", &VersionInfo{Kernel: 4, Major: 8, Minor: 0}, -1) 35 // Errors 36 invalids := []string{ 37 "3", 38 "a", 39 "a.a", 40 "a.a.a-a", 41 } 42 for _, invalid := range invalids { 43 expectedMessage := fmt.Sprintf("Can't parse kernel version %v", invalid) 44 if _, err := ParseRelease(invalid); err == nil || err.Error() != expectedMessage { 45 if err == nil { 46 t.Fatalf("Expected %q, got nil", expectedMessage) 47 } 48 t.Fatalf("Expected %q, got %q", expectedMessage, err.Error()) 49 } 50 } 51 } 52 53 func assertKernelVersion(t *testing.T, a, b VersionInfo, result int) { 54 if r := CompareKernelVersion(a, b); r != result { 55 t.Fatalf("Unexpected kernel version comparison result. Found %d, expected %d", r, result) 56 } 57 } 58 59 // TestCompareKernelVersion tests the CompareKernelVersion() function 60 func TestCompareKernelVersion(t *testing.T) { 61 assertKernelVersion(t, 62 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 63 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 64 0) 65 assertKernelVersion(t, 66 VersionInfo{Kernel: 2, Major: 6, Minor: 0}, 67 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 68 -1) 69 assertKernelVersion(t, 70 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 71 VersionInfo{Kernel: 2, Major: 6, Minor: 0}, 72 1) 73 assertKernelVersion(t, 74 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 75 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 76 0) 77 assertKernelVersion(t, 78 VersionInfo{Kernel: 3, Major: 8, Minor: 5}, 79 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 80 1) 81 assertKernelVersion(t, 82 VersionInfo{Kernel: 3, Major: 0, Minor: 20}, 83 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 84 -1) 85 assertKernelVersion(t, 86 VersionInfo{Kernel: 3, Major: 7, Minor: 20}, 87 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 88 -1) 89 assertKernelVersion(t, 90 VersionInfo{Kernel: 3, Major: 8, Minor: 20}, 91 VersionInfo{Kernel: 3, Major: 7, Minor: 0}, 92 1) 93 assertKernelVersion(t, 94 VersionInfo{Kernel: 3, Major: 8, Minor: 20}, 95 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 96 1) 97 assertKernelVersion(t, 98 VersionInfo{Kernel: 3, Major: 8, Minor: 0}, 99 VersionInfo{Kernel: 3, Major: 8, Minor: 20}, 100 -1) 101 }