mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
* Adjust API tests internal API * Refactor API tests to take less time - sqlite: tests 15s, overall time: 1m - mysql: tests 15s, overall time: 59s * Use retry func to survive in faulty places * Use retry func while trying to ping SQL datastore - implements retry func specifically for SQL datastore ping - fmt fixes - using sqlx.Db.PingContext instead of sqlx.Db.Ping - propogate context to SQL datastore * Simplify TestCanCauseTimeout retry loop * Call retry with sane timeout * Fix TestOversizedLog, use retry func * Increase number of attempts 2 test cases are really faulty in CI, so they need a lot more time to finish. * Increase TestCanCauseTimeout timeout * Use retry at TestMultiLog to speed it up * Use retry at TestCanWriteLogs to speed it up * Use retry at TestGetCallsSuccess to speed it up * Use retry at TestCanGetAsyncState to speed it up * Use retry at TestListCallsSuccess to speed it up * Remove sleep calls * Remove dup test case * Cleaup Calls API test * Build API tests binary once This patch lets CI to build API tests binary once and reuse that whenever it needs it * Swap API tests checks * Build API test binary by default dirty fix for CircleCI * Use retry func to determine if datastore is alive in tests * go install should also reduce build time * Fix rebase issues
81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package tests
|
|
|
|
import (
|
|
"bytes"
|
|
"net/url"
|
|
"path"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/fnproject/fn_go/client/call"
|
|
)
|
|
|
|
func TestCallsMissingApp(t *testing.T) {
|
|
t.Parallel()
|
|
s := SetupDefaultSuite()
|
|
cfg := &call.GetAppsAppCallsParams{
|
|
App: s.AppName,
|
|
Path: &s.RoutePath,
|
|
Context: s.Context,
|
|
}
|
|
_, err := s.Client.Call.GetAppsAppCalls(cfg)
|
|
if err == nil {
|
|
t.Errorf("Must fail with missing app error, but got %s", err)
|
|
}
|
|
}
|
|
|
|
func TestCallsDummy(t *testing.T) {
|
|
t.Parallel()
|
|
s := SetupDefaultSuite()
|
|
CreateApp(t, s.Context, s.Client, s.AppName, map[string]string{})
|
|
CreateRoute(t, s.Context, s.Client, s.AppName, s.RoutePath, s.Image, s.RouteType,
|
|
s.Format, s.Timeout, s.IdleTimeout, s.RouteConfig, s.RouteHeaders)
|
|
|
|
cfg := &call.GetAppsAppCallsCallParams{
|
|
Call: "dummy",
|
|
App: s.AppName,
|
|
Context: s.Context,
|
|
}
|
|
cfg.WithTimeout(time.Second * 60)
|
|
_, err := s.Client.Call.GetAppsAppCallsCall(cfg)
|
|
if err == nil {
|
|
t.Error("Must fail because `dummy` call does not exist.")
|
|
}
|
|
|
|
DeleteApp(t, s.Context, s.Client, s.AppName)
|
|
}
|
|
|
|
func TestGetExactCall(t *testing.T) {
|
|
t.Parallel()
|
|
s := SetupDefaultSuite()
|
|
CreateApp(t, s.Context, s.Client, s.AppName, map[string]string{})
|
|
CreateRoute(t, s.Context, s.Client, s.AppName, s.RoutePath, s.Image, s.RouteType,
|
|
s.Format, s.Timeout, s.IdleTimeout, s.RouteConfig, s.RouteHeaders)
|
|
|
|
u := url.URL{
|
|
Scheme: "http",
|
|
Host: Host(),
|
|
}
|
|
u.Path = path.Join(u.Path, "r", s.AppName, s.RoutePath)
|
|
|
|
callID := CallAsync(t, u, &bytes.Buffer{})
|
|
|
|
cfg := &call.GetAppsAppCallsCallParams{
|
|
Call: callID,
|
|
App: s.AppName,
|
|
Context: s.Context,
|
|
}
|
|
cfg.WithTimeout(time.Second * 60)
|
|
|
|
retryErr := APICallWithRetry(t, 10, time.Second*2, func() (err error) {
|
|
_, err = s.Client.Call.GetAppsAppCallsCall(cfg)
|
|
return err
|
|
})
|
|
|
|
if retryErr != nil {
|
|
t.Error(retryErr.Error())
|
|
}
|
|
|
|
DeleteApp(t, s.Context, s.Client, s.AppName)
|
|
}
|