}).Should(Equal(db.ErrBuildEventStreamClosed)) }) It("saves and emits status events", func() { build, err := database.CreateOneOffBuild() Expect(err).NotTo(HaveOccurred()) Expect(build.Name).To(Equal("1")) By("allowing you to subscribe when no events have yet occurred") events, err := database.GetBuildEvents(build.ID, 0) Expect(err).NotTo(HaveOccurred()) defer events.Close() By("emitting a status event when started") started, err := database.StartBuild(build.ID, "engine", "metadata") Expect(err).NotTo(HaveOccurred()) Expect(started).To(BeTrue()) startedBuild, found, err := database.GetBuild(build.ID) Expect(err).NotTo(HaveOccurred()) Expect(found).To(BeTrue()) Expect(events.Next()).To(Equal(event.Status{ Status: atc.StatusStarted, Time: startedBuild.StartTime.Unix(), })) By("emitting a status event when finished") err = database.FinishBuild(build.ID, db.StatusSucceeded) Expect(err).NotTo(HaveOccurred())
Expect(newBuildPrep).To(Equal(buildPrep)) }) }) Describe("GetBuildPrepsForPendingBuildsForPipeline", func() { var build db.Build var otherBuild db.Build BeforeEach(func() { var err error build, err = pipelineDB.CreateJobBuild("some-job") Expect(err).ToNot(HaveOccurred()) otherBuild, err = pipelineDB.CreateJobBuild("some-job") Expect(err).ToNot(HaveOccurred()) success, err := database.StartBuild(build.ID, "", "") Expect(err).ToNot(HaveOccurred()) Expect(success).To(BeTrue()) }) It("only returns back build preps of pending builds", func() { buildPreps, err := database.GetBuildPrepsForPendingBuildsForPipeline(pipelineDB.GetPipelineName()) Expect(err).ToNot(HaveOccurred()) Expect(len(buildPreps)).To(Equal(1)) Expect(buildPreps[0].BuildID).To(Equal(otherBuild.ID)) }) }) Describe("GetAllStartedBuilds", func() { var build1 db.Build