mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
fieldmanager: Make all tests external
This commit is contained in:
parent
9c447177e8
commit
56cac64655
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -29,18 +29,19 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
|
"sigs.k8s.io/structured-merge-diff/v4/fieldpath"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeManager struct{}
|
type fakeManager struct{}
|
||||||
|
|
||||||
var _ Manager = &fakeManager{}
|
var _ fieldmanager.Manager = &fakeManager{}
|
||||||
|
|
||||||
func (*fakeManager) Update(_, newObj runtime.Object, managed Managed, _ string) (runtime.Object, Managed, error) {
|
func (*fakeManager) Update(_, newObj runtime.Object, managed fieldmanager.Managed, _ string) (runtime.Object, fieldmanager.Managed, error) {
|
||||||
return newObj, managed, nil
|
return newObj, managed, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*fakeManager) Apply(_, _ runtime.Object, _ Managed, _ string, _ bool) (runtime.Object, Managed, error) {
|
func (*fakeManager) Apply(_, _ runtime.Object, _ fieldmanager.Managed, _ string, _ bool) (runtime.Object, fieldmanager.Managed, error) {
|
||||||
panic("not implemented")
|
panic("not implemented")
|
||||||
return nil, nil, nil
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
@ -48,8 +49,8 @@ func (*fakeManager) Apply(_, _ runtime.Object, _ Managed, _ string, _ bool) (run
|
|||||||
func TestCapManagersManagerMergesEntries(t *testing.T) {
|
func TestCapManagersManagerMergesEntries(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"),
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"),
|
||||||
"",
|
"",
|
||||||
func(m Manager) Manager {
|
func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewCapManagersManager(m, 3)
|
return fieldmanager.NewCapManagersManager(m, 3)
|
||||||
})
|
})
|
||||||
|
|
||||||
podWithLabels := func(labels ...string) runtime.Object {
|
podWithLabels := func(labels ...string) runtime.Object {
|
||||||
@ -114,8 +115,8 @@ func TestCapManagersManagerMergesEntries(t *testing.T) {
|
|||||||
func TestCapUpdateManagers(t *testing.T) {
|
func TestCapUpdateManagers(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"),
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"),
|
||||||
"",
|
"",
|
||||||
func(m Manager) Manager {
|
func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewCapManagersManager(m, 3)
|
return fieldmanager.NewCapManagersManager(m, 3)
|
||||||
})
|
})
|
||||||
|
|
||||||
set := func(fields ...string) *metav1.FieldsV1 {
|
set := func(fields ...string) *metav1.FieldsV1 {
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@ -36,6 +36,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
yamlutil "k8s.io/apimachinery/pkg/util/yaml"
|
yamlutil "k8s.io/apimachinery/pkg/util/yaml"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal"
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal"
|
||||||
"k8s.io/kube-openapi/pkg/util/proto"
|
"k8s.io/kube-openapi/pkg/util/proto"
|
||||||
prototesting "k8s.io/kube-openapi/pkg/util/proto/testing"
|
prototesting "k8s.io/kube-openapi/pkg/util/proto/testing"
|
||||||
@ -89,7 +90,7 @@ func (sameVersionConverter) IsMissingVersionError(error) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TestFieldManager struct {
|
type TestFieldManager struct {
|
||||||
fieldManager *FieldManager
|
fieldManager *fieldmanager.FieldManager
|
||||||
apiVersion string
|
apiVersion string
|
||||||
emptyObj runtime.Object
|
emptyObj runtime.Object
|
||||||
liveObj runtime.Object
|
liveObj runtime.Object
|
||||||
@ -99,12 +100,12 @@ func NewDefaultTestFieldManager(gvk schema.GroupVersionKind) TestFieldManager {
|
|||||||
return NewTestFieldManager(gvk, "", nil)
|
return NewTestFieldManager(gvk, "", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTestFieldManager(gvk schema.GroupVersionKind, subresource string, chainFieldManager func(Manager) Manager) TestFieldManager {
|
func NewTestFieldManager(gvk schema.GroupVersionKind, subresource string, chainFieldManager func(fieldmanager.Manager) fieldmanager.Manager) TestFieldManager {
|
||||||
m := NewFakeOpenAPIModels()
|
m := NewFakeOpenAPIModels()
|
||||||
typeConverter := NewFakeTypeConverter(m)
|
typeConverter := NewFakeTypeConverter(m)
|
||||||
apiVersion := fieldpath.APIVersion(gvk.GroupVersion().String())
|
apiVersion := fieldpath.APIVersion(gvk.GroupVersion().String())
|
||||||
objectConverter := &fakeObjectConvertor{sameVersionConverter{}, apiVersion}
|
objectConverter := &fakeObjectConvertor{sameVersionConverter{}, apiVersion}
|
||||||
f, err := NewStructuredMergeManager(
|
f, err := fieldmanager.NewStructuredMergeManager(
|
||||||
typeConverter,
|
typeConverter,
|
||||||
objectConverter,
|
objectConverter,
|
||||||
&fakeObjectDefaulter{},
|
&fakeObjectDefaulter{},
|
||||||
@ -118,14 +119,14 @@ func NewTestFieldManager(gvk schema.GroupVersionKind, subresource string, chainF
|
|||||||
live := &unstructured.Unstructured{}
|
live := &unstructured.Unstructured{}
|
||||||
live.SetKind(gvk.Kind)
|
live.SetKind(gvk.Kind)
|
||||||
live.SetAPIVersion(gvk.GroupVersion().String())
|
live.SetAPIVersion(gvk.GroupVersion().String())
|
||||||
f = NewLastAppliedUpdater(
|
f = fieldmanager.NewLastAppliedUpdater(
|
||||||
NewLastAppliedManager(
|
fieldmanager.NewLastAppliedManager(
|
||||||
NewProbabilisticSkipNonAppliedManager(
|
fieldmanager.NewProbabilisticSkipNonAppliedManager(
|
||||||
NewBuildManagerInfoManager(
|
fieldmanager.NewBuildManagerInfoManager(
|
||||||
NewManagedFieldsUpdater(
|
fieldmanager.NewManagedFieldsUpdater(
|
||||||
NewStripMetaManager(f),
|
fieldmanager.NewStripMetaManager(f),
|
||||||
), gvk.GroupVersion(), subresource,
|
), gvk.GroupVersion(), subresource,
|
||||||
), &fakeObjectCreater{gvk: gvk}, gvk, DefaultTrackOnCreateProbability,
|
), &fakeObjectCreater{gvk: gvk}, gvk, fieldmanager.DefaultTrackOnCreateProbability,
|
||||||
), typeConverter, objectConverter, gvk.GroupVersion(),
|
), typeConverter, objectConverter, gvk.GroupVersion(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -133,15 +134,15 @@ func NewTestFieldManager(gvk schema.GroupVersionKind, subresource string, chainF
|
|||||||
f = chainFieldManager(f)
|
f = chainFieldManager(f)
|
||||||
}
|
}
|
||||||
return TestFieldManager{
|
return TestFieldManager{
|
||||||
fieldManager: NewFieldManager(f, subresource),
|
fieldManager: fieldmanager.NewFieldManager(f, subresource),
|
||||||
apiVersion: gvk.GroupVersion().String(),
|
apiVersion: gvk.GroupVersion().String(),
|
||||||
emptyObj: live,
|
emptyObj: live,
|
||||||
liveObj: live.DeepCopyObject(),
|
liveObj: live.DeepCopyObject(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewFakeTypeConverter(m proto.Models) TypeConverter {
|
func NewFakeTypeConverter(m proto.Models) fieldmanager.TypeConverter {
|
||||||
tc, err := NewTypeConverter(m, false)
|
tc, err := fieldmanager.NewTypeConverter(m, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("Failed to build TypeConverter: %v", err))
|
panic(fmt.Sprintf("Failed to build TypeConverter: %v", err))
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -26,14 +26,15 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLastAppliedUpdater(t *testing.T) {
|
func TestLastAppliedUpdater(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("apps/v1", "Deployment"),
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("apps/v1", "Deployment"),
|
||||||
"",
|
"",
|
||||||
func(m Manager) Manager {
|
func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewLastAppliedUpdater(m)
|
return fieldmanager.NewLastAppliedUpdater(m)
|
||||||
})
|
})
|
||||||
|
|
||||||
originalLastApplied := `nonempty`
|
originalLastApplied := `nonempty`
|
||||||
@ -189,8 +190,8 @@ func TestLargeLastApplied(t *testing.T) {
|
|||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "ConfigMap"),
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "ConfigMap"),
|
||||||
"",
|
"",
|
||||||
func(m Manager) Manager {
|
func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewLastAppliedUpdater(m)
|
return fieldmanager.NewLastAppliedUpdater(m)
|
||||||
})
|
})
|
||||||
|
|
||||||
if err := f.Apply(test.oldObject, "kubectl", false); err != nil {
|
if err := f.Apply(test.oldObject, "kubectl", false); err != nil {
|
||||||
|
@ -14,19 +14,21 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal"
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal"
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
@ -425,11 +427,11 @@ func TestTakingOverManagedFieldsDuringApplyDoesNotModifyPreviousManagerTime(t *t
|
|||||||
|
|
||||||
type NoopManager struct{}
|
type NoopManager struct{}
|
||||||
|
|
||||||
func (NoopManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, fieldManager string, force bool) (runtime.Object, Managed, error) {
|
func (NoopManager) Apply(liveObj, appliedObj runtime.Object, managed fieldmanager.Managed, fieldManager string, force bool) (runtime.Object, fieldmanager.Managed, error) {
|
||||||
return nil, managed, nil
|
return nil, managed, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NoopManager) Update(liveObj, newObj runtime.Object, managed Managed, manager string) (runtime.Object, Managed, error) {
|
func (NoopManager) Update(liveObj, newObj runtime.Object, managed fieldmanager.Managed, manager string) (runtime.Object, fieldmanager.Managed, error) {
|
||||||
return nil, nil, nil
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -495,12 +497,12 @@ func TestNilNewObjectReplacedWithDeepCopyExcludingManagedFields(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Decode the managed fields in the live object, since it isn't allowed in the patch.
|
// Decode the managed fields in the live object, since it isn't allowed in the patch.
|
||||||
managed, err := DecodeManagedFields(accessor.GetManagedFields())
|
managed, err := fieldmanager.DecodeManagedFields(accessor.GetManagedFields())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to decode managed fields: %v", err)
|
t.Fatalf("failed to decode managed fields: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
updater := NewManagedFieldsUpdater(NoopManager{})
|
updater := fieldmanager.NewManagedFieldsUpdater(NoopManager{})
|
||||||
|
|
||||||
newObject, _, err := updater.Apply(obj, obj.DeepCopyObject(), managed, "some_manager", false)
|
newObject, _, err := updater.Apply(obj, obj.DeepCopyObject(), managed, "some_manager", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package fieldmanager
|
package fieldmanager_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
@ -25,6 +25,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -42,8 +43,8 @@ func (f *fakeObjectCreater) New(_ schema.GroupVersionKind) (runtime.Object, erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNoUpdateBeforeFirstApply(t *testing.T) {
|
func TestNoUpdateBeforeFirstApply(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m Manager) Manager {
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewSkipNonAppliedManager(
|
return fieldmanager.NewSkipNonAppliedManager(
|
||||||
m,
|
m,
|
||||||
&fakeObjectCreater{gvk: schema.GroupVersionKind{Version: "v1", Kind: "Pod"}},
|
&fakeObjectCreater{gvk: schema.GroupVersionKind{Version: "v1", Kind: "Pod"}},
|
||||||
schema.GroupVersionKind{},
|
schema.GroupVersionKind{},
|
||||||
@ -82,8 +83,8 @@ func TestNoUpdateBeforeFirstApply(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateBeforeFirstApply(t *testing.T) {
|
func TestUpdateBeforeFirstApply(t *testing.T) {
|
||||||
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m Manager) Manager {
|
f := NewTestFieldManager(schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m fieldmanager.Manager) fieldmanager.Manager {
|
||||||
return NewSkipNonAppliedManager(
|
return fieldmanager.NewSkipNonAppliedManager(
|
||||||
m,
|
m,
|
||||||
&fakeObjectCreater{gvk: schema.GroupVersionKind{Version: "v1", Kind: "Pod"}},
|
&fakeObjectCreater{gvk: schema.GroupVersionKind{Version: "v1", Kind: "Pod"}},
|
||||||
schema.GroupVersionKind{},
|
schema.GroupVersionKind{},
|
||||||
|
Loading…
Reference in New Issue
Block a user