func TestGetVersion(t *testing.T) { eng := NewTestEngine(t) defer mkRuntimeFromEngine(eng, t).Nuke() var err error r := httptest.NewRecorder() req, err := http.NewRequest("GET", "/version", nil) if err != nil { t.Fatal(err) } // FIXME getting the version should require an actual running Server if err := api.ServeRequest(eng, api.APIVERSION, r, req); err != nil { t.Fatal(err) } assertHttpNotError(r, t) out := engine.NewOutput() v, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, r.Body); err != nil { t.Fatal(err) } out.Close() expected := dockerversion.VERSION if result := v.Get("Version"); result != expected { t.Errorf("Expected version %s, %s found", expected, result) } expected = "application/json" if result := r.HeaderMap.Get("Content-Type"); result != expected { t.Errorf("Expected Content-Type %s, %s found", expected, result) } }
func TestGetInfo(t *testing.T) { eng := NewTestEngine(t) defer mkRuntimeFromEngine(eng, t).Nuke() srv := mkServerFromEngine(eng, t) initialImages, err := srv.Images(false, "") if err != nil { t.Fatal(err) } req, err := http.NewRequest("GET", "/info", nil) if err != nil { t.Fatal(err) } r := httptest.NewRecorder() if err := docker.ServeRequest(srv, docker.APIVERSION, r, req); err != nil { t.Fatal(err) } assertHttpNotError(r, t) out := engine.NewOutput() i, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, r.Body); err != nil { t.Fatal(err) } out.Close() if images := i.GetInt("Images"); images != len(initialImages) { t.Errorf("Expected images: %d, %d found", len(initialImages), images) } }
func TestGetVersion(t *testing.T) { tmp, err := utils.TestDirectory("") if err != nil { t.Fatal(err) } defer os.RemoveAll(tmp) eng, err := engine.New(tmp) if err != nil { t.Fatal(err) } var called bool eng.Register("version", func(job *engine.Job) engine.Status { called = true v := &engine.Env{} v.SetJson("Version", "42.1") v.Set("ApiVersion", "1.1.1.1.1") v.Set("GoVersion", "2.42") v.Set("Os", "Linux") v.Set("Arch", "x86_64") if _, err := v.WriteTo(job.Stdout); err != nil { return job.Error(err) } return engine.StatusOK }) r := httptest.NewRecorder() req, err := http.NewRequest("GET", "/version", nil) if err != nil { t.Fatal(err) } // FIXME getting the version should require an actual running Server if err := ServeRequest(eng, api.APIVERSION, r, req); err != nil { t.Fatal(err) } if !called { t.Fatalf("handler was not called") } out := engine.NewOutput() v, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, r.Body); err != nil { t.Fatal(err) } out.Close() expected := "42.1" if result := v.Get("Version"); result != expected { t.Errorf("Expected version %s, %s found", expected, result) } expected = "application/json" if result := r.HeaderMap.Get("Content-Type"); result != expected { t.Errorf("Expected Content-Type %s, %s found", expected, result) } }
func readEnv(src io.Reader, t *testing.T) *engine.Env { out := engine.NewOutput() v, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, src); err != nil { t.Fatal(err) } out.Close() return v }
func TestGetInfo(t *testing.T) { eng := NewTestEngine(t) defer mkRuntimeFromEngine(eng, t).Nuke() srv := mkServerFromEngine(eng, t) job := eng.Job("images") initialImages, err := job.Stdout.AddListTable() if err != nil { t.Fatal(err) } if err := job.Run(); err != nil { t.Fatal(err) } req, err := http.NewRequest("GET", "/info", nil) if err != nil { t.Fatal(err) } r := httptest.NewRecorder() if err := docker.ServeRequest(srv, docker.APIVERSION, r, req); err != nil { t.Fatal(err) } assertHttpNotError(r, t) out := engine.NewOutput() i, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, r.Body); err != nil { t.Fatal(err) } out.Close() if images := i.GetInt("Images"); images != initialImages.Len() { t.Errorf("Expected images: %d, %d found", initialImages.Len(), images) } expected := "application/json" if result := r.HeaderMap.Get("Content-Type"); result != expected { t.Errorf("Expected Content-Type %s, %s found", expected, result) } }
func TestGetInfo(t *testing.T) { tmp, err := utils.TestDirectory("") if err != nil { t.Fatal(err) } defer os.RemoveAll(tmp) eng, err := engine.New(tmp) if err != nil { t.Fatal(err) } var called bool eng.Register("info", func(job *engine.Job) engine.Status { called = true v := &engine.Env{} v.SetInt("Containers", 1) v.SetInt("Images", 42000) if _, err := v.WriteTo(job.Stdout); err != nil { return job.Error(err) } return engine.StatusOK }) r := httptest.NewRecorder() req, err := http.NewRequest("GET", "/info", nil) if err != nil { t.Fatal(err) } // FIXME getting the version should require an actual running Server if err := ServeRequest(eng, api.APIVERSION, r, req); err != nil { t.Fatal(err) } if !called { t.Fatalf("handler was not called") } out := engine.NewOutput() i, err := out.AddEnv() if err != nil { t.Fatal(err) } if _, err := io.Copy(out, r.Body); err != nil { t.Fatal(err) } out.Close() { expected := 42000 result := i.GetInt("Images") if expected != result { t.Fatalf("%#v\n", result) } } { expected := 1 result := i.GetInt("Containers") if expected != result { t.Fatalf("%#v\n", result) } } { expected := "application/json" if result := r.HeaderMap.Get("Content-Type"); result != expected { t.Fatalf("%#v\n", result) } } }