default_linux_test.go 904 B

1234567891011121314151617181920212223242526272829303132333435
  1. //go:build linux && !android && !e2e_testing
  2. package cpupick
  3. import (
  4. "slices"
  5. "testing"
  6. "github.com/slackhq/nebula/util"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestDefaultSkipsAvoided(t *testing.T) {
  11. allowed, err := util.AllowedCPUs()
  12. require.NoError(t, err)
  13. if len(allowed) < 2 {
  14. t.Skip("requires at least two allowed CPUs")
  15. }
  16. avoid := allowed[:len(allowed)/2]
  17. for key := range uint64(16) {
  18. got := Default(len(allowed), key, avoid, nil)
  19. require.NotEmpty(t, got)
  20. for _, cpu := range got {
  21. assert.NotContains(t, avoid, cpu, "key %d", key)
  22. assert.Contains(t, allowed, cpu, "key %d", key)
  23. }
  24. }
  25. assert.Nil(t, Default(2, 0, allowed, nil), "avoiding everything leaves nothing to suggest")
  26. // Without avoid every allowed CPU stays in play
  27. got := Default(len(allowed), 0, nil, nil)
  28. slices.Sort(got)
  29. assert.Equal(t, allowed, got)
  30. }