package client import ( "local/dynamodb/server/config" "local/dynamodb/server/serve" "net/http/httptest" "os" "strings" "testing" ) func TestAll(t *testing.T) { validKey := "key" validValue := "value" servers := []*serve.Server{} addresses := []string{} for i := 0; i < 10; i++ { s := newServer(t) servers = append(servers, s) addresses = append(addresses, "http://localhost"+s.Port) go s.Run() } client, err := New(addresses...) if err != nil { t.Fatalf("cannot make client: %v", err) } if err := client.Set(validKey, []byte(validValue)); err != nil { t.Fatalf("cannot set with client: %v", err) } if v, err := client.Get(validKey); err != nil { t.Fatalf("cannot get with client: %v", err) } else if string(v) != validValue { t.Fatalf("wrong get with client: got %q, want %q", v, validValue) } } func newServer(t *testing.T) *serve.Server { os.Setenv("DB", "MAP") os.Setenv("PORT", getPort()) if err := config.New(); err != nil { t.Fatal(err) } s := serve.New() if err := s.Routes(); err != nil { t.Fatal(err) } return s } func getPort() string { s := httptest.NewServer(nil) s.Close() return s.URL[strings.LastIndex(s.URL, ":"):] }