func dumpApp(app *models.App, starts map[string]models.PendingStartMessage, stops map[string]models.PendingStopMessage, timeProvider timeprovider.TimeProvider) { fmt.Printf("\n") fmt.Printf("Guid: %s | Version: %s\n", app.AppGuid, app.AppVersion) if app.IsDesired() { fmt.Printf(" Desired: [%d] instances, (%s, %s)\n", app.Desired.NumberOfInstances, app.Desired.State, app.Desired.PackageState) } else { fmt.Printf(" Desired: NO\n") } if len(app.InstanceHeartbeats) == 0 { fmt.Printf(" Heartbeats: NONE\n") } else { fmt.Printf(" Heartbeats:\n") for _, heartbeat := range app.InstanceHeartbeats { fmt.Printf(" [%d %s] %s on %s\n", heartbeat.InstanceIndex, heartbeat.State, heartbeat.InstanceGuid, heartbeat.DeaGuid[0:5]) } } if len(app.CrashCounts) != 0 { fmt.Printf(" CrashCounts:") for _, crashCount := range app.CrashCounts { fmt.Printf(" [%d]:%d", crashCount.InstanceIndex, crashCount.CrashCount) } fmt.Printf("\n") } appStarts := []models.PendingStartMessage{} appStops := []models.PendingStopMessage{} for _, start := range starts { if start.AppGuid == app.AppGuid && start.AppVersion == app.AppVersion { appStarts = append(appStarts, start) } } for _, stop := range stops { if stop.AppGuid == app.AppGuid && stop.AppVersion == app.AppVersion { appStops = append(appStops, stop) } } if len(appStarts) > 0 { fmt.Printf(" Pending Starts:\n") for _, start := range appStarts { message := []string{} message = append(message, fmt.Sprintf("[%d]", start.IndexToStart)) message = append(message, fmt.Sprintf("priority:%.2f", start.Priority)) if start.SkipVerification { message = append(message, "NO VERIFICATION") } if start.SentOn != 0 { message = append(message, "send:SENT") message = append(message, fmt.Sprintf("delete:%s", time.Unix(start.SentOn+int64(start.KeepAlive), 0).Sub(timeProvider.Time()))) } else { message = append(message, fmt.Sprintf("send:%s", time.Unix(start.SendOn, 0).Sub(timeProvider.Time()))) } fmt.Printf(" %s\n", strings.Join(message, " ")) } } if len(appStops) > 0 { fmt.Printf(" Pending Stops:\n") for _, stop := range appStops { message := []string{} message = append(message, stop.InstanceGuid) if stop.SentOn != 0 { message = append(message, "send:SENT") message = append(message, fmt.Sprintf("delete:%s", time.Unix(stop.SentOn+int64(stop.KeepAlive), 0).Sub(timeProvider.Time()))) } else { message = append(message, fmt.Sprintf("send:%s", time.Unix(stop.SendOn, 0).Sub(timeProvider.Time()))) } fmt.Printf(" %s\n", strings.Join(message, " ")) } } }
}) }) Context("when no reply-to is given", func() { It("should drop the request on the floor", func() { messageBus.Subscriptions["app.state"][0].Callback(&yagnats.Message{ Payload: []byte("{}"), }) Ω(messageBus.PublishedMessages).Should(BeEmpty()) }) }) Context("when the request contains the droplet and version", func() { var app appfixture.AppFixture var expectedApp *models.App var validRequestPayload string BeforeEach(func() { app = appfixture.NewAppFixture() instanceHeartbeats := []models.InstanceHeartbeat{ app.InstanceAtIndex(0).Heartbeat(), app.InstanceAtIndex(1).Heartbeat(), app.InstanceAtIndex(2).Heartbeat(), } crashCount := models.CrashCount{ AppGuid: app.AppGuid, AppVersion: app.AppVersion, InstanceIndex: 1, CrashCount: 2,