mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Datastore refactor and added postgres tests (#259)
* fix apps & routes creation/update * refactor datastore and added postgres tests * added test-datastore and fixed circleci test
This commit is contained in:
@@ -21,15 +21,16 @@ func setLogBuffer() *bytes.Buffer {
|
||||
return &buf
|
||||
}
|
||||
|
||||
const tmpBolt = "/tmp/func_test_bolt.db"
|
||||
|
||||
func TestBolt(t *testing.T) {
|
||||
buf := setLogBuffer()
|
||||
|
||||
const tmpBolt = "/tmp/func_test_bolt.db"
|
||||
os.Remove(tmpBolt)
|
||||
ds, err := New("bolt://" + tmpBolt)
|
||||
if err != nil {
|
||||
t.Fatal("Error when creating datastore: %s", err)
|
||||
t.Fatalf("Error when creating datastore: %v", err)
|
||||
}
|
||||
defer os.Remove(tmpBolt)
|
||||
|
||||
testApp := &models.App{
|
||||
Name: "Test",
|
||||
@@ -41,24 +42,47 @@ func TestBolt(t *testing.T) {
|
||||
Image: "iron/hello",
|
||||
}
|
||||
|
||||
// Testing store app
|
||||
_, err = ds.StoreApp(nil)
|
||||
if err == nil {
|
||||
// Testing insert app
|
||||
_, err = ds.InsertApp(nil)
|
||||
if err != models.ErrDatastoreEmptyApp {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test StoreApp: expected error when using nil app", err)
|
||||
t.Fatalf("Test InsertApp(nil): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyApp, err)
|
||||
}
|
||||
|
||||
_, err = ds.StoreApp(testApp)
|
||||
_, err = ds.InsertApp(&models.App{})
|
||||
if err != models.ErrDatastoreEmptyAppName {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test InsertApp(nil): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyAppName, err)
|
||||
}
|
||||
|
||||
_, err = ds.InsertApp(testApp)
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test StoreApp: error when Bolt was storing new app: %s", err)
|
||||
t.Fatalf("Test InsertApp: error when Bolt was storing new app: %s", err)
|
||||
}
|
||||
|
||||
_, err = ds.InsertApp(testApp)
|
||||
if err != models.ErrAppsAlreadyExists {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test InsertApp duplicated: expected error `%v`, but it was `%v`", models.ErrAppsAlreadyExists, err)
|
||||
}
|
||||
|
||||
_, err = ds.UpdateApp(&models.App{
|
||||
Name: testApp.Name,
|
||||
Config: map[string]string{
|
||||
"TEST": "1",
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test UpdateApp: error when Bolt was updating app: %v", err)
|
||||
}
|
||||
|
||||
// Testing get app
|
||||
_, err = ds.GetApp("")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyAppName {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetApp: expected error when using empty app name", err)
|
||||
t.Fatalf("Test GetApp: expected error to be %v, but it was %s", models.ErrDatastoreEmptyAppName, err)
|
||||
}
|
||||
|
||||
app, err := ds.GetApp(testApp.Name)
|
||||
@@ -75,7 +99,7 @@ func TestBolt(t *testing.T) {
|
||||
apps, err := ds.GetApps(&models.AppFilter{})
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetApps: error: %s", err)
|
||||
t.Fatalf("Test GetApps: unexpected error %v", err)
|
||||
}
|
||||
if len(apps) == 0 {
|
||||
t.Fatal("Test GetApps: expected result count to be greater than 0")
|
||||
@@ -87,9 +111,9 @@ func TestBolt(t *testing.T) {
|
||||
|
||||
// Testing app delete
|
||||
err = ds.RemoveApp("")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyAppName {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test RemoveApp: expected error when using empty app name", err)
|
||||
t.Fatalf("Test RemoveApp: expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyAppName, err)
|
||||
}
|
||||
|
||||
err = ds.RemoveApp(testApp.Name)
|
||||
@@ -107,39 +131,63 @@ func TestBolt(t *testing.T) {
|
||||
t.Fatalf("Test RemoveApp: failed to remove the app")
|
||||
}
|
||||
|
||||
// Store app again to test routes
|
||||
ds.StoreApp(testApp)
|
||||
|
||||
// Testing store route
|
||||
_, err = ds.StoreRoute(nil)
|
||||
if err == nil {
|
||||
// Test update inexistent app
|
||||
_, err = ds.UpdateApp(&models.App{
|
||||
Name: testApp.Name,
|
||||
Config: map[string]string{
|
||||
"TEST": "1",
|
||||
},
|
||||
})
|
||||
if err != models.ErrAppsNotFound {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test StoreRoute: expected error when using nil route", err)
|
||||
t.Fatalf("Test UpdateApp inexistent: expected error to be %v, but it was %v", models.ErrAppsNotFound, err)
|
||||
}
|
||||
|
||||
_, err = ds.StoreRoute(testRoute)
|
||||
// Insert app again to test routes
|
||||
ds.InsertApp(testApp)
|
||||
|
||||
// Testing insert route
|
||||
_, err = ds.InsertRoute(nil)
|
||||
if err == models.ErrDatastoreEmptyRoute {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test InsertRoute(nil): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyRoute, err)
|
||||
}
|
||||
|
||||
_, err = ds.InsertRoute(testRoute)
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test StoreReoute: error when Bolt was storing new route: %s", err)
|
||||
t.Fatalf("Test InsertRoute: error when Bolt was storing new route: %s", err)
|
||||
}
|
||||
|
||||
_, err = ds.InsertRoute(testRoute)
|
||||
if err != models.ErrRoutesAlreadyExists {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test InsertRoute duplicated: expected error to be `%v`, but it was `%v`", models.ErrRoutesAlreadyExists, err)
|
||||
}
|
||||
|
||||
_, err = ds.UpdateRoute(testRoute)
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test UpdateRoute: unexpected error: %v", err)
|
||||
}
|
||||
|
||||
// Testing get
|
||||
_, err = ds.GetRoute("a", "")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyRoutePath {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetRoute: expected error when using empty route name", err)
|
||||
t.Fatalf("Test GetRoute(empty route path): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyRoutePath, err)
|
||||
}
|
||||
|
||||
_, err = ds.GetRoute("", "a")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyAppName {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetRoute: expected error when using empty app name", err)
|
||||
t.Fatalf("Test GetRoute(empty app name): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyAppName, err)
|
||||
}
|
||||
|
||||
route, err := ds.GetRoute(testApp.Name, testRoute.Path)
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetRoute: error: %s", err)
|
||||
t.Fatalf("Test GetRoute: unexpected error %v", err)
|
||||
}
|
||||
if route.Path != testRoute.Path {
|
||||
t.Log(buf.String())
|
||||
@@ -150,7 +198,7 @@ func TestBolt(t *testing.T) {
|
||||
routes, err := ds.GetRoutesByApp(testApp.Name, &models.RouteFilter{})
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test GetRoutes: error: %s", err)
|
||||
t.Fatalf("Test GetRoutes: unexpected error %v", err)
|
||||
}
|
||||
if len(routes) == 0 {
|
||||
t.Fatal("Test GetRoutes: expected result count to be greater than 0")
|
||||
@@ -176,21 +224,31 @@ func TestBolt(t *testing.T) {
|
||||
|
||||
// Testing app delete
|
||||
err = ds.RemoveRoute("", "")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyAppName {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test RemoveRoute: expected error when using empty app name", err)
|
||||
t.Fatalf("Test RemoveRoute(empty app name): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyAppName, err)
|
||||
}
|
||||
|
||||
err = ds.RemoveRoute("a", "")
|
||||
if err == nil {
|
||||
if err != models.ErrDatastoreEmptyRoutePath {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test RemoveRoute: expected error when using empty route name", err)
|
||||
t.Fatalf("Test RemoveRoute(empty route path): expected error `%v`, but it was `%v`", models.ErrDatastoreEmptyRoutePath, err)
|
||||
}
|
||||
|
||||
err = ds.RemoveRoute(testRoute.AppName, testRoute.Path)
|
||||
if err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test RemoveApp: error: %s", err)
|
||||
t.Fatalf("Test RemoveApp: unexpected error: %v", err)
|
||||
}
|
||||
|
||||
_, err = ds.UpdateRoute(&models.Route{
|
||||
AppName: testRoute.AppName,
|
||||
Path: testRoute.Path,
|
||||
Image: "test",
|
||||
})
|
||||
if err != models.ErrRoutesNotFound {
|
||||
t.Log(buf.String())
|
||||
t.Fatalf("Test UpdateRoute inexistent: expected error to be `%v`, but it was `%v`", models.ErrRoutesNotFound, err)
|
||||
}
|
||||
|
||||
route, err = ds.GetRoute(testRoute.AppName, testRoute.Path)
|
||||
|
||||
Reference in New Issue
Block a user