func TestToyScheduler(t *testing.T) { var tasks = demand.Tasks{} tasks.Tasks = make([]*demand.Task, 1) task := demand.Task{Name: "anything", Demand: 8, Requested: 3} tasks.Tasks[0] = &task m := NewScheduler() m.InitScheduler(&task) log.Debugf("before start/stop: demand %d, requested %d, running %d", task.Demand, task.Requested, task.Running) err := m.StopStartTasks(&tasks) if err != nil { t.Fatalf("Error %v", err) } log.Debugf("after start/stop: demand %d, requested %d, running %d", task.Demand, task.Requested, task.Running) if err != nil { t.Fatalf("Error. %v", err) } else if task.Requested != task.Demand { t.Fatalf("Requested should have been updated") } err = m.CountAllTasks(&tasks) for name, task := range tasks.Tasks { if task.Running != task.Requested || task.Running != task.Demand { t.Fatalf("Task %s running is not what was requested or demanded", name) } log.Debugf("after counting: demand %d, requested %d, running %d", task.Demand, task.Requested, task.Running) } }
func TestDockerScheduler(t *testing.T) { d := NewScheduler(true, "unix:///var/run/docker.sock") server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) d.client, _ = docker.NewClient(server.URL) var task demand.Task task.Demand = 5 task.Image = "microscaling/priority-1:latest" d.InitScheduler(&task) d.startTask(&task) // TODO! Some Docker tests that mock out the Docker client var tasks demand.Tasks tasks.Tasks = make([]*demand.Task, 1) tasks.Tasks = append(tasks.Tasks, &task) d.CountAllTasks(&tasks) }
func TestServerMonitor(t *testing.T) { var tasks demand.Tasks tasks.Tasks = make([]*demand.Task, 2) tasks.Tasks[0] = &demand.Task{Name: "priority1", Demand: 8, Requested: 3, Running: 4} tasks.Tasks[1] = &demand.Task{Name: "priority2", Demand: 2, Requested: 7, Running: 5} server := httptest.NewServer(websocket.Handler(testServerMetrics)) serverAddr := server.Listener.Addr().String() ws, err := utils.InitWebSocket(serverAddr) if err != nil { t.Fatal("dialing", err) } s := NewServerMonitor(ws, "hello") if s.userID != "hello" { t.Fatal("Didn't set userID") } s.SendMetrics(&tasks) ws.Close() server.Close() }
func TestSendMetrics(t *testing.T) { var tasks demand.Tasks tasks.Tasks = make([]*demand.Task, 2) tasks.Tasks[0] = &demand.Task{Name: "priority1", Demand: 8, Requested: 3, Running: 4} tasks.Tasks[1] = &demand.Task{Name: "priority2", Demand: 2, Requested: 7, Running: 5} globalT = t for testIndex = range tests { server := httptest.NewServer(websocket.Handler(testServerMetrics)) serverAddr := server.Listener.Addr().String() ws, err := utils.InitWebSocket(serverAddr) if err != nil { t.Fatal("dialing", err) } SendMetrics(ws, "hello", &tasks) ws.Close() server.Close() } }