95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
package resource_test
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"code.cloudfoundry.org/lager"
|
|
"code.cloudfoundry.org/lager/lagertest"
|
|
"github.com/concourse/concourse/atc"
|
|
"github.com/concourse/concourse/atc/db"
|
|
"github.com/concourse/concourse/atc/db/dbfakes"
|
|
. "github.com/concourse/concourse/atc/resource"
|
|
"github.com/concourse/concourse/atc/worker"
|
|
"github.com/concourse/concourse/atc/worker/workerfakes"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("ResourceInstance", func() {
|
|
var (
|
|
logger lager.Logger
|
|
resourceInstance ResourceInstance
|
|
fakeWorker *workerfakes.FakeWorker
|
|
disaster error
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
logger = lagertest.NewTestLogger("test")
|
|
fakeWorker = new(workerfakes.FakeWorker)
|
|
disaster = errors.New("disaster")
|
|
fakeResourceCache := new(dbfakes.FakeUsedResourceCache)
|
|
|
|
resourceInstance = NewResourceInstance(
|
|
"some-resource-type",
|
|
atc.Version{"some": "version"},
|
|
atc.Source{"some": "source"},
|
|
atc.Params{"some": "params"},
|
|
atc.VersionedResourceTypes{},
|
|
fakeResourceCache,
|
|
db.NewBuildStepContainerOwner(42, atc.PlanID("some-plan-id"), 1),
|
|
)
|
|
})
|
|
|
|
Describe("FindOn", func() {
|
|
var (
|
|
foundVolume worker.Volume
|
|
found bool
|
|
findErr error
|
|
)
|
|
|
|
JustBeforeEach(func() {
|
|
foundVolume, found, findErr = resourceInstance.FindOn(logger, fakeWorker)
|
|
})
|
|
|
|
Context("when initialized volume for resource cache exists on worker", func() {
|
|
var fakeVolume *workerfakes.FakeVolume
|
|
|
|
BeforeEach(func() {
|
|
fakeVolume = new(workerfakes.FakeVolume)
|
|
fakeWorker.FindVolumeForResourceCacheReturns(fakeVolume, true, nil)
|
|
})
|
|
|
|
It("returns found volume", func() {
|
|
Expect(findErr).NotTo(HaveOccurred())
|
|
Expect(found).To(BeTrue())
|
|
Expect(foundVolume).To(Equal(fakeVolume))
|
|
})
|
|
})
|
|
|
|
Context("when initialized volume for resource cache does not exist on worker", func() {
|
|
BeforeEach(func() {
|
|
fakeWorker.FindVolumeForResourceCacheReturns(nil, false, nil)
|
|
})
|
|
|
|
It("does not return any volume", func() {
|
|
Expect(findErr).NotTo(HaveOccurred())
|
|
Expect(found).To(BeFalse())
|
|
Expect(foundVolume).To(BeNil())
|
|
})
|
|
})
|
|
|
|
Context("when worker errors in finding the cache", func() {
|
|
BeforeEach(func() {
|
|
fakeWorker.FindVolumeForResourceCacheReturns(nil, false, disaster)
|
|
})
|
|
|
|
It("returns the error", func() {
|
|
Expect(findErr).To(Equal(disaster))
|
|
Expect(found).To(BeFalse())
|
|
Expect(foundVolume).To(BeNil())
|
|
})
|
|
})
|
|
})
|
|
})
|