Skip to content

Commit

Permalink
Increase test coverage for podreaper (#6) (#22)
Browse files Browse the repository at this point in the history
* Refactor `Run` to take in `ReaperContext`

* Refactor podreaper command line to build a `ReaperContext`
  • Loading branch information
pratyushprakash authored and eytan-avisror committed Oct 29, 2019
1 parent ca05516 commit 0b5d58b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 18 deletions.
9 changes: 7 additions & 2 deletions cmd/governor/app/podreaper.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,18 @@ import (

var podReaperArgs podreaper.Args

// reapCmd represents the reap command
// podReapCmd represents the reap command
var podReapCmd = &cobra.Command{
Use: "pod",
Short: "pod invokes the pod reaper",
Long: `reap finds and force deletes pods stuck in Terminating`,
Run: func(cmd *cobra.Command, args []string) {
if err := podreaper.Run(&podReaperArgs); err != nil {
ctx := &podreaper.ReaperContext{}
if err := ctx.ValidateArguments(&podReaperArgs); err != nil {
fmt.Println(err)
os.Exit(1)
}
if err := podreaper.Run(ctx); err != nil {
fmt.Println(err)
os.Exit(1)
}
Expand Down
13 changes: 3 additions & 10 deletions pkg/reaper/podreaper/podreaper.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,12 @@ import (
var log = logrus.New()

// Run is the main runner function for pod-reaper, and will initialize and start the pod-reaper
func Run(args *Args) error {
func Run(ctx *ReaperContext) error {
log.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
})
ctx := &ReaperContext{}

err := ctx.validateArguments(args)
if err != nil {
log.Errorf("failed to validate commandline arguments, %v", err)
return err
}

err = ctx.getTerminatingPods()
err := ctx.getTerminatingPods()
if err != nil {
log.Errorf("failed to get terminating pods, %v", err)
return err
Expand Down Expand Up @@ -173,7 +166,7 @@ func (ctx *ReaperContext) getTerminatingPods() error {
return nil
}

func (ctx *ReaperContext) validateArguments(args *Args) error {
func (ctx *ReaperContext) ValidateArguments(args *Args) error {
ctx.StuckPods = make(map[string]string)
ctx.DryRun = args.DryRun

Expand Down
10 changes: 4 additions & 6 deletions pkg/reaper/podreaper/podreaper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (
"github.com/Pallinder/go-randomdata"
"github.com/aws/aws-sdk-go/aws"
"github.com/keikoproj/governor/pkg/reaper/common"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
)
Expand Down Expand Up @@ -134,9 +134,7 @@ func createFakePods(pods []FakePod, ctx *ReaperContext) {
func (u *ReaperUnitTest) Run(t *testing.T, timeTest bool) {
createFakePods(u.Pods, u.FakeReaper)
start := time.Now()
u.FakeReaper.getTerminatingPods()
u.FakeReaper.deriveStuckPods()
u.FakeReaper.reapStuckPods()
Run(u.FakeReaper)
secondsSince := int(time.Since(start).Seconds())

if timeTest {
Expand Down Expand Up @@ -325,7 +323,7 @@ func TestValidateArgumentsPositive(t *testing.T) {
SoftReap: true,
DryRun: true,
}
reaper.validateArguments(reaperArgs)
reaper.ValidateArguments(reaperArgs)
if reaper.TimeToReap != reaperArgs.ReapAfter {
t.Fatalf("expected TimeToReap: %v, got: %v", reaperArgs.ReapAfter, reaper.TimeToReap)
}
Expand All @@ -345,7 +343,7 @@ func TestValidateArgumentsNegative(t *testing.T) {
SoftReap: false,
DryRun: false,
}
err := reaper.validateArguments(reaperArgs)
err := reaper.ValidateArguments(reaperArgs)
if err == nil {
t.Fatalf("expected Error: %v, got: %v", "--reap-after must be set to a number greater than or equal to 1", err)
}
Expand Down

0 comments on commit 0b5d58b

Please sign in to comment.