appStates[instanceHeartbeat.State]++
					total++
				}
			}

			Ω(total).Should(Equal(100))
			Ω(appStates[models.InstanceStateCrashed]).Should(BeNumerically("~", 10, 8), "This may fail.. non-deterministally, but it should fail *very* infrequently.")
			Ω(appStates[models.InstanceStateCrashed] + appStates[models.InstanceStateRunning]).Should(Equal(total))
		})
	})

	Describe("Adding new apps with time", func() {
		It("should add apps at the specified rate", func() {
			Ω(sim.NumberOfNewAppsStartingPerHB).Should(Equal(10))
			for i := 0; i < 12; i++ {
				messageBus.Reset()
				for j := 0; j < sim.HeartbeatIntervalInSeconds; j++ {
					sim.TickOneSecond()
				}
			}

			numApps := 100 + 12*10

			Ω(sim.Apps).Should(HaveLen(numApps))
			Ω(sim.DEAs).Should(HaveLen(8), "Shouldn't have needed any additional DEAs")
			Ω(desiredStateServer.Apps).Should(HaveLen(numApps))
		})
	})

	Describe("Scenarios", func() {
		Describe("Removing an entire DEA", func() {