Envtest based integration tests for Fission (#2858)

* skeleton for envtest fission
* Refactor code and add CLI test
* hack
* Update server test
* remove skip-ci for lint tests
* Pass client go storagesvc
* Add clientGen interface across code
* Fix storagesvc test
* Fix cmd client
* add retry in server test
* Fix concurrenct access to pool deployment
* Remove old executor test
* get rid of ginkgo/gomega
* disable flaky test
* flaky test
* revert ci change
* handle err from ParseBool

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Pranoy Kundu <pranoy1998k@gmail.com>
This commit is contained in:
Sanket Sudake
2023-10-26 12:09:11 +05:30
committed by GitHub
co-authored by Pranoy Kundu
parent 15e16fcc82
commit 8a17d391c5
44 changed files with 534 additions and 524 deletions
+92
View File
@@ -0,0 +1,92 @@
package services
import (
"context"
"fmt"
"os"
"github.com/fission/fission/pkg/buildermgr"
"github.com/fission/fission/pkg/executor"
"github.com/fission/fission/pkg/router"
"github.com/fission/fission/pkg/storagesvc"
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/test/e2e/framework"
)
func StartServices(ctx context.Context, f *framework.Framework) error {
executorPort, err := utils.FindFreePort()
if err != nil {
return fmt.Errorf("error finding unused port: %v", err)
}
err = f.ToggleMetricAddr()
if err != nil {
return fmt.Errorf("error toggling metric address: %v", err)
}
err = executor.StartExecutor(ctx, f.ClientGen(), f.Logger(), executorPort)
if err != nil {
return fmt.Errorf("error starting executor: %v", err)
}
f.ServiceInfo["executor"] = framework.ServiceInfo{
Port: executorPort,
}
os.Setenv("PRUNE_ENABLED", "true")
os.Setenv("PRUNE_INTERVAL", "60")
storageDir, err := os.MkdirTemp("/tmp", "storagesvc")
if err != nil {
return fmt.Errorf("error creating temp directory: %v", err)
}
storageSvcPort, err := utils.FindFreePort()
if err != nil {
return fmt.Errorf("error finding unused port: %v", err)
}
err = f.ToggleMetricAddr()
if err != nil {
return fmt.Errorf("error toggling metric address: %v", err)
}
err = storagesvc.Start(ctx, f.ClientGen(), f.Logger(), storagesvc.NewLocalStorage(storageDir), storageSvcPort)
if err != nil {
return fmt.Errorf("error starting storage service: %v", err)
}
f.ServiceInfo["storagesvc"] = framework.ServiceInfo{
Port: storageSvcPort,
}
err = f.ToggleMetricAddr()
if err != nil {
return fmt.Errorf("error toggling metric address: %v", err)
}
err = buildermgr.Start(ctx, f.ClientGen(), f.Logger(), fmt.Sprintf("http://localhost:%d", storageSvcPort))
if err != nil {
return fmt.Errorf("error starting builder manager: %v", err)
}
f.ServiceInfo["buildermgr"] = framework.ServiceInfo{}
os.Setenv("ROUTER_ROUND_TRIP_TIMEOUT", "50ms")
os.Setenv("ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT", "2")
os.Setenv("ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME", "30s")
os.Setenv("ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE", "true")
os.Setenv("ROUTER_ROUND_TRIP_MAX_RETRIES", "10")
os.Setenv("ROUTER_SVC_ADDRESS_MAX_RETRIES", "5")
os.Setenv("ROUTER_SVC_ADDRESS_UPDATE_TIMEOUT", "30s")
os.Setenv("ROUTER_UNTAP_SERVICE_TIMEOUT", "3600s")
os.Setenv("USE_ENCODED_PATH", "false")
os.Setenv("DISPLAY_ACCESS_LOG", "false")
os.Setenv("DEBUG_ENV", "false")
routerPort, err := utils.FindFreePort()
if err != nil {
return fmt.Errorf("error finding unused port: %v", err)
}
err = f.ToggleMetricAddr()
if err != nil {
return fmt.Errorf("error toggling metric address: %v", err)
}
err = router.Start(ctx, f.ClientGen(), f.Logger(), routerPort, fmt.Sprintf("http://localhost:%d", executorPort))
if err != nil {
return fmt.Errorf("error starting router: %v", err)
}
f.ServiceInfo["router"] = framework.ServiceInfo{
Port: routerPort,
}
return nil
}