62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
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, ":"):]
|
|
}
|