Merge pull request #431 from ash2k/ash2k/remove-unused-task

Remove unused ResetRESTMapperTask task
This commit is contained in:
Kubernetes Prow Robot 2021-10-14 09:27:27 -07:00 committed by GitHub
commit b76a0bc4ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 0 additions and 142 deletions

View File

@ -1,61 +0,0 @@
// Copyright 2020 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package task
import (
"fmt"
"reflect"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/client-go/restmapper"
"sigs.k8s.io/cli-utils/pkg/apply/taskrunner"
)
// ResetRESTMapperTask resets the provided RESTMapper.
type ResetRESTMapperTask struct {
Mapper meta.RESTMapper
}
// Start creates a new goroutine that will unwrap the provided RESTMapper
// to get the underlying DeferredDiscoveryRESTMapper and then reset it. It
// will send a TaskResult on the taskChannel to signal that the task has
// been completed.
func (r *ResetRESTMapperTask) Start(taskContext *taskrunner.TaskContext) {
go func() {
ddRESTMapper, err := extractDeferredDiscoveryRESTMapper(r.Mapper)
if err != nil {
r.sendTaskResult(taskContext, err)
return
}
ddRESTMapper.Reset()
r.sendTaskResult(taskContext, nil)
}()
}
// extractDeferredDiscoveryRESTMapper unwraps the provided RESTMapper
// interface to get access to the underlying DeferredDiscoveryRESTMapper
// that can be reset.
func extractDeferredDiscoveryRESTMapper(mapper meta.RESTMapper) (*restmapper.DeferredDiscoveryRESTMapper,
error) {
val := reflect.ValueOf(mapper)
if val.Type().Kind() != reflect.Struct {
return nil, fmt.Errorf("unexpected RESTMapper type: %s", val.Type().String())
}
fv := val.FieldByName("RESTMapper")
ddRESTMapper, ok := fv.Interface().(*restmapper.DeferredDiscoveryRESTMapper)
if !ok {
return nil, fmt.Errorf("unexpected RESTMapper type")
}
return ddRESTMapper, nil
}
func (r *ResetRESTMapperTask) sendTaskResult(taskContext *taskrunner.TaskContext, err error) {
taskContext.TaskChannel() <- taskrunner.TaskResult{
Err: err,
}
}
// ClearTimeout doesn't do anything as ResetRESTMapperTask doesn't support
// timeouts.
func (r *ResetRESTMapperTask) ClearTimeout() {}

View File

@ -1,81 +0,0 @@
// Copyright 2020 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package task
import (
"testing"
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/client-go/discovery"
"k8s.io/client-go/restmapper"
"sigs.k8s.io/cli-utils/pkg/apply/cache"
"sigs.k8s.io/cli-utils/pkg/apply/event"
"sigs.k8s.io/cli-utils/pkg/apply/taskrunner"
"sigs.k8s.io/cli-utils/pkg/testutil"
)
func TestResetRESTMapperTask(t *testing.T) {
testCases := map[string]struct {
toRESTMapper func() (meta.RESTMapper, *fakeCachedDiscoveryClient)
expectErr bool
expectedErrMessage string
}{
"correct wrapped RESTMapper": {
toRESTMapper: func() (meta.RESTMapper, *fakeCachedDiscoveryClient) {
discoveryClient := &fakeCachedDiscoveryClient{}
ddRESTMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
return restmapper.NewShortcutExpander(ddRESTMapper, discoveryClient), discoveryClient
},
expectErr: false,
},
"incorrect wrapped RESTMapper": {
toRESTMapper: func() (meta.RESTMapper, *fakeCachedDiscoveryClient) {
return testutil.NewFakeRESTMapper(), nil
},
expectErr: true,
expectedErrMessage: "unexpected RESTMapper type",
},
}
for tn, tc := range testCases {
t.Run(tn, func(t *testing.T) {
eventChannel := make(chan event.Event)
defer close(eventChannel)
resourceCache := cache.NewResourceCacheMap()
taskContext := taskrunner.NewTaskContext(eventChannel, resourceCache)
mapper, discoveryClient := tc.toRESTMapper()
resetRESTMapperTask := &ResetRESTMapperTask{
Mapper: mapper,
}
resetRESTMapperTask.Start(taskContext)
result := <-taskContext.TaskChannel()
if tc.expectErr {
assert.Error(t, result.Err)
assert.Contains(t, result.Err.Error(), tc.expectedErrMessage)
return
}
assert.True(t, discoveryClient.invalidated)
})
}
}
type fakeCachedDiscoveryClient struct {
discovery.DiscoveryInterface
invalidated bool
}
func (d *fakeCachedDiscoveryClient) Fresh() bool {
return true
}
func (d *fakeCachedDiscoveryClient) Invalidate() {
d.invalidated = true
}