package apidApigeeSync

import (
	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
	"time"
)

var _ = Describe("backoff", func() {

	Context("Backoff timeout calculations", func() {

		It("Should properly apply defaults", func() {
			log.Info("Starting backoff tests...")
			b := NewExponentialBackoff(0, 0, 0, true)
			Expect(defaultInitial).To(Equal(b.initial))
			Expect(defaultMax).To(Equal(b.max))
			Expect(defaultFactor).To(Equal(b.factor))

			b = NewExponentialBackoff(-1, -1, -1, true)
			Expect(defaultInitial).To(Equal(b.initial))
			Expect(defaultMax).To(Equal(b.max))
			Expect(defaultFactor).To(Equal(b.factor))
		})

		It("should properly apply exponential backoff strategy", func() {
			b := NewExponentialBackoff(200*time.Millisecond, 2*time.Second, 2, false)
			Expect(200 * time.Millisecond).To(Equal(b.Duration()))
			Expect(1).To(Equal(b.Attempt()))
			Expect(400 * time.Millisecond).To(Equal(b.Duration()))
			Expect(2).To(Equal(b.Attempt()))
			Expect(800 * time.Millisecond).To(Equal(b.Duration()))
			Expect(3).To(Equal(b.Attempt()))
			Expect(1600 * time.Millisecond).To(Equal(b.Duration()))
			Expect(4).To(Equal(b.Attempt()))
		})

		It("should reset properly", func() {
			b := NewExponentialBackoff(200*time.Millisecond, 2*time.Second, 2, false)
			Expect(200 * time.Millisecond).To(Equal(b.Duration()))
			Expect(1).To(Equal(b.Attempt()))
			Expect(400 * time.Millisecond).To(Equal(b.Duration()))
			Expect(2).To(Equal(b.Attempt()))
			Expect(800 * time.Millisecond).To(Equal(b.Duration()))
			Expect(3).To(Equal(b.Attempt()))
			b.Reset()
			Expect(200 * time.Millisecond).To(Equal(b.Duration()))
			Expect(1).To(Equal(b.Attempt()))
			Expect(400 * time.Millisecond).To(Equal(b.Duration()))
			Expect(2).To(Equal(b.Attempt()))
			Expect(800 * time.Millisecond).To(Equal(b.Duration()))
			Expect(3).To(Equal(b.Attempt()))
		})
	})

})
