Commit b38c25eb authored by Clayton Coleman's avatar Clayton Coleman

Shorten scheduler/factory test by making backoff a struct var

parent e67786b2
...@@ -112,6 +112,9 @@ func (f *ConfigFactory) CreateFromKeys(predicateKeys, priorityKeys util.StringSe ...@@ -112,6 +112,9 @@ func (f *ConfigFactory) CreateFromKeys(predicateKeys, priorityKeys util.StringSe
podBackoff := podBackoff{ podBackoff := podBackoff{
perPodBackoff: map[string]*backoffEntry{}, perPodBackoff: map[string]*backoffEntry{},
clock: realClock{}, clock: realClock{},
defaultDuration: 1 * time.Second,
maxDuration: 60 * time.Second,
} }
return &scheduler.Config{ return &scheduler.Config{
...@@ -248,6 +251,8 @@ type podBackoff struct { ...@@ -248,6 +251,8 @@ type podBackoff struct {
perPodBackoff map[string]*backoffEntry perPodBackoff map[string]*backoffEntry
lock sync.Mutex lock sync.Mutex
clock clock clock clock
defaultDuration time.Duration
maxDuration time.Duration
} }
func (p *podBackoff) getEntry(podID string) *backoffEntry { func (p *podBackoff) getEntry(podID string) *backoffEntry {
...@@ -255,7 +260,7 @@ func (p *podBackoff) getEntry(podID string) *backoffEntry { ...@@ -255,7 +260,7 @@ func (p *podBackoff) getEntry(podID string) *backoffEntry {
defer p.lock.Unlock() defer p.lock.Unlock()
entry, ok := p.perPodBackoff[podID] entry, ok := p.perPodBackoff[podID]
if !ok { if !ok {
entry = &backoffEntry{backoff: 1 * time.Second} entry = &backoffEntry{backoff: p.defaultDuration}
p.perPodBackoff[podID] = entry p.perPodBackoff[podID] = entry
} }
entry.lastUpdate = p.clock.Now() entry.lastUpdate = p.clock.Now()
...@@ -266,8 +271,8 @@ func (p *podBackoff) getBackoff(podID string) time.Duration { ...@@ -266,8 +271,8 @@ func (p *podBackoff) getBackoff(podID string) time.Duration {
entry := p.getEntry(podID) entry := p.getEntry(podID)
duration := entry.backoff duration := entry.backoff
entry.backoff *= 2 entry.backoff *= 2
if entry.backoff > 60*time.Second { if entry.backoff > p.maxDuration {
entry.backoff = 60 * time.Second entry.backoff = p.maxDuration
} }
glog.V(4).Infof("Backing off %s for pod %s", duration.String(), podID) glog.V(4).Infof("Backing off %s for pod %s", duration.String(), podID)
return duration return duration
...@@ -282,7 +287,7 @@ func (p *podBackoff) gc() { ...@@ -282,7 +287,7 @@ func (p *podBackoff) gc() {
defer p.lock.Unlock() defer p.lock.Unlock()
now := p.clock.Now() now := p.clock.Now()
for podID, entry := range p.perPodBackoff { for podID, entry := range p.perPodBackoff {
if now.Sub(entry.lastUpdate) > 60*time.Second { if now.Sub(entry.lastUpdate) > p.maxDuration {
delete(p.perPodBackoff, podID) delete(p.perPodBackoff, podID)
} }
} }
......
...@@ -120,6 +120,8 @@ func TestDefaultErrorFunc(t *testing.T) { ...@@ -120,6 +120,8 @@ func TestDefaultErrorFunc(t *testing.T) {
podBackoff := podBackoff{ podBackoff := podBackoff{
perPodBackoff: map[string]*backoffEntry{}, perPodBackoff: map[string]*backoffEntry{},
clock: &fakeClock{}, clock: &fakeClock{},
defaultDuration: 1 * time.Millisecond,
maxDuration: 1 * time.Second,
} }
errFunc := factory.makeDefaultErrorFunc(&podBackoff, queue) errFunc := factory.makeDefaultErrorFunc(&podBackoff, queue)
...@@ -205,6 +207,8 @@ func TestBackoff(t *testing.T) { ...@@ -205,6 +207,8 @@ func TestBackoff(t *testing.T) {
backoff := podBackoff{ backoff := podBackoff{
perPodBackoff: map[string]*backoffEntry{}, perPodBackoff: map[string]*backoffEntry{},
clock: &clock, clock: &clock,
defaultDuration: 1 * time.Second,
maxDuration: 60 * time.Second,
} }
tests := []struct { tests := []struct {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment