} }) JustBeforeEach(func() { process = ifrit.Invoke(radar.Scanner(lagertest.NewTestLogger("test"), "some-resource")) }) AfterEach(func() { process.Signal(os.Interrupt) <-process.Wait() }) It("constructs the resource of the correct type", func() { Eventually(times).Should(Receive()) sessionID, typ, tags := fakeTracker.InitArgsForCall(0) Ω(sessionID).Should(Equal(resource.Session{ ID: worker.Identifier{ PipelineName: "some-pipeline-name", Name: "some-resource", Type: "check", CheckType: "git", CheckSource: resourceConfig.Source, }, Ephemeral: true, })) Ω(typ).Should(Equal(resource.ResourceType("git"))) Ω(tags).Should(BeEmpty()) // This allows the check to run on any worker })
BeforeEach(func() { fakeResource = new(rfakes.FakeResource) fakeTracker.InitReturns(fakeResource, nil) fakeVersionedSource = new(rfakes.FakeVersionedSource) fakeVersionedSource.VersionReturns(atc.Version{"some": "version"}) fakeVersionedSource.MetadataReturns([]atc.MetadataField{{"some", "metadata"}}) fakeResource.GetReturns(fakeVersionedSource) }) It("initializes the resource with the correct type and session id, making sure that it is not ephemeral", func() { Ω(fakeTracker.InitCallCount()).Should(Equal(1)) sid, typ, tags := fakeTracker.InitArgsForCall(0) Ω(sid).Should(Equal(resource.Session{ ID: identifier, Ephemeral: false, })) Ω(typ).Should(Equal(resource.ResourceType("some-resource-type"))) Ω(tags).Should(ConsistOf("some", "tags")) }) It("gets the resource with the correct source, params, and version", func() { Ω(fakeResource.GetCallCount()).Should(Equal(1)) _, gotSource, gotParams, gotVersion := fakeResource.GetArgsForCall(0) Ω(gotSource).Should(Equal(resourceConfig.Source)) Ω(gotParams).Should(Equal(params))
Context("when the lease can be acquired", func() { BeforeEach(func() { fakeRadarDB.LeaseResourceCheckingReturns(fakeLease, true, nil) }) It("checks immediately and then on a specified interval", func() { Expect(<-times).To(Equal(epoch)) fakeClock.WaitForWatcherAndIncrement(interval) Expect(<-times).To(Equal(epoch.Add(interval))) }) It("constructs the resource of the correct type", func() { <-times _, metadata, session, typ, tags, customTypes, delegate := fakeTracker.InitArgsForCall(0) Expect(metadata).To(Equal(resource.EmptyMetadata{})) Expect(session).To(Equal(resource.Session{ ID: worker.Identifier{ ResourceID: 39, Stage: db.ContainerStageRun, CheckType: "git", CheckSource: atc.Source{"uri": "http://example.com"}, }, Metadata: worker.Metadata{ Type: db.ContainerTypeCheck, PipelineName: "some-pipeline", }, Ephemeral: true, })) Expect(customTypes).To(Equal(atc.ResourceTypes{