Skip to content

Commit

Permalink
fix: Fix unintentionally importing envtest when running NewTestingQue…
Browse files Browse the repository at this point in the history
…ue (#1660)
  • Loading branch information
jonathan-innis committed Sep 12, 2024
1 parent 14cd098 commit e298f7c
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 26 deletions.
18 changes: 0 additions & 18 deletions pkg/controllers/disruption/orchestration/queue.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ import (
"sigs.k8s.io/karpenter/pkg/events"
"sigs.k8s.io/karpenter/pkg/metrics"
"sigs.k8s.io/karpenter/pkg/operator/injection"
"sigs.k8s.io/karpenter/pkg/test"
)

const (
Expand Down Expand Up @@ -141,23 +140,6 @@ func NewQueue(kubeClient client.Client, recorder events.Recorder, cluster *state
return queue
}

func NewTestingQueue(kubeClient client.Client, recorder events.Recorder, cluster *state.Cluster, clock clock.Clock,
provisioner *provisioning.Provisioner) *Queue {

queue := &Queue{
// nolint:staticcheck
// We need to implement a deprecated interface since Command currently doesn't implement "comparable"
RateLimitingInterface: test.NewRateLimitingInterface(workqueue.QueueConfig{Name: "disruption.workqueue"}),
providerIDToCommand: map[string]*Command{},
kubeClient: kubeClient,
recorder: recorder,
cluster: cluster,
clock: clock,
provisioner: provisioner,
}
return queue
}

// NewCommand creates a command key and adds in initial data for the orchestration queue.
func NewCommand(replacements []string, candidates []*state.StateNode, id types.UID, reason v1.DisruptionReason, consolidationType string) *Command {
return &Command{
Expand Down
25 changes: 21 additions & 4 deletions pkg/controllers/disruption/orchestration/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,15 @@ import (
"testing"
"time"

"github.com/samber/lo"
"k8s.io/client-go/util/workqueue"

"sigs.k8s.io/karpenter/pkg/events"

"sigs.k8s.io/karpenter/pkg/test/v1alpha1"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/samber/lo"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand All @@ -41,8 +47,9 @@ import (
"sigs.k8s.io/karpenter/pkg/operator/options"
"sigs.k8s.io/karpenter/pkg/test"
. "sigs.k8s.io/karpenter/pkg/test/expectations"
"sigs.k8s.io/karpenter/pkg/test/v1alpha1"
. "sigs.k8s.io/karpenter/pkg/utils/testing"

clockiface "k8s.io/utils/clock"
)

var ctx context.Context
Expand Down Expand Up @@ -79,15 +86,15 @@ var _ = BeforeSuite(func() {
nodeClaimStateController = informer.NewNodeClaimController(env.Client, cluster)
recorder = test.NewEventRecorder()
prov = provisioning.NewProvisioner(env.Client, recorder, cloudProvider, cluster)
queue = orchestration.NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov)
queue = NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov)
})

var _ = AfterSuite(func() {
Expect(env.Stop()).To(Succeed(), "Failed to stop environment")
})

var _ = BeforeEach(func() {
*queue = lo.FromPtr(orchestration.NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov))
*queue = lo.FromPtr(NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov))
recorder.Reset() // Reset the events that we captured during the run
cluster.Reset()
cloudProvider.Reset()
Expand Down Expand Up @@ -341,3 +348,13 @@ var _ = Describe("Queue", func() {

})
})

func NewTestingQueue(kubeClient client.Client, recorder events.Recorder, cluster *state.Cluster, clock clockiface.Clock,
provisioner *provisioning.Provisioner) *orchestration.Queue {

q := orchestration.NewQueue(kubeClient, recorder, cluster, clock, provisioner)
// nolint:staticcheck
// We need to implement a deprecated interface since Command currently doesn't implement "comparable"
q.RateLimitingInterface = test.NewRateLimitingInterface(workqueue.QueueConfig{Name: "disruption.workqueue"})
return q
}
24 changes: 20 additions & 4 deletions pkg/controllers/disruption/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ import (
"testing"
"time"

"k8s.io/client-go/util/workqueue"
clockiface "k8s.io/utils/clock"

"sigs.k8s.io/karpenter/pkg/events"
"sigs.k8s.io/karpenter/pkg/metrics"

"sigs.k8s.io/karpenter/pkg/test/v1alpha1"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/samber/lo"
Expand All @@ -44,12 +52,10 @@ import (
"sigs.k8s.io/karpenter/pkg/controllers/provisioning"
"sigs.k8s.io/karpenter/pkg/controllers/state"
"sigs.k8s.io/karpenter/pkg/controllers/state/informer"
"sigs.k8s.io/karpenter/pkg/metrics"
"sigs.k8s.io/karpenter/pkg/operator/options"
"sigs.k8s.io/karpenter/pkg/scheduling"
"sigs.k8s.io/karpenter/pkg/test"
. "sigs.k8s.io/karpenter/pkg/test/expectations"
"sigs.k8s.io/karpenter/pkg/test/v1alpha1"
disruptionutils "sigs.k8s.io/karpenter/pkg/utils/disruption"
"sigs.k8s.io/karpenter/pkg/utils/pdb"
. "sigs.k8s.io/karpenter/pkg/utils/testing"
Expand Down Expand Up @@ -91,7 +97,7 @@ var _ = BeforeSuite(func() {
nodeClaimStateController = informer.NewNodeClaimController(env.Client, cluster)
recorder = test.NewEventRecorder()
prov = provisioning.NewProvisioner(env.Client, recorder, cloudProvider, cluster)
queue = orchestration.NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov)
queue = NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov)
disruptionController = disruption.NewController(fakeClock, env.Client, prov, cloudProvider, recorder, cluster, queue)
})

Expand All @@ -111,7 +117,7 @@ var _ = BeforeEach(func() {
}
fakeClock.SetTime(time.Now())
cluster.Reset()
*queue = lo.FromPtr(orchestration.NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov))
*queue = lo.FromPtr(NewTestingQueue(env.Client, recorder, cluster, fakeClock, prov))
cluster.MarkUnconsolidated()

// Reset Feature Flags to test defaults
Expand Down Expand Up @@ -2114,3 +2120,13 @@ func ExpectMakeNewNodeClaimsReady(ctx context.Context, c client.Client, wg *sync
}
}()
}

func NewTestingQueue(kubeClient client.Client, recorder events.Recorder, cluster *state.Cluster, clock clockiface.Clock,
provisioner *provisioning.Provisioner) *orchestration.Queue {

q := orchestration.NewQueue(kubeClient, recorder, cluster, clock, provisioner)
// nolint:staticcheck
// We need to implement a deprecated interface since Command currently doesn't implement "comparable"
q.RateLimitingInterface = test.NewRateLimitingInterface(workqueue.QueueConfig{Name: "disruption.workqueue"})
return q
}

0 comments on commit e298f7c

Please sign in to comment.