示例#1
0
				instanceAndEvacuatingLRP := models.ActualLRP{ActualLRPKey: actualLRPKey, ActualLRPInstanceKey: models.NewActualLRPInstanceKey(instanceGuidInstanceAndEvacuatingLRPsOnly, cellID)}

				lrpGroups := []*models.ActualLRPGroup{
					{Instance: &containerOnlyLRP, Evacuating: nil},
					{Instance: &instanceOnlyLRP, Evacuating: nil},
					{Instance: &instanceAndEvacuatingLRP, Evacuating: &instanceAndEvacuatingLRP},
					{Instance: nil, Evacuating: &containerForEvacuatingLRP},
					{Instance: nil, Evacuating: &evacuatingOnlyLRP},
				}

				tasks := []*models.Task{
					{TaskGuid: guidContainerForTask},
					{TaskGuid: guidTaskOnly},
				}

				fakeExecutorClient.ListContainersReturns(containers, nil)

				fakeBBS.ActualLRPGroupsReturns(lrpGroups, nil)
				fakeBBS.TasksByCellIDReturns(tasks, nil)
			})

			It("does not return an error", func() {
				Expect(batchErr).NotTo(HaveOccurred())
			})

			It("logs success", func() {
				Expect(logger).To(Say(sessionName + ".succeeded"))
			})

			It("returns a batch of the correct size", func() {
				Expect(batch).To(HaveLen(8))
示例#2
0
					It("retries", func() {
						fakeClock.Increment(pollingInterval)
						Eventually(executorClient.ListContainersCallCount).Should(Equal(1))

						fakeClock.Increment(pollingInterval)
						Eventually(executorClient.ListContainersCallCount).Should(Equal(2))

						Eventually(errChan).Should(Receive(BeNil()))
					})
				})
			})

			Context("and are not all destroyed before the timeout elapses", func() {
				BeforeEach(func() {
					executorClient.ListContainersReturns(containers, nil)
				})

				It("exits after the evacuation timeout", func() {
					Eventually(fakeClock.WatcherCount).Should(Equal(2))

					fakeClock.Increment(evacuationTimeout - time.Second)
					Consistently(errChan).ShouldNot(Receive())
					fakeClock.Increment(2 * time.Second)
					Eventually(errChan).Should(Receive(BeNil()))
				})

				Context("when signaled", func() {
					It("exits", func() {
						process.Signal(os.Interrupt)
示例#3
0
		executorClient.TotalResourcesReturns(executor.ExecutorResources{
			MemoryMB:   1024,
			DiskMB:     2048,
			Containers: 4096,
		}, nil)

		executorClient.RemainingResourcesReturns(executor.ExecutorResources{
			MemoryMB:   128,
			DiskMB:     256,
			Containers: 512,
		}, nil)

		executorClient.ListContainersReturns([]executor.Container{
			{Guid: "container-1"},
			{Guid: "container-2"},
			{Guid: "container-3"},
		}, nil)
	})

	JustBeforeEach(func() {
		reporter = ifrit.Envoke(&metrics.Reporter{
			ExecutorSource: executorClient,
			Interval:       reportInterval,
			Logger:         logger,
		})
	})

	AfterEach(func() {
		reporter.Signal(os.Interrupt)
		Eventually(reporter.Wait()).Should(Receive())
示例#4
0
					Resource: executor.NewResource(40, 30, "rootfs"),
					Tags: executor.Tags{
						rep.LifecycleTag: rep.TaskLifecycle,
						rep.DomainTag:    "domain",
					},
				},
				{
					Guid:     "other-task",
					Resource: executor.NewResource(40, 30, "rootfs"),
					Tags:     nil,
				},
			}

			client.TotalResourcesReturns(totalResources, nil)
			client.RemainingResourcesReturns(availableResources, nil)
			client.ListContainersReturns(containers, nil)
		})

		It("queries the client and returns state", func() {
			state, err := cellRep.State()
			Expect(err).NotTo(HaveOccurred())

			Expect(state.Evacuating).To(BeTrue())
			Expect(state.RootFSProviders).To(Equal(rep.RootFSProviders{
				models.PreloadedRootFSScheme: rep.NewFixedSetRootFSProvider("linux"),
				"docker":                     rep.ArbitraryRootFSProvider{},
			}))

			Expect(state.AvailableResources).To(Equal(rep.Resources{
				MemoryMB:   int32(availableResources.MemoryMB),
				DiskMB:     int32(availableResources.DiskMB),