func main() {
	config := marathon.NewDefaultConfig()
	config.URL = marathonURL
	client, err := marathon.NewClient(config)
	if err != nil {
		log.Fatalf("Make new marathon client error: %v", err)
	}

	app := marathon.Application{}
	app.ID = "queue-test"
	app.Command("sleep 5")
	app.Count(1)
	app.Memory(32)
	fmt.Println("Creating/updating app.")
	// Update application will either create or update the app.
	_, err = client.UpdateApplication(&app, false)
	if err != nil {
		log.Fatalf("Update application error: %v", err)
	}
	// wait until marathon will launch tasks
	err = client.WaitOnApplication(app.ID, 10*time.Second)
	if err != nil {
		log.Fatalln("Application deploy failure, timeout.")
	}
	fmt.Println("Application was deployed.")

	// get marathon queue by chance
	for i := 0; i < 30; i++ {
		// Avoid shadowing err from outer scope.
		var queue *marathon.Queue
		queue, err = client.Queue()
		if err != nil {
			log.Fatalf("Get queue error: %v\n", err)
		}
		if len(queue.Items) > 0 {
			fmt.Println(queue)
			break
		}
		fmt.Printf("Queue is blank now, retry(%d)...\n", 30-i)
		time.Sleep(time.Second)
	}

	// delete marathon queue delay
	err = client.DeleteQueueDelay(app.ID)
	if err != nil {
		log.Fatalf("Delete queue delay error: %v\n", err)
	}
	fmt.Println("Queue delay deleted.")

	return
}