|
8 | 8 | "time" |
9 | 9 |
|
10 | 10 | "github.com/weaveworks/tcptracer-bpf/pkg/tracer" |
| 11 | + |
| 12 | + "github.com/weaveworks/scope/probe/host" |
11 | 13 | ) |
12 | 14 |
|
13 | 15 | func newMockEbpfTracker() *EbpfTracker { |
@@ -233,3 +235,74 @@ func TestInvalidTimeStampDead(t *testing.T) { |
233 | 235 | t.Errorf("expected ebpfTracker to be set to dead after events with wrong order") |
234 | 236 | } |
235 | 237 | } |
| 238 | + |
| 239 | +func TestIsKernelSupported(t *testing.T) { |
| 240 | + var release, version string |
| 241 | + oldGetKernelReleaseAndVersion := host.GetKernelReleaseAndVersion |
| 242 | + defer func() { |
| 243 | + host.GetKernelReleaseAndVersion = oldGetKernelReleaseAndVersion |
| 244 | + }() |
| 245 | + host.GetKernelReleaseAndVersion = func() (string, string, error) { return release, version, nil } |
| 246 | + testVersions := []struct { |
| 247 | + release string |
| 248 | + version string |
| 249 | + supported bool |
| 250 | + }{ |
| 251 | + { |
| 252 | + "4.1", |
| 253 | + "", |
| 254 | + false, |
| 255 | + }, |
| 256 | + { |
| 257 | + "4.4", |
| 258 | + "", |
| 259 | + true, |
| 260 | + }, |
| 261 | + { |
| 262 | + "4.4-custom", |
| 263 | + "", |
| 264 | + true, |
| 265 | + }, |
| 266 | + { |
| 267 | + "4.4.127", |
| 268 | + "", |
| 269 | + true, |
| 270 | + }, |
| 271 | + { |
| 272 | + "4.4.0-119-generic", |
| 273 | + "#143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018", |
| 274 | + false, |
| 275 | + }, |
| 276 | + { |
| 277 | + "4.4.0-116-generic", |
| 278 | + "#140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018", |
| 279 | + true, |
| 280 | + }, |
| 281 | + { |
| 282 | + "4.13.0-38-generic", |
| 283 | + "#43-Ubuntu SMP Wed Mar 14 15:20:44 UTC 2018", |
| 284 | + true, |
| 285 | + }, |
| 286 | + { |
| 287 | + "4.13.0-119-generic", |
| 288 | + "#43-Ubuntu SMP Wed Apr 1 00:00:00 UTC 2018", |
| 289 | + true, |
| 290 | + }, |
| 291 | + { |
| 292 | + "4.9.0-6-amd64", |
| 293 | + "#1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02)", |
| 294 | + true, |
| 295 | + }, |
| 296 | + } |
| 297 | + for _, tv := range testVersions { |
| 298 | + release = tv.release |
| 299 | + version = tv.version |
| 300 | + err := isKernelSupported() |
| 301 | + if tv.supported && err != nil { |
| 302 | + t.Errorf("expected kernel release %q version %q to be supported but got error: %v", release, version, err) |
| 303 | + } |
| 304 | + if !tv.supported && err == nil { |
| 305 | + t.Errorf("expected kernel release %q version %q to not be supported", release, version) |
| 306 | + } |
| 307 | + } |
| 308 | +} |
0 commit comments