package main import ( "fmt" "local/dynamodb/server/config" "local/dynamodb/server/serve" "net/http/httptest" "os" "strings" "testing" ) func TestAll(t *testing.T) { validKey := "key" validValue := "value" addresses := []string{} for i := 0; i < 10; i++ { s := newServer(t) addresses = append(addresses, "http://localhost"+s.Port) go s.Run() } client, err := New(1, 1, addresses...) if err != nil { t.Fatalf("cannot make client: %v", err) } for i := 0; i < 5; i++ { key := fmt.Sprintf("%s-%d", validKey, i) value := validValue + string([]byte{byte(i) + 'a'}) if err := client.Set(key, []byte(value)); err != nil { t.Fatalf("cannot set with client: %v", err) } if v, err := client.Get(key); err != nil { t.Fatalf("cannot get with client: %v", err) } else if string(v) != value { t.Fatalf("wrong get with client: got %q, want %q", v, value) } } } 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, ":"):] }