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