Files
fission-src/test/e2e/framework/framework.go
T
8a17d391c5 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>
2023-10-26 12:09:11 +05:30

87 lines
1.8 KiB
Go

package framework
import (
"context"
"fmt"
"os"
"path/filepath"
"time"
"go.uber.org/zap"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/envtest"
"github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/utils"
"github.com/fission/fission/pkg/utils/loggerfactory"
)
const (
EXECUTOR_URL = "http://executor.fission"
STORAGESVC_URL = "http://storagesvc.fission"
)
type ServiceInfo struct {
Port int
}
type Framework struct {
env *envtest.Environment
config *rest.Config
logger *zap.Logger
ServiceInfo map[string]ServiceInfo
}
func NewFramework() *Framework {
return &Framework{
logger: loggerfactory.GetLogger(),
env: &envtest.Environment{
CRDDirectoryPaths: []string{filepath.Join("../../..", "crds", "v1")},
ErrorIfCRDPathMissing: true,
CRDInstallOptions: envtest.CRDInstallOptions{
MaxTime: 60 * time.Second,
},
BinaryAssetsDirectory: os.Getenv("KUBEBUILDER_ASSETS"),
},
ServiceInfo: make(map[string]ServiceInfo),
}
}
func (f *Framework) Start(ctx context.Context) error {
var err error
f.config, err = f.env.Start()
if err != nil {
return fmt.Errorf("error starting test env: %v", err)
}
return nil
}
func (f *Framework) ToggleMetricAddr() error {
port, err := utils.FindFreePort()
if err != nil {
return fmt.Errorf("error finding unused port: %v", err)
}
os.Setenv("METRICS_ADDR", fmt.Sprint(port))
return nil
}
func (f *Framework) RestConfig() *rest.Config {
return f.config
}
func (f *Framework) Logger() *zap.Logger {
return f.logger
}
func (f *Framework) ClientGen() *crd.ClientGenerator {
return crd.NewClientGeneratorWithRestConfig(f.config)
}
func (f *Framework) Stop() error {
err := f.env.Stop()
if err != nil {
return fmt.Errorf("error stopping test env: %v", err)
}
return nil
}