- Extracted ParseRelease method from GetKernelVersion to make code
more testable
- Added tests for ParseRelease method
| ... | ... |
@@ -515,9 +515,7 @@ func FindCgroupMountpoint(cgroupType string) (string, error) {
|
| 515 | 515 |
|
| 516 | 516 |
func GetKernelVersion() (*KernelVersionInfo, error) {
|
| 517 | 517 |
var ( |
| 518 |
- flavor string |
|
| 519 |
- kernel, major, minor int |
|
| 520 |
- err error |
|
| 518 |
+ err error |
|
| 521 | 519 |
) |
| 522 | 520 |
|
| 523 | 521 |
uts, err := uname() |
| ... | ... |
@@ -536,7 +534,17 @@ func GetKernelVersion() (*KernelVersionInfo, error) {
|
| 536 | 536 |
// Remove the \x00 from the release for Atoi to parse correctly |
| 537 | 537 |
release = release[:bytes.IndexByte(release, 0)] |
| 538 | 538 |
|
| 539 |
- tmp := strings.SplitN(string(release), "-", 2) |
|
| 539 |
+ return ParseRelease(string(release)) |
|
| 540 |
+} |
|
| 541 |
+ |
|
| 542 |
+func ParseRelease(release string) (*KernelVersionInfo, error) {
|
|
| 543 |
+ var ( |
|
| 544 |
+ flavor string |
|
| 545 |
+ kernel, major, minor int |
|
| 546 |
+ err error |
|
| 547 |
+ ) |
|
| 548 |
+ |
|
| 549 |
+ tmp := strings.SplitN(release, "-", 2) |
|
| 540 | 550 |
tmp2 := strings.Split(tmp[0], ".") |
| 541 | 551 |
|
| 542 | 552 |
if len(tmp2) > 0 {
|
| ... | ... |
@@ -337,3 +337,21 @@ search dotcloud.net`: true, |
| 337 | 337 |
} |
| 338 | 338 |
} |
| 339 | 339 |
} |
| 340 |
+ |
|
| 341 |
+func assertParseRelease(t *testing.T, release string, b *KernelVersionInfo, result int) {
|
|
| 342 |
+ var ( |
|
| 343 |
+ a *KernelVersionInfo |
|
| 344 |
+ ) |
|
| 345 |
+ a, _ = ParseRelease(release) |
|
| 346 |
+ |
|
| 347 |
+ if r := CompareKernelVersion(a, b); r != result {
|
|
| 348 |
+ t.Fatalf("Unexpected kernel version comparison result. Found %d, expected %d", r, result)
|
|
| 349 |
+ } |
|
| 350 |
+} |
|
| 351 |
+ |
|
| 352 |
+func TestParseRelease(t *testing.T) {
|
|
| 353 |
+ assertParseRelease(t, "3.8.0", &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0}, 0)
|
|
| 354 |
+ assertParseRelease(t, "3.4.54.longterm-1", &KernelVersionInfo{Kernel: 3, Major: 4, Minor: 54}, 0)
|
|
| 355 |
+ assertParseRelease(t, "3.4.54.longterm-1", &KernelVersionInfo{Kernel: 3, Major: 4, Minor: 54, Flavor: "1"}, 0)
|
|
| 356 |
+ assertParseRelease(t, "3.8.0-19-generic", &KernelVersionInfo{Kernel: 3, Major: 8, Minor: 0, Flavor: "19-generic"}, 0)
|
|
| 357 |
+} |