added manger to keep track of go routines in the services (#2869)

- added manager to wait for all go routines to end before exit
- code refactor
- renamed Manafer to Interface and GoRoutineManager to GroupManager
- replaced some go routine calls with manager Add func
- added unit tests for manager
This commit is contained in:
Vardhaman Surana
2023-11-07 15:30:48 +05:30
committed by GitHub
parent 27132975c4
commit 2a40b4538c
24 changed files with 283 additions and 67 deletions
+6 -1
View File
@@ -8,19 +8,24 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "github.com/fission/fission/pkg/apis/core/v1"
"github.com/fission/fission/pkg/utils/manager"
"github.com/fission/fission/test/e2e/framework"
"github.com/fission/fission/test/e2e/framework/cli"
"github.com/fission/fission/test/e2e/framework/services"
)
func TestFissionCLI(t *testing.T) {
mgr := manager.New()
defer mgr.Wait()
f := framework.NewFramework()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
err := f.Start(ctx)
require.NoError(t, err)
err = services.StartServices(ctx, f)
err = services.StartServices(ctx, f, mgr)
require.NoError(t, err)
fissionClient, err := f.ClientGen().GetFissionClient()
+7 -5
View File
@@ -11,10 +11,12 @@ import (
"github.com/fission/fission/pkg/router"
"github.com/fission/fission/pkg/storagesvc"
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/manager"
"github.com/fission/fission/test/e2e/framework"
)
func StartServices(ctx context.Context, f *framework.Framework) error {
func StartServices(ctx context.Context, f *framework.Framework, mgr manager.Interface) error {
executorPort, err := utils.FindFreePort()
if err != nil {
return fmt.Errorf("error finding unused port: %v", err)
@@ -35,7 +37,7 @@ func StartServices(ctx context.Context, f *framework.Framework) error {
}
os.Setenv("POD_READY_TIMEOUT", "300s")
err = executor.StartExecutor(ctx, f.ClientGen(), f.Logger(), executorPort)
err = executor.StartExecutor(ctx, f.ClientGen(), f.Logger(), mgr, executorPort)
if err != nil {
return fmt.Errorf("error starting executor: %v", err)
}
@@ -58,7 +60,7 @@ func StartServices(ctx context.Context, f *framework.Framework) error {
if err != nil {
return fmt.Errorf("error toggling metric address: %v", err)
}
err = storagesvc.Start(ctx, f.ClientGen(), f.Logger(), storagesvc.NewLocalStorage(storageDir), storageSvcPort)
err = storagesvc.Start(ctx, f.ClientGen(), f.Logger(), storagesvc.NewLocalStorage(storageDir), mgr, storageSvcPort)
if err != nil {
return fmt.Errorf("error starting storage service: %v", err)
}
@@ -69,7 +71,7 @@ func StartServices(ctx context.Context, f *framework.Framework) error {
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))
err = buildermgr.Start(ctx, f.ClientGen(), f.Logger(), mgr, fmt.Sprintf("http://localhost:%d", storageSvcPort))
if err != nil {
return fmt.Errorf("error starting builder manager: %v", err)
}
@@ -95,7 +97,7 @@ func StartServices(ctx context.Context, f *framework.Framework) error {
return fmt.Errorf("error toggling metric address: %v", err)
}
executor := eclient.MakeClient(f.Logger(), fmt.Sprintf("http://localhost:%d", executorPort))
err = router.Start(ctx, f.ClientGen(), f.Logger(), routerPort, executor)
err = router.Start(ctx, f.ClientGen(), f.Logger(), mgr, routerPort, executor)
if err != nil {
return fmt.Errorf("error starting router: %v", err)
}