Depend on k8s.io/utils cpuset
Steps performed: $ find . -name '*.go' -exec sed -i 's|k8s.io/kubernetes/pkg/kubelet/cm/cpuset|k8s.io/utils/cpuset|g' {} \ $ ./hack/update-vendor.sh $ ./hack/update-gofmt.sh $ git rm -r pkg/kubelet/cm/cpuset/
This commit is contained in:
parent
9f46cbc6fa
commit
cede96336a
@ -92,7 +92,6 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
"k8s.io/kubernetes/pkg/kubelet/eviction"
|
||||
@ -108,6 +107,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/util/rlimit"
|
||||
"k8s.io/kubernetes/pkg/volume/util/hostutil"
|
||||
"k8s.io/kubernetes/pkg/volume/util/subpath"
|
||||
"k8s.io/utils/cpuset"
|
||||
"k8s.io/utils/exec"
|
||||
netutils "k8s.io/utils/net"
|
||||
)
|
||||
|
@ -30,9 +30,9 @@ import (
|
||||
tracingapi "k8s.io/component-base/tracing/api/v1"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||
utiltaints "k8s.io/kubernetes/pkg/util/taints"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -31,7 +31,6 @@ import (
|
||||
podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1"
|
||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/podresources"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/devicemanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
@ -40,6 +39,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache"
|
||||
"k8s.io/kubernetes/pkg/kubelet/status"
|
||||
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type ActivePodsFunc func() []*v1.Pod
|
||||
|
@ -24,7 +24,7 @@ import (
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
// LoopControl controls the behavior of the cpu accumulator loop logic
|
||||
|
@ -22,7 +22,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
func TestCPUAccumulatorFreeSockets(t *testing.T) {
|
||||
|
@ -32,11 +32,11 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/containermap"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
"k8s.io/kubernetes/pkg/kubelet/status"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
// ActivePodsFunc is a function that returns a list of pods to reconcile.
|
||||
|
@ -36,8 +36,8 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/containermap"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type mockState struct {
|
||||
|
@ -21,10 +21,10 @@ import (
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/containermap"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/status"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type fakeManager struct {
|
||||
|
@ -20,8 +20,8 @@ import (
|
||||
"k8s.io/api/core/v1"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
// Policy implements logic for pod container to CPU assignment.
|
||||
|
@ -22,8 +22,8 @@ import (
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type nonePolicy struct{}
|
||||
|
@ -20,7 +20,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
func TestNonePolicyName(t *testing.T) {
|
||||
|
@ -27,10 +27,10 @@ import (
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask"
|
||||
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -27,9 +27,9 @@ import (
|
||||
pkgfeatures "k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type staticPolicyTest struct {
|
||||
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||
package state
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
// ContainerCPUAssignments type used in cpu manager state
|
||||
|
@ -25,7 +25,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/containermap"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
var _ State = &stateCheckpoint{}
|
||||
|
@ -26,7 +26,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/containermap"
|
||||
testutil "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state/testing"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
const testingCheckpoint = "cpumanager_checkpoint_test"
|
||||
|
@ -20,7 +20,7 @@ import (
|
||||
"sync"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type stateMemory struct {
|
||||
|
@ -20,7 +20,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
func TestClone(t *testing.T) {
|
||||
|
@ -21,7 +21,7 @@ import (
|
||||
|
||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
// NUMANodeInfo is a map from NUMANode ID to a list of CPU IDs associated with
|
||||
|
@ -22,7 +22,7 @@ import (
|
||||
|
||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
func Test_Discover(t *testing.T) {
|
||||
|
@ -29,9 +29,9 @@ import (
|
||||
pkgfeatures "k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
type testCase struct {
|
||||
|
@ -1,358 +0,0 @@
|
||||
/*
|
||||
Copyright 2017 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package cpuset
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCPUSetSize(t *testing.T) {
|
||||
testCases := []struct {
|
||||
cpuset CPUSet
|
||||
expected int
|
||||
}{
|
||||
{New(), 0},
|
||||
{New(5), 1},
|
||||
{New(1, 2, 3, 4, 5), 5},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
actual := c.cpuset.Size()
|
||||
if actual != c.expected {
|
||||
t.Errorf("expected: %d, actual: %d, cpuset: [%v]", c.expected, actual, c.cpuset)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetIsEmpty(t *testing.T) {
|
||||
testCases := []struct {
|
||||
cpuset CPUSet
|
||||
expected bool
|
||||
}{
|
||||
{New(), true},
|
||||
{New(5), false},
|
||||
{New(1, 2, 3, 4, 5), false},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
actual := c.cpuset.IsEmpty()
|
||||
if actual != c.expected {
|
||||
t.Errorf("expected: %t, IsEmpty() returned: %t, cpuset: [%v]", c.expected, actual, c.cpuset)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetContains(t *testing.T) {
|
||||
testCases := []struct {
|
||||
cpuset CPUSet
|
||||
mustContain []int
|
||||
mustNotContain []int
|
||||
}{
|
||||
{New(), []int{}, []int{1, 2, 3, 4, 5}},
|
||||
{New(5), []int{5}, []int{1, 2, 3, 4}},
|
||||
{New(1, 2, 4, 5), []int{1, 2, 4, 5}, []int{0, 3, 6}},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
for _, elem := range c.mustContain {
|
||||
if !c.cpuset.Contains(elem) {
|
||||
t.Errorf("expected cpuset to contain element %d: [%v]", elem, c.cpuset)
|
||||
}
|
||||
}
|
||||
for _, elem := range c.mustNotContain {
|
||||
if c.cpuset.Contains(elem) {
|
||||
t.Errorf("expected cpuset not to contain element %d: [%v]", elem, c.cpuset)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetEqual(t *testing.T) {
|
||||
shouldEqual := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
}{
|
||||
{New(), New()},
|
||||
{New(5), New(5)},
|
||||
{New(1, 2, 3, 4, 5), New(1, 2, 3, 4, 5)},
|
||||
{New(5, 4, 3, 2, 1), New(1, 2, 3, 4, 5)},
|
||||
}
|
||||
|
||||
shouldNotEqual := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
}{
|
||||
{New(), New(5)},
|
||||
{New(5), New()},
|
||||
{New(), New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), New()},
|
||||
{New(5), New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), New(5)},
|
||||
}
|
||||
|
||||
for _, c := range shouldEqual {
|
||||
if !c.s1.Equals(c.s2) {
|
||||
t.Errorf("expected cpusets to be equal: s1: [%v], s2: [%v]", c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
for _, c := range shouldNotEqual {
|
||||
if c.s1.Equals(c.s2) {
|
||||
t.Errorf("expected cpusets to not be equal: s1: [%v], s2: [%v]", c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetIsSubsetOf(t *testing.T) {
|
||||
shouldBeSubset := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
}{
|
||||
// A set is a subset of itself
|
||||
{New(), New()},
|
||||
{New(5), New(5)},
|
||||
{New(1, 2, 3, 4, 5), New(1, 2, 3, 4, 5)},
|
||||
|
||||
// Empty set is a subset of every set
|
||||
{New(), New(5)},
|
||||
{New(), New(1, 2, 3, 4, 5)},
|
||||
|
||||
{New(5), New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3), New(1, 2, 3, 4, 5)},
|
||||
{New(4, 5), New(1, 2, 3, 4, 5)},
|
||||
{New(2, 3), New(1, 2, 3, 4, 5)},
|
||||
}
|
||||
|
||||
shouldNotBeSubset := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
}{
|
||||
// A set with more elements is not a subset.
|
||||
{New(5), New()},
|
||||
|
||||
// Disjoint set is not a subset.
|
||||
{New(6), New(5)},
|
||||
}
|
||||
|
||||
for _, c := range shouldBeSubset {
|
||||
if !c.s1.IsSubsetOf(c.s2) {
|
||||
t.Errorf("expected s1 to be a subset of s2: s1: [%v], s2: [%v]", c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
for _, c := range shouldNotBeSubset {
|
||||
if c.s1.IsSubsetOf(c.s2) {
|
||||
t.Errorf("expected s1 to not be a subset of s2: s1: [%v], s2: [%v]", c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetUnion(t *testing.T) {
|
||||
testCases := []struct {
|
||||
s1 CPUSet
|
||||
others []CPUSet
|
||||
expected CPUSet
|
||||
}{
|
||||
{New(5), []CPUSet{}, New(5)},
|
||||
|
||||
{New(), []CPUSet{New()}, New()},
|
||||
|
||||
{New(), []CPUSet{New(5)}, New(5)},
|
||||
{New(5), []CPUSet{New()}, New(5)},
|
||||
{New(5), []CPUSet{New(5)}, New(5)},
|
||||
|
||||
{New(), []CPUSet{New(1, 2, 3, 4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), []CPUSet{New()}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), []CPUSet{New(1, 2, 3, 4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
|
||||
{New(5), []CPUSet{New(1, 2, 3, 4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), []CPUSet{New(5)}, New(1, 2, 3, 4, 5)},
|
||||
|
||||
{New(1, 2), []CPUSet{New(3, 4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3), []CPUSet{New(3, 4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
|
||||
{New(), []CPUSet{New(1, 2, 3, 4, 5), New(4, 5)}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), []CPUSet{New(), New(4)}, New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), []CPUSet{New(1, 2, 3, 4, 5), New(1, 5)}, New(1, 2, 3, 4, 5)},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
result := c.s1.Union(c.others...)
|
||||
if !result.Equals(c.expected) {
|
||||
t.Errorf("expected the union of s1 and s2 to be [%v] (got [%v]), others: [%v]", c.expected, result, c.others)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetIntersection(t *testing.T) {
|
||||
testCases := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
expected CPUSet
|
||||
}{
|
||||
{New(), New(), New()},
|
||||
|
||||
{New(), New(5), New()},
|
||||
{New(5), New(), New()},
|
||||
{New(5), New(5), New(5)},
|
||||
|
||||
{New(), New(1, 2, 3, 4, 5), New()},
|
||||
{New(1, 2, 3, 4, 5), New(), New()},
|
||||
{New(1, 2, 3, 4, 5), New(1, 2, 3, 4, 5), New(1, 2, 3, 4, 5)},
|
||||
|
||||
{New(5), New(1, 2, 3, 4, 5), New(5)},
|
||||
{New(1, 2, 3, 4, 5), New(5), New(5)},
|
||||
|
||||
{New(1, 2), New(3, 4, 5), New()},
|
||||
{New(1, 2, 3), New(3, 4, 5), New(3)},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
result := c.s1.Intersection(c.s2)
|
||||
if !result.Equals(c.expected) {
|
||||
t.Errorf("expected the intersection of s1 and s2 to be [%v] (got [%v]), s1: [%v], s2: [%v]", c.expected, result, c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetDifference(t *testing.T) {
|
||||
testCases := []struct {
|
||||
s1 CPUSet
|
||||
s2 CPUSet
|
||||
expected CPUSet
|
||||
}{
|
||||
{New(), New(), New()},
|
||||
|
||||
{New(), New(5), New()},
|
||||
{New(5), New(), New(5)},
|
||||
{New(5), New(5), New()},
|
||||
|
||||
{New(), New(1, 2, 3, 4, 5), New()},
|
||||
{New(1, 2, 3, 4, 5), New(), New(1, 2, 3, 4, 5)},
|
||||
{New(1, 2, 3, 4, 5), New(1, 2, 3, 4, 5), New()},
|
||||
|
||||
{New(5), New(1, 2, 3, 4, 5), New()},
|
||||
{New(1, 2, 3, 4, 5), New(5), New(1, 2, 3, 4)},
|
||||
|
||||
{New(1, 2), New(3, 4, 5), New(1, 2)},
|
||||
{New(1, 2, 3), New(3, 4, 5), New(1, 2)},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
result := c.s1.Difference(c.s2)
|
||||
if !result.Equals(c.expected) {
|
||||
t.Errorf("expected the difference of s1 and s2 to be [%v] (got [%v]), s1: [%v], s2: [%v]", c.expected, result, c.s1, c.s2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetList(t *testing.T) {
|
||||
testCases := []struct {
|
||||
set CPUSet
|
||||
expected []int // must be sorted
|
||||
}{
|
||||
{New(), []int{}},
|
||||
{New(5), []int{5}},
|
||||
{New(1, 2, 3, 4, 5), []int{1, 2, 3, 4, 5}},
|
||||
{New(5, 4, 3, 2, 1), []int{1, 2, 3, 4, 5}},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
result := c.set.List()
|
||||
if !reflect.DeepEqual(result, c.expected) {
|
||||
t.Errorf("unexpected List() contents. got [%v] want [%v] (set: [%v])", result, c.expected, c.set)
|
||||
}
|
||||
|
||||
// We cannot rely on internal storage order details for a unit test.
|
||||
// The best we can do is to sort the output of 'UnsortedList'.
|
||||
result = c.set.UnsortedList()
|
||||
sort.Ints(result)
|
||||
if !reflect.DeepEqual(result, c.expected) {
|
||||
t.Errorf("unexpected UnsortedList() contents. got [%v] want [%v] (set: [%v])", result, c.expected, c.set)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCPUSetString(t *testing.T) {
|
||||
testCases := []struct {
|
||||
set CPUSet
|
||||
expected string
|
||||
}{
|
||||
{New(), ""},
|
||||
{New(5), "5"},
|
||||
{New(1, 2, 3, 4, 5), "1-5"},
|
||||
{New(1, 2, 3, 5, 6, 8), "1-3,5-6,8"},
|
||||
}
|
||||
|
||||
for _, c := range testCases {
|
||||
result := c.set.String()
|
||||
if result != c.expected {
|
||||
t.Errorf("expected set as string to be %s (got \"%s\"), s: [%v]", c.expected, result, c.set)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParse(t *testing.T) {
|
||||
positiveTestCases := []struct {
|
||||
cpusetString string
|
||||
expected CPUSet
|
||||
}{
|
||||
{"", New()},
|
||||
{"5", New(5)},
|
||||
{"1,2,3,4,5", New(1, 2, 3, 4, 5)},
|
||||
{"1-5", New(1, 2, 3, 4, 5)},
|
||||
{"1-2,3-5", New(1, 2, 3, 4, 5)},
|
||||
{"5,4,3,2,1", New(1, 2, 3, 4, 5)}, // Range ordering
|
||||
{"3-6,1-5", New(1, 2, 3, 4, 5, 6)}, // Overlapping ranges
|
||||
{"3-3,5-5", New(3, 5)}, // Very short ranges
|
||||
}
|
||||
|
||||
for _, c := range positiveTestCases {
|
||||
result, err := Parse(c.cpusetString)
|
||||
if err != nil {
|
||||
t.Errorf("expected error not to have occurred: %v", err)
|
||||
}
|
||||
if !result.Equals(c.expected) {
|
||||
t.Errorf("expected string \"%s\" to parse as [%v] (got [%v])", c.cpusetString, c.expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
negativeTestCases := []string{
|
||||
// Non-numeric entries
|
||||
"nonnumeric", "non-numeric", "no,numbers", "0-a", "a-0", "0,a", "a,0", "1-2,a,3-5",
|
||||
// Incomplete sequences
|
||||
"0,", "0,,", ",3", ",,3", "0,,3",
|
||||
// Incomplete ranges and/or negative numbers
|
||||
"-1", "1-", "1,2-,3", "1,-2,3", "-1--2", "--1", "1--",
|
||||
// Reversed ranges
|
||||
"3-0", "0--3"}
|
||||
for _, c := range negativeTestCases {
|
||||
result, err := Parse(c)
|
||||
if err == nil {
|
||||
t.Errorf("expected parse failure of \"%s\", but it succeeded as \"%s\"", c, result.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestClone(t *testing.T) {
|
||||
original := New(1, 2, 3, 4, 5)
|
||||
clone := original.Clone()
|
||||
|
||||
if !original.Equals(clone) {
|
||||
t.Errorf("expected clone [%v] to equal original [%v]", clone, original)
|
||||
}
|
||||
}
|
@ -31,12 +31,12 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2emetrics "k8s.io/kubernetes/test/e2e/framework/metrics"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
"k8s.io/utils/cpuset"
|
||||
)
|
||||
|
||||
var _ = SIGDescribe("CPU Manager Metrics [Serial][Feature:CPUManager]", func() {
|
||||
|
@ -31,9 +31,9 @@ import (
|
||||
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/types"
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
"k8s.io/utils/cpuset"
|
||||
|
||||
"github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
|
@ -37,12 +37,12 @@ import (
|
||||
kubeletpodresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1"
|
||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/podresources"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/state"
|
||||
"k8s.io/kubernetes/pkg/kubelet/util"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
"k8s.io/utils/cpuset"
|
||||
"k8s.io/utils/pointer"
|
||||
|
||||
"github.com/onsi/ginkgo/v2"
|
||||
|
@ -25,7 +25,7 @@ import (
|
||||
"strings"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/utils/cpuset"
|
||||
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
|
@ -34,10 +34,10 @@ import (
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/podresources"
|
||||
podresourcesgrpc "k8s.io/kubernetes/pkg/kubelet/apis/podresources/grpc"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpumanager"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cm/cpuset"
|
||||
"k8s.io/kubernetes/pkg/kubelet/util"
|
||||
testutils "k8s.io/kubernetes/test/utils"
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
"k8s.io/utils/cpuset"
|
||||
|
||||
"github.com/onsi/ginkgo/v2"
|
||||
"github.com/onsi/gomega"
|
||||
|
7
pkg/kubelet/cm/cpuset/OWNERS → vendor/k8s.io/utils/cpuset/OWNERS
generated
vendored
7
pkg/kubelet/cm/cpuset/OWNERS → vendor/k8s.io/utils/cpuset/OWNERS
generated
vendored
@ -1,7 +1,8 @@
|
||||
# See the OWNERS docs at https://go.k8s.io/owners
|
||||
|
||||
approvers:
|
||||
- dchen1107
|
||||
- derekwaynecarr
|
||||
emeritus_approvers:
|
||||
- ConnorDoyle
|
||||
- vishh
|
||||
- ffromani
|
||||
- klueska
|
||||
- SergeyKanzhelev
|
2
pkg/kubelet/cm/cpuset/cpuset.go → vendor/k8s.io/utils/cpuset/cpuset.go
generated
vendored
2
pkg/kubelet/cm/cpuset/cpuset.go → vendor/k8s.io/utils/cpuset/cpuset.go
generated
vendored
@ -23,6 +23,8 @@ limitations under the License.
|
||||
// See http://man7.org/linux/man-pages/man7/cpuset.7.html#FORMATS for details.
|
||||
//
|
||||
// Future work can migrate this to use a 'set' library, and relax the dubious 'immutable' property.
|
||||
//
|
||||
// This package was originally developed in the 'kubernetes' repository.
|
||||
package cpuset
|
||||
|
||||
import (
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
@ -2363,6 +2363,7 @@ k8s.io/system-validators/validators
|
||||
k8s.io/utils/buffer
|
||||
k8s.io/utils/clock
|
||||
k8s.io/utils/clock/testing
|
||||
k8s.io/utils/cpuset
|
||||
k8s.io/utils/exec
|
||||
k8s.io/utils/exec/testing
|
||||
k8s.io/utils/inotify
|
||||
|
Loading…
Reference in New Issue
Block a user