func (expectation transitionExpectation) transitionToState(allocationStore *allocationstore.AllocationStore, container executor.Container) error { switch expectation.to { case "reserve": allocationRequest := executor.NewAllocationRequest(container.Guid, &container.Resource, container.Tags) _, err := allocationStore.Allocate(logger, &allocationRequest) return err case "initialize": runReq := executor.NewRunRequest(container.Guid, &container.RunInfo, container.Tags) return allocationStore.Initialize(logger, &runReq) case "fail": _, err := allocationStore.Fail(logger, container.Guid, "failure-reason") return err default: Fail("unknown 'to' state: " + expectation.to) return nil } }
func (expectation transitionExpectation) driveFromState(allocationStore *allocationstore.AllocationStore, container executor.Container) { allocationRequest := executor.NewAllocationRequest(container.Guid, &container.Resource, container.Tags) runReq := executor.NewRunRequest(container.Guid, &container.RunInfo, container.Tags) switch expectation.from { case "non-existent": case "reserved": _, err := allocationStore.Allocate(logger, &allocationRequest) Expect(err).NotTo(HaveOccurred()) case "initializing": _, err := allocationStore.Allocate(logger, &allocationRequest) Expect(err).NotTo(HaveOccurred()) err = allocationStore.Initialize(logger, &runReq) Expect(err).NotTo(HaveOccurred()) case "failed": _, err := allocationStore.Allocate(logger, &allocationRequest) Expect(err).NotTo(HaveOccurred()) err = allocationStore.Initialize(logger, &runReq) Expect(err).NotTo(HaveOccurred()) _, err = allocationStore.Fail(logger, container.Guid, "failure-reason") Expect(err).NotTo(HaveOccurred()) default: Fail("unknown 'from' state: " + expectation.from) } }
BeforeEach(func() { currentTime = time.Now() fakeClock = fakeclock.NewFakeClock(currentTime) fakeEventEmitter = &fakes.FakeEventEmitter{} allocationStore = allocationstore.NewAllocationStore(fakeClock, fakeEventEmitter) }) Describe("List", func() { Context("when a container is allocated", func() { var req executor.AllocationRequest BeforeEach(func() { resource := executor.NewResource(512, 512, "") req = executor.NewAllocationRequest("banana", &resource, nil) _, err := allocationStore.Allocate(logger, &req) Expect(err).NotTo(HaveOccurred()) }) It("is included in the list", func() { allocations := allocationStore.List() Expect(allocations).To(HaveLen(1)) Expect(allocations[0].Guid).To(Equal(req.Guid)) }) Context("and then deallocated", func() { BeforeEach(func() { deallocated := allocationStore.Deallocate(logger, req.Guid) Expect(deallocated).To(BeTrue()) })