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  }