github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/container_owner_test.go (about)

     1  package db_test
     2  
     3  import (
     4  	"time"
     5  
     6  	sq "github.com/Masterminds/squirrel"
     7  	"github.com/pf-qiu/concourse/v6/atc"
     8  	"github.com/pf-qiu/concourse/v6/atc/db"
     9  
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("ContainerOwner", func() {
    15  	Describe("ResourceConfigCheckSessionContainerOwner", func() {
    16  		var (
    17  			worker db.Worker
    18  
    19  			owner         db.ContainerOwner
    20  			ownerExpiries db.ContainerOwnerExpiries
    21  			found         bool
    22  
    23  			resourceConfig db.ResourceConfig
    24  		)
    25  
    26  		ownerExpiries = db.ContainerOwnerExpiries{
    27  			Min: 5 * time.Minute,
    28  			Max: 5 * time.Minute,
    29  		}
    30  
    31  		BeforeEach(func() {
    32  			workerPayload := atc.Worker{
    33  				ResourceTypes:   []atc.WorkerResourceType{defaultWorkerResourceType},
    34  				Name:            "resource-config-check-session-worker",
    35  				GardenAddr:      "1.2.3.4:7778",
    36  				BaggageclaimURL: "5.6.7.8:7879",
    37  			}
    38  
    39  			var err error
    40  			worker, err = workerFactory.SaveWorker(workerPayload, 0)
    41  			Expect(err).NotTo(HaveOccurred())
    42  
    43  			resourceConfig, err = resourceConfigFactory.FindOrCreateResourceConfig(
    44  				defaultWorkerResourceType.Type,
    45  				atc.Source{
    46  					"some-type": "source",
    47  				},
    48  				atc.VersionedResourceTypes{},
    49  			)
    50  			Expect(err).ToNot(HaveOccurred())
    51  		})
    52  
    53  		JustBeforeEach(func() {
    54  			owner = db.NewResourceConfigCheckSessionContainerOwner(
    55  				resourceConfig.ID(),
    56  				resourceConfig.OriginBaseResourceType().ID,
    57  				ownerExpiries,
    58  			)
    59  		})
    60  
    61  		Describe("Find/Create", func() {
    62  			var foundColumns sq.Eq
    63  
    64  			JustBeforeEach(func() {
    65  				var err error
    66  				foundColumns, found, err = owner.Find(dbConn)
    67  				Expect(err).ToNot(HaveOccurred())
    68  			})
    69  
    70  			Context("when a resource config exists", func() {
    71  				var createdColumns map[string]interface{}
    72  
    73  				BeforeEach(func() {
    74  					existingOwner := db.NewResourceConfigCheckSessionContainerOwner(
    75  						resourceConfig.ID(),
    76  						resourceConfig.OriginBaseResourceType().ID,
    77  						ownerExpiries,
    78  					)
    79  
    80  					tx, err := dbConn.Begin()
    81  					Expect(err).ToNot(HaveOccurred())
    82  
    83  					createdColumns, err = existingOwner.Create(tx, worker.Name())
    84  					Expect(err).ToNot(HaveOccurred())
    85  					Expect(createdColumns).ToNot(BeEmpty())
    86  
    87  					Expect(tx.Commit()).To(Succeed())
    88  				})
    89  
    90  				It("finds the resource config check session", func() {
    91  					Expect(foundColumns).To(HaveLen(1))
    92  					Expect(foundColumns["resource_config_check_session_id"]).To(ConsistOf(createdColumns["resource_config_check_session_id"]))
    93  					Expect(found).To(BeTrue())
    94  				})
    95  			})
    96  
    97  			Context("when there are multiple resource config check sessions", func() {
    98  				var createdColumns, createdColumns2 map[string]interface{}
    99  
   100  				BeforeEach(func() {
   101  					existingOwner := db.NewResourceConfigCheckSessionContainerOwner(
   102  						resourceConfig.ID(),
   103  						resourceConfig.OriginBaseResourceType().ID,
   104  						ownerExpiries,
   105  					)
   106  
   107  					tx, err := dbConn.Begin()
   108  					Expect(err).ToNot(HaveOccurred())
   109  
   110  					createdColumns, err = existingOwner.Create(tx, worker.Name())
   111  					Expect(err).ToNot(HaveOccurred())
   112  					Expect(createdColumns).ToNot(BeEmpty())
   113  
   114  					createdColumns2, err = existingOwner.Create(tx, defaultWorker.Name())
   115  					Expect(err).ToNot(HaveOccurred())
   116  					Expect(createdColumns).ToNot(BeEmpty())
   117  
   118  					Expect(tx.Commit()).To(Succeed())
   119  				})
   120  
   121  				It("finds both resource config check sessions", func() {
   122  					Expect(foundColumns).To(HaveLen(1))
   123  					Expect(foundColumns["resource_config_check_session_id"]).To(ConsistOf(createdColumns["resource_config_check_session_id"], createdColumns2["resource_config_check_session_id"]))
   124  					Expect(found).To(BeTrue())
   125  				})
   126  			})
   127  
   128  			Context("when a resource config check session doesn't exist", func() {
   129  				It("doesn't find a resource config check session", func() {
   130  					Expect(found).To(BeFalse())
   131  				})
   132  			})
   133  		})
   134  	})
   135  })