github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/gc/build_log_retention_calculator_test.go (about) 1 package gc_test 2 3 import ( 4 "github.com/pf-qiu/concourse/v6/atc" 5 . "github.com/pf-qiu/concourse/v6/atc/gc" 6 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var _ = Describe("BuildLogRetentionCalculator", func() { 12 It("nothing set gives all", func() { 13 logRetention := NewBuildLogRetentionCalculator(0, 0, 0, 0).BuildLogsToRetain(makeJob(0, 0, 0)) 14 Expect(logRetention.Builds).To(Equal(0)) 15 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 16 Expect(logRetention.Days).To(Equal(0)) 17 }) 18 It("nothing set but job gives job", func() { 19 logRetention := NewBuildLogRetentionCalculator(0, 0, 0, 0).BuildLogsToRetain(makeJob(3, 1, 0)) 20 Expect(logRetention.Builds).To(Equal(3)) 21 Expect(logRetention.MinimumSucceededBuilds).To(Equal(1)) 22 Expect(logRetention.Days).To(Equal(0)) 23 }) 24 It("default set gives default", func() { 25 logRetention := NewBuildLogRetentionCalculator(5, 0, 0, 0).BuildLogsToRetain(makeJob(0, 0, 0)) 26 Expect(logRetention.Builds).To(Equal(5)) 27 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 28 Expect(logRetention.Days).To(Equal(0)) 29 }) 30 It("default and job set gives job", func() { 31 logRetention := NewBuildLogRetentionCalculator(5, 0, 0, 0).BuildLogsToRetain(makeJob(6, 2, 0)) 32 Expect(logRetention.Builds).To(Equal(6)) 33 Expect(logRetention.MinimumSucceededBuilds).To(Equal(2)) 34 Expect(logRetention.Days).To(Equal(0)) 35 }) 36 It("default and job set and max set gives max if lower", func() { 37 logRetention := NewBuildLogRetentionCalculator(5, 4, 0, 0).BuildLogsToRetain(makeJob(6, 7, 0)) 38 Expect(logRetention.Builds).To(Equal(4)) 39 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 40 Expect(logRetention.Days).To(Equal(0)) 41 }) 42 It("max only set gives max", func() { 43 logRetention := NewBuildLogRetentionCalculator(0, 4, 0, 0).BuildLogsToRetain(makeJob(0, 6, 0)) 44 Expect(logRetention.Builds).To(Equal(4)) 45 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 46 Expect(logRetention.Days).To(Equal(0)) 47 }) 48 It("mix of count and days with max", func() { 49 logRetention := NewBuildLogRetentionCalculator(2, 4, 3, 2).BuildLogsToRetain(makeJob(5, 8, 5)) 50 Expect(logRetention.Builds).To(Equal(4)) 51 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 52 Expect(logRetention.Days).To(Equal(2)) 53 }) 54 It("min success builds equals to builds", func() { 55 logRetention := NewBuildLogRetentionCalculator(2, 10, 3, 0).BuildLogsToRetain(makeJob(5, 5, 0)) 56 Expect(logRetention.Builds).To(Equal(5)) 57 Expect(logRetention.MinimumSucceededBuilds).To(Equal(5)) 58 Expect(logRetention.Days).To(Equal(0)) 59 }) 60 It("min success builds greater than builds", func() { 61 logRetention := NewBuildLogRetentionCalculator(2, 10, 3, 0).BuildLogsToRetain(makeJob(5, 8, 0)) 62 Expect(logRetention.Builds).To(Equal(5)) 63 Expect(logRetention.MinimumSucceededBuilds).To(Equal(0)) 64 Expect(logRetention.Days).To(Equal(0)) 65 }) 66 }) 67 68 func makeJob(retainAmount int, retainMinSuccessAmount, retainAmountDays int) atc.JobConfig { 69 return atc.JobConfig{ 70 BuildLogRetention: &atc.BuildLogRetention{ 71 Builds: retainAmount, 72 Days: retainAmountDays, 73 MinimumSucceededBuilds: retainMinSuccessAmount, 74 }, 75 } 76 }