diff --git a/pkg/common/executor/junit.go b/pkg/common/TestJobRunner/junit.go similarity index 99% rename from pkg/common/executor/junit.go rename to pkg/common/TestJobRunner/junit.go index 433a6f7adda..ca082d776b1 100644 --- a/pkg/common/executor/junit.go +++ b/pkg/common/TestJobRunner/junit.go @@ -1,4 +1,4 @@ -package executor +package TestJobRunner import ( "fmt" diff --git a/pkg/common/executor/executor.go b/pkg/common/TestJobRunner/testjobrunner.go similarity index 90% rename from pkg/common/executor/executor.go rename to pkg/common/TestJobRunner/testjobrunner.go index f3f8b39b869..6cfc4abb0b6 100644 --- a/pkg/common/executor/executor.go +++ b/pkg/common/TestJobRunner/testjobrunner.go @@ -1,4 +1,4 @@ -package executor +package TestJobRunner import ( "archive/tar" @@ -44,14 +44,14 @@ type Config struct { RestConfig *rest.Config } -type Executor struct { +type TestJobRunner struct { oc *openshift.Client cfg *Config logger logr.Logger } // New sets up a new executor to run a given test suite image -func New(logger logr.Logger, cfg *Config) (*Executor, error) { +func New(logger logr.Logger, cfg *Config) (*TestJobRunner, error) { var oc *openshift.Client var err error if cfg.RestConfig != nil { @@ -62,10 +62,10 @@ func New(logger logr.Logger, cfg *Config) (*Executor, error) { if err != nil { return nil, fmt.Errorf("openshift client creation: %w", err) } - return &Executor{oc: oc, cfg: cfg, logger: logger.WithName("executor")}, nil + return &TestJobRunner{oc: oc, cfg: cfg, logger: logger.WithName("executor")}, nil } -func (e *Executor) Execute(ctx context.Context, image string) (*testResults, error) { +func (e *TestJobRunner) Execute(ctx context.Context, image string) (*testResults, error) { if err := os.MkdirAll(e.cfg.OutputDir, os.ModePerm); err != nil { return nil, fmt.Errorf("creating output directory: %w", err) } @@ -109,7 +109,7 @@ func (e *Executor) Execute(ctx context.Context, image string) (*testResults, err return results, nil } -func (e *Executor) setupProject(ctx context.Context) (*projectv1.Project, error) { +func (e *TestJobRunner) setupProject(ctx context.Context) (*projectv1.Project, error) { // TODO: why does GenerateName not work? project := &projectv1.Project{ObjectMeta: metav1.ObjectMeta{Name: "osde2e-executor-" + util.RandomStr(5)}} if err := e.oc.Create(ctx, project); err != nil { @@ -151,7 +151,7 @@ func (e *Executor) setupProject(ctx context.Context) (*projectv1.Project, error) return project, nil } -func (e *Executor) createJob(ctx context.Context, namespace string, image string) (*batchv1.Job, error) { +func (e *TestJobRunner) createJob(ctx context.Context, namespace string, image string) (*batchv1.Job, error) { job := e.buildJobSpec(namespace, image) if len(e.cfg.PassthruSecrets) > 0 { @@ -182,7 +182,7 @@ func (e *Executor) createJob(ctx context.Context, namespace string, image string return job, nil } -func (e *Executor) buildJobSpec(namespace string, image string) *batchv1.Job { +func (e *TestJobRunner) buildJobSpec(namespace string, image string) *batchv1.Job { return &batchv1.Job{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "executor-", @@ -264,7 +264,7 @@ func (e *Executor) buildJobSpec(namespace string, image string) *batchv1.Job { // Wait for the e2e-suite container to complete (succeed/fail/stop) // We can't wait for the job because the pause container keeps it running for artifact collection -func (e *Executor) waitForSuite(ctx context.Context, name, namespace, image string) error { +func (e *TestJobRunner) waitForSuite(ctx context.Context, name, namespace, image string) error { return wait.PollUntilContextTimeout(ctx, 10*time.Second, e.cfg.Timeout, false, func(ctx context.Context) (bool, error) { pod, err := e.findJobPod(ctx, name, namespace) if err != nil { @@ -294,7 +294,7 @@ func (e *Executor) waitForSuite(ctx context.Context, name, namespace, image stri }) } -func (e *Executor) fetchArtifacts(ctx context.Context, name, namespace string) error { +func (e *TestJobRunner) fetchArtifacts(ctx context.Context, name, namespace string) error { clientSet, err := kubernetes.NewForConfig(e.oc.GetConfig()) if err != nil { return fmt.Errorf("creating clientset: %w", err) @@ -316,7 +316,7 @@ func (e *Executor) fetchArtifacts(ctx context.Context, name, namespace string) e return nil } -func (e *Executor) findJobPod(ctx context.Context, jobName, namespace string) (*corev1.Pod, error) { +func (e *TestJobRunner) findJobPod(ctx context.Context, jobName, namespace string) (*corev1.Pod, error) { pods := new(corev1.PodList) if err := e.oc.WithNamespace(namespace).List(ctx, pods, resources.WithLabelSelector(labels.FormatLabels(map[string]string{"job-name": jobName}))); err != nil { return nil, fmt.Errorf("listing pods for job: %w", err) @@ -329,7 +329,7 @@ func (e *Executor) findJobPod(ctx context.Context, jobName, namespace string) (* return &pods.Items[0], nil } -func (e *Executor) fetchPodLogs(ctx context.Context, clientSet *kubernetes.Clientset, pod *corev1.Pod, jobName string) error { +func (e *TestJobRunner) fetchPodLogs(ctx context.Context, clientSet *kubernetes.Clientset, pod *corev1.Pod, jobName string) error { var logs strings.Builder req := clientSet.CoreV1().Pods(pod.Namespace).GetLogs(pod.Name, &corev1.PodLogOptions{Container: "e2e-suite"}) @@ -354,7 +354,7 @@ func (e *Executor) fetchPodLogs(ctx context.Context, clientSet *kubernetes.Clien return nil } -func (e *Executor) fetchArtifactFiles(ctx context.Context, clientSet *kubernetes.Clientset, pod *corev1.Pod) error { +func (e *TestJobRunner) fetchArtifactFiles(ctx context.Context, clientSet *kubernetes.Clientset, pod *corev1.Pod) error { execRequest := clientSet.CoreV1().RESTClient(). Post(). Resource("pods"). diff --git a/pkg/common/helper/helper.go b/pkg/common/helper/helper.go index b04fe55df9d..3f877fa5374 100644 --- a/pkg/common/helper/helper.go +++ b/pkg/common/helper/helper.go @@ -18,8 +18,8 @@ import ( "github.com/openshift/osde2e-common/pkg/clients/openshift" viper "github.com/openshift/osde2e/pkg/common/concurrentviper" "github.com/openshift/osde2e/pkg/common/config" + "github.com/openshift/osde2e/pkg/common/mainjobrunner" "github.com/openshift/osde2e/pkg/common/providers/ocmprovider" - "github.com/openshift/osde2e/pkg/common/runner" "github.com/openshift/osde2e/pkg/common/templates" "github.com/openshift/osde2e/pkg/common/util" corev1 "k8s.io/api/core/v1" @@ -480,7 +480,7 @@ func (h *H) GetRunnerCommandString(templatePath string, timeout int, latestImage JobName: jobName, Timeout: timeout, Image: adHocTestImage, - OutputDir: runner.DefaultRunner.OutputDir, + OutputDir: mainjobrunner.DefaultMainJobRunner.OutputDir, ServiceAccount: serviceAccountNamespacedName, PushResultsContainer: latestImageStream, Suffix: suffix, diff --git a/pkg/common/helper/olm.go b/pkg/common/helper/olm.go index aae646169df..9a615bbded5 100644 --- a/pkg/common/helper/olm.go +++ b/pkg/common/helper/olm.go @@ -4,14 +4,14 @@ import ( "context" "fmt" - "github.com/openshift/osde2e/pkg/common/runner" + "github.com/openshift/osde2e/pkg/common/mainjobrunner" ) // InspectOLM inspects the OLM state of the cluster and saves the state to disk for later debugging func (h *H) InspectOLM(ctx context.Context) error { inspectTimeoutInSeconds := 200 h.SetServiceAccount(ctx, "system:serviceaccount:%s:cluster-admin") - r := h.Runner(fmt.Sprintf("oc adm inspect --dest-dir=%v -A olm", runner.DefaultRunner.OutputDir)) + r := h.Runner(fmt.Sprintf("oc adm inspect --dest-dir=%v -A olm", mainjobrunner.DefaultMainJobRunner.OutputDir)) r.Name = "olm-inspect" r.Tarball = true stopCh := make(chan struct{}) diff --git a/pkg/common/helper/projects.go b/pkg/common/helper/projects.go index a6f220e9c1d..ab61b63501b 100644 --- a/pkg/common/helper/projects.go +++ b/pkg/common/helper/projects.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/openshift/osde2e/pkg/common/runner" + "github.com/openshift/osde2e/pkg/common/mainjobrunner" projectv1 "github.com/openshift/api/project/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -63,7 +63,7 @@ func (h *H) inspect(ctx context.Context, projects []string) error { } projectsArg := strings.Join(inspectProjects, " ") - r := h.Runner(fmt.Sprintf("oc adm inspect %v --dest-dir=%v", projectsArg, runner.DefaultRunner.OutputDir)) + r := h.Runner(fmt.Sprintf("oc adm inspect %v --dest-dir=%v", projectsArg, mainjobrunner.DefaultMainJobRunner.OutputDir)) r.Name = "must-gather-additional-projects" r.Tarball = true stopCh := make(chan struct{}) diff --git a/pkg/common/helper/runner.go b/pkg/common/helper/runner.go index 1509c3a96a0..960d3d59bdc 100644 --- a/pkg/common/helper/runner.go +++ b/pkg/common/helper/runner.go @@ -10,12 +10,12 @@ import ( viper "github.com/openshift/osde2e/pkg/common/concurrentviper" "github.com/openshift/osde2e/pkg/common/config" - "github.com/openshift/osde2e/pkg/common/runner" + "github.com/openshift/osde2e/pkg/common/mainjobrunner" ) // RunnerWithNoCommand creates an extended test suite runner and configure RBAC for it. -func (h *H) RunnerWithNoCommand() *runner.Runner { - r := runner.DefaultRunner.DeepCopy() +func (h *H) RunnerWithNoCommand() *mainjobrunner.MainJobRunner { + r := mainjobrunner.DefaultMainJobRunner.DeepCopy() // setup clients r.Kube = h.Kube() @@ -28,19 +28,19 @@ func (h *H) RunnerWithNoCommand() *runner.Runner { } // SetRunnerProject sets namespace for runner pod -func (h *H) SetRunnerProject(project string, r *runner.Runner) *runner.Runner { +func (h *H) SetRunnerProject(project string, r *mainjobrunner.MainJobRunner) *mainjobrunner.MainJobRunner { r.Namespace = project return r } // SetRunnerCommand sets given command to a pod runner -func (h *H) SetRunnerCommand(cmd string, r *runner.Runner) *runner.Runner { +func (h *H) SetRunnerCommand(cmd string, r *mainjobrunner.MainJobRunner) *mainjobrunner.MainJobRunner { r.Cmd = cmd return r } // Runner creates an extended test suite runner and configure RBAC for it and runs cmd in it. -func (h *H) Runner(cmd string) *runner.Runner { +func (h *H) Runner(cmd string) *mainjobrunner.MainJobRunner { r := h.RunnerWithNoCommand() r.PodSpec.ServiceAccountName = h.GetNamespacedServiceAccount() r.Cmd = cmd diff --git a/pkg/common/runner/command.go b/pkg/common/mainjobrunner/command.go similarity index 93% rename from pkg/common/runner/command.go rename to pkg/common/mainjobrunner/command.go index 1d3f9199645..dbc349ec04c 100644 --- a/pkg/common/runner/command.go +++ b/pkg/common/mainjobrunner/command.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "bytes" @@ -45,7 +45,7 @@ cd {{$outDir}} && echo "Starting server" && python -m "${MODULE}" var cmdTemplate = template.Must(template.New("testCmd").Parse(testCmd)) // Command generates the templated command. -func (r *Runner) Command() ([]byte, error) { +func (r *MainJobRunner) Command() ([]byte, error) { var cmd bytes.Buffer if err := cmdTemplate.Execute(&cmd, r); err != nil { return []byte{}, fmt.Errorf("failed templating command: %v", err) diff --git a/pkg/common/runner/command_test.go b/pkg/common/mainjobrunner/command_test.go similarity index 78% rename from pkg/common/runner/command_test.go rename to pkg/common/mainjobrunner/command_test.go index 202877b3567..2574aadf489 100644 --- a/pkg/common/runner/command_test.go +++ b/pkg/common/mainjobrunner/command_test.go @@ -1,10 +1,10 @@ -package runner +package mainjobrunner import "testing" func TestCommand(t *testing.T) { // copy default runner - def := *DefaultRunner + def := *DefaultMainJobRunner r := &def _, err := r.Command() diff --git a/pkg/common/runner/git.go b/pkg/common/mainjobrunner/git.go similarity index 99% rename from pkg/common/runner/git.go rename to pkg/common/mainjobrunner/git.go index 3877eba8dce..8ac28f891f4 100644 --- a/pkg/common/runner/git.go +++ b/pkg/common/mainjobrunner/git.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( kubev1 "k8s.io/api/core/v1" diff --git a/pkg/common/runner/git_test.go b/pkg/common/mainjobrunner/git_test.go similarity index 98% rename from pkg/common/runner/git_test.go rename to pkg/common/mainjobrunner/git_test.go index 35fc5be19b6..cd143c4e8ec 100644 --- a/pkg/common/runner/git_test.go +++ b/pkg/common/mainjobrunner/git_test.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "fmt" diff --git a/pkg/common/runner/imagestream.go b/pkg/common/mainjobrunner/imagestream.go similarity index 87% rename from pkg/common/runner/imagestream.go rename to pkg/common/mainjobrunner/imagestream.go index 39470259232..53c489883fc 100644 --- a/pkg/common/runner/imagestream.go +++ b/pkg/common/mainjobrunner/imagestream.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "context" @@ -17,12 +17,12 @@ const ( ) // GetLatestImageStreamTag returns the From name of the latest ImageStream tag. -func (r *Runner) GetLatestImageStreamTag() (string, error) { +func (r *MainJobRunner) GetLatestImageStreamTag() (string, error) { return r.getImageStreamTag("latest") } // getImageStreamTag returns the From name of the given ImageStream tag. -func (r *Runner) getImageStreamTag(tag string) (string, error) { +func (r *MainJobRunner) getImageStreamTag(tag string) (string, error) { if r.Image == nil { return "", errors.New("client for Image must be set") } diff --git a/pkg/common/runner/imagestream_test.go b/pkg/common/mainjobrunner/imagestream_test.go similarity index 95% rename from pkg/common/runner/imagestream_test.go rename to pkg/common/mainjobrunner/imagestream_test.go index 5d911c59403..07f8fca483f 100644 --- a/pkg/common/runner/imagestream_test.go +++ b/pkg/common/mainjobrunner/imagestream_test.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "testing" @@ -14,7 +14,7 @@ func TestGetLatestImageStreamTag(t *testing.T) { expectedFromName := "quay.io/run/tests" // copy default runner - def := *DefaultRunner + def := *DefaultMainJobRunner r := &def // create example ImageStream diff --git a/pkg/common/runner/runner.go b/pkg/common/mainjobrunner/mainjobrunner.go similarity index 87% rename from pkg/common/runner/runner.go rename to pkg/common/mainjobrunner/mainjobrunner.go index 5817a5c934d..8bd08c6311e 100644 --- a/pkg/common/runner/runner.go +++ b/pkg/common/mainjobrunner/mainjobrunner.go @@ -1,5 +1,5 @@ // Package runner provides a wrapper for the OpenShift extended test suite image. -package runner +package mainjobrunner import ( "context" @@ -15,14 +15,14 @@ import ( ) const ( - // name used in Runner resources + // name used in MainJobRunner resources defaultName = "osde2e-runner" // directory containing service account credentials serviceAccountDir = "/var/run/secrets/kubernetes.io/serviceaccount" ) -// DefaultRunner is a runner with the most commonly desired settings. -var DefaultRunner = &Runner{ +// DefaultMainJobRunner is a runner with the most commonly desired settings. +var DefaultMainJobRunner = &MainJobRunner{ Name: defaultName, ImageStreamName: testImageStreamName, ImageStreamNamespace: testImageStreamNamespace, @@ -39,8 +39,8 @@ var DefaultRunner = &Runner{ Logger: ginkgo.GinkgoLogr, } -// Runner runs the OpenShift extended test suite within a cluster. -type Runner struct { +// MainJobRunner runs the OpenShift extended test suite within a cluster. +type MainJobRunner struct { // Kube client used to run test in-cluster. Kube kube.Interface @@ -99,7 +99,7 @@ type Runner struct { } // Run deploys the suite into a cluster, waits for it to finish, and gathers the results. -func (r *Runner) Run(timeoutInSeconds int, stopCh <-chan struct{}) (err error) { +func (r *MainJobRunner) Run(timeoutInSeconds int, stopCh <-chan struct{}) (err error) { // TODO: pass this in ctx := context.TODO() @@ -153,13 +153,13 @@ func (r *Runner) Run(timeoutInSeconds int, stopCh <-chan struct{}) (err error) { } // Status returns the current state of the runner. -func (r *Runner) Status() Status { +func (r *MainJobRunner) Status() Status { return r.status } // DeepCopy returns a deep copy of a runner. -func (r *Runner) DeepCopy() *Runner { - newRunner := *DefaultRunner +func (r *MainJobRunner) DeepCopy() *MainJobRunner { + newRunner := *DefaultMainJobRunner // copy repos & PodSpec newRunner.Repos = make(Repos, len(r.Repos)) @@ -169,8 +169,8 @@ func (r *Runner) DeepCopy() *Runner { return &newRunner } -// meta returns the ObjectMeta used for Runner resources. -func (r *Runner) meta() metav1.ObjectMeta { +// meta returns the ObjectMeta used for MainJobRunner resources. +func (r *MainJobRunner) meta() metav1.ObjectMeta { return metav1.ObjectMeta{ Name: fmt.Sprintf("%s-%s", r.Name, util.RandomStr(5)), Labels: map[string]string{ diff --git a/pkg/common/runner/runner_test.go b/pkg/common/mainjobrunner/mainjobrunner_test.go similarity index 95% rename from pkg/common/runner/runner_test.go rename to pkg/common/mainjobrunner/mainjobrunner_test.go index 0e9d9c2bf90..abcfa127bcd 100644 --- a/pkg/common/runner/runner_test.go +++ b/pkg/common/mainjobrunner/mainjobrunner_test.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "fmt" @@ -58,8 +58,8 @@ func TestRunner(t *testing.T) { } } -func setupRunner(t *testing.T) *Runner { - r := DefaultRunner.DeepCopy() +func setupRunner(t *testing.T) *MainJobRunner { + r := DefaultMainJobRunner.DeepCopy() if filename := viper.GetString(config.Kubeconfig.Path); len(filename) == 0 { t.Skipf("TEST_KUBECONFIG must be set to test against a cluster.") } else if restConfig, err := clientcmd.BuildConfigFromFlags("", filename); err != nil { diff --git a/pkg/common/runner/pod.go b/pkg/common/mainjobrunner/pod.go similarity index 95% rename from pkg/common/runner/pod.go rename to pkg/common/mainjobrunner/pod.go index 7761615ef1e..349d0cbbfb3 100644 --- a/pkg/common/runner/pod.go +++ b/pkg/common/mainjobrunner/pod.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "context" @@ -38,7 +38,7 @@ func init() { fullPayloadScriptPath = filepath.Join(osde2ePayloadMountPath, osde2ePayloadScript) } -// DefaultContainer is used by the DefaultRunner to run workloads +// DefaultContainer is used by the DefaultMainJobRunner to run workloads var DefaultContainer = kubev1.Container{ Ports: []kubev1.ContainerPort{ { @@ -91,7 +91,7 @@ func volumes(name string) []kubev1.Volume { // createJobPod for creates an osde2e runner Job and returns the singular job pod for further processing. // Opting for Job creation instead of direct Pod creation to avoid orphan workloads. -func (r *Runner) createJobPod(ctx context.Context) (pod *kubev1.Pod, err error) { +func (r *MainJobRunner) createJobPod(ctx context.Context) (pod *kubev1.Pod, err error) { // configure pod to run workload cmName := fmt.Sprintf("%s-%s", osde2ePayload, util.RandomStr(5)) pod = &kubev1.Pod{ @@ -190,7 +190,7 @@ func (r *Runner) createJobPod(ctx context.Context) (pod *kubev1.Pod, err error) } // waitForRunningPod, given a v1.Pod, will wait for 3 minutes for a pod to enter the running phase or return an error. -func (r *Runner) waitForPodRunning(ctx context.Context, pod *kubev1.Pod) error { +func (r *MainJobRunner) waitForPodRunning(ctx context.Context, pod *kubev1.Pod) error { pendingCount := 0 return wait.PollUntilContextTimeout(ctx, fastPoll, 3*time.Minute, false, func(ctx context.Context) (done bool, err error) { pod, err = r.Kube.CoreV1().Pods(pod.Namespace).Get(ctx, pod.Name, metav1.GetOptions{}) diff --git a/pkg/common/runner/results.go b/pkg/common/mainjobrunner/results.go similarity index 92% rename from pkg/common/runner/results.go rename to pkg/common/mainjobrunner/results.go index c3a5e82a05b..71d305f2acd 100644 --- a/pkg/common/runner/results.go +++ b/pkg/common/mainjobrunner/results.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "context" @@ -56,7 +56,7 @@ func ensurePassingXML(results map[string][]byte) (hadXML bool, err error) { } // RetrieveResults gathers the results from the test Pod. Should only be called after tests are finished. -func (r *Runner) RetrieveResults() (map[string][]byte, error) { +func (r *MainJobRunner) RetrieveResults() (map[string][]byte, error) { results, err := r.retrieveResultsForDirectory("") if err != nil { return nil, fmt.Errorf("failed retrieving results: %w", err) @@ -65,7 +65,7 @@ func (r *Runner) RetrieveResults() (map[string][]byte, error) { } // RetrieveTestResults gathers and validates the results from the test Pod. Should only be called after tests are finished. This method both fetches the results and ensures that they contain valid JUnit XML indicating that all tests passed. -func (r *Runner) RetrieveTestResults() (map[string][]byte, error) { +func (r *MainJobRunner) RetrieveTestResults() (map[string][]byte, error) { results, err := r.RetrieveResults() if err != nil { return nil, fmt.Errorf("failed retrieving results: %w", err) @@ -80,7 +80,7 @@ func (r *Runner) RetrieveTestResults() (map[string][]byte, error) { return results, err } -func (r *Runner) retrieveResultsForDirectory(directory string) (map[string][]byte, error) { +func (r *MainJobRunner) retrieveResultsForDirectory(directory string) (map[string][]byte, error) { var rdr io.ReadCloser var resp restclient.ResponseWrapper var err error @@ -121,7 +121,7 @@ func (r *Runner) retrieveResultsForDirectory(directory string) (map[string][]byt // downloadLinks, given an html page, will download all present links. // This is useful when a pod is publishing an html list of artifacts. -func (r *Runner) downloadLinks(n *html.Node, results map[string][]byte, directory string) error { +func (r *MainJobRunner) downloadLinks(n *html.Node, results map[string][]byte, directory string) error { if n.Type == html.ElementNode && n.Data == "a" { for _, a := range n.Attr { if a.Key == "href" { diff --git a/pkg/common/runner/results_test.go b/pkg/common/mainjobrunner/results_test.go similarity index 99% rename from pkg/common/runner/results_test.go rename to pkg/common/mainjobrunner/results_test.go index 271422632bc..96f3a18a619 100644 --- a/pkg/common/runner/results_test.go +++ b/pkg/common/mainjobrunner/results_test.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "bytes" @@ -145,7 +145,7 @@ func TestRetrieveTestResults(t *testing.T) { client.AddProxyReactor("services", reactor.React) // setup runner - def := *DefaultRunner + def := *DefaultMainJobRunner r := &def r.Kube = client diff --git a/pkg/common/runner/service.go b/pkg/common/mainjobrunner/service.go similarity index 92% rename from pkg/common/runner/service.go rename to pkg/common/mainjobrunner/service.go index 95d34406ac6..ef2ed772a65 100644 --- a/pkg/common/runner/service.go +++ b/pkg/common/mainjobrunner/service.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "context" @@ -23,7 +23,7 @@ const ( ) // createService returns a v1.Service pointing to a given v1.Pod object -func (r *Runner) createService(ctx context.Context, pod *kubev1.Pod) (svc *kubev1.Service, err error) { +func (r *MainJobRunner) createService(ctx context.Context, pod *kubev1.Pod) (svc *kubev1.Service, err error) { var ports []kubev1.ServicePort for _, c := range pod.Spec.Containers { for _, p := range c.Ports { @@ -46,7 +46,7 @@ func (r *Runner) createService(ctx context.Context, pod *kubev1.Pod) (svc *kubev // waitForCompletion will wait for a runner's pod to have a valid v1.Endpoint available // otherwise waits for pod to be running -func (r *Runner) waitForCompletion(ctx context.Context, podName string, timeoutInSeconds int) error { +func (r *MainJobRunner) waitForCompletion(ctx context.Context, podName string, timeoutInSeconds int) error { var endpoints *kubev1.Endpoints pendingCount := 0 return wait.PollUntilContextTimeout(ctx, slowPoll, time.Duration(timeoutInSeconds)*time.Second, false, func(ctx context.Context) (done bool, err error) { @@ -91,7 +91,7 @@ func (r *Runner) waitForCompletion(ctx context.Context, podName string, timeoutI }) } -func (r *Runner) getAllLogsFromPod(ctx context.Context, podName string) error { +func (r *MainJobRunner) getAllLogsFromPod(ctx context.Context, podName string) error { pod, err := r.Kube.CoreV1().Pods(r.svc.Namespace).Get(ctx, podName, metav1.GetOptions{}) if err != nil { return err diff --git a/pkg/common/runner/service_test.go b/pkg/common/mainjobrunner/service_test.go similarity index 97% rename from pkg/common/runner/service_test.go rename to pkg/common/mainjobrunner/service_test.go index e4d63651a54..aa51ea24979 100644 --- a/pkg/common/runner/service_test.go +++ b/pkg/common/mainjobrunner/service_test.go @@ -1,4 +1,4 @@ -package runner +package mainjobrunner import ( "context" @@ -27,7 +27,7 @@ func TestResultsService(t *testing.T) { }) // setup runner - def := *DefaultRunner + def := *DefaultMainJobRunner r := &def r.Kube = client ctx := context.Background() diff --git a/pkg/e2e/adhoctestimages/adhoctestimages.go b/pkg/e2e/adhoctestimages/adhoctestimages.go index ec5f42d8efe..c3403f543bb 100644 --- a/pkg/e2e/adhoctestimages/adhoctestimages.go +++ b/pkg/e2e/adhoctestimages/adhoctestimages.go @@ -13,9 +13,9 @@ import ( "github.com/openshift/osde2e-common/pkg/clients/ocm" "github.com/openshift/osde2e/internal/analysisengine" "github.com/openshift/osde2e/internal/reporter" + "github.com/openshift/osde2e/pkg/common/TestJobRunner" viper "github.com/openshift/osde2e/pkg/common/concurrentviper" "github.com/openshift/osde2e/pkg/common/config" - "github.com/openshift/osde2e/pkg/common/executor" "github.com/openshift/osde2e/pkg/common/label" "github.com/openshift/osde2e/pkg/common/providers/ocmprovider" "k8s.io/client-go/tools/clientcmd" @@ -26,7 +26,7 @@ var _ = ginkgo.Describe("Ad Hoc Test Images", ginkgo.Ordered, ginkgo.ContinueOnF logger = ginkgo.GinkgoLogr testImageEntries = []ginkgo.TableEntry{} testSuites []config.TestSuite - exeConfig = &executor.Config{ + exeConfig = &TestJobRunner.Config{ CloudProviderID: viper.GetString(config.CloudProvider.CloudProviderID), CloudProviderRegion: viper.GetString(config.CloudProvider.Region), ClusterID: viper.GetString(config.Cluster.ID), @@ -35,7 +35,7 @@ var _ = ginkgo.Describe("Ad Hoc Test Images", ginkgo.Ordered, ginkgo.ContinueOnF SkipCleanup: viper.GetBool(config.Cluster.SkipDestroyCluster), Timeout: viper.GetDuration(config.Tests.AdHocTestContainerTimeout), } - exe *executor.Executor + exe *TestJobRunner.TestJobRunner ) // Get test suites using the new structured format @@ -54,7 +54,7 @@ var _ = ginkgo.Describe("Ad Hoc Test Images", ginkgo.Ordered, ginkgo.ContinueOnF exeConfig.RestConfig, err = clientcmd.RESTConfigFromKubeConfig([]byte(viper.GetString(config.Kubeconfig.Contents))) Expect(err).NotTo(HaveOccurred()) - exe, err = executor.New(logger, exeConfig) + exe, err = TestJobRunner.New(logger, exeConfig) Expect(err).NotTo(HaveOccurred()) // Log test suites with their slack channels diff --git a/pkg/e2e/state/prometheus.go b/pkg/e2e/state/prometheus.go index 03da94fe177..a4476501a85 100644 --- a/pkg/e2e/state/prometheus.go +++ b/pkg/e2e/state/prometheus.go @@ -11,7 +11,7 @@ import ( . "github.com/onsi/gomega" "github.com/openshift/osde2e/pkg/common/helper" "github.com/openshift/osde2e/pkg/common/label" - "github.com/openshift/osde2e/pkg/common/runner" + "github.com/openshift/osde2e/pkg/common/mainjobrunner" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" @@ -36,7 +36,7 @@ var _ = ginkgo.Describe(clusterStateInformingName, label.E2E, func() { // this command is has specific code to capture and suppress an exit code of // 1 as tar 1.26 will exit 1 if files change while the tar is running, as is // common for a running prometheus instance - cmd := "oc cp -c prometheus openshift-monitoring/prometheus-k8s-0:/prometheus /tmp/prometheus && tar -cvzf " + runner.DefaultRunner.OutputDir + "/prometheus.tar.gz -C /tmp/prometheus .; err=$? ; if (( $err != 0 )) ; then exit $err ; fi" + cmd := "oc cp -c prometheus openshift-monitoring/prometheus-k8s-0:/prometheus /tmp/prometheus && tar -cvzf " + mainjobrunner.DefaultMainJobRunner.OutputDir + "/prometheus.tar.gz -C /tmp/prometheus .; err=$? ; if (( $err != 0 )) ; then exit $err ; fi" // ensure prometheus pods are up before trying to extract data poderr := wait.PollUntilContextTimeout(ctx, 2*time.Second, prometheusPodStartedDuration, true, func(ctx context.Context) (bool, error) { diff --git a/test/executor/executor_test.go b/test/executor/executor_test.go index 8d149a2c7fa..7016a06e860 100644 --- a/test/executor/executor_test.go +++ b/test/executor/executor_test.go @@ -7,11 +7,11 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/openshift/osde2e-common/pkg/clients/ocm" - "github.com/openshift/osde2e/pkg/common/executor" + "github.com/openshift/osde2e/pkg/common/TestJobRunner" "k8s.io/klog/v2/textlogger" ) -var _ = Describe("Executor", func() { +var _ = Describe("TestJobRunner", func() { BeforeEach(func() { if os.Getenv("KUBECONFIG") == "" { Skip("No KUBECONFIG available") @@ -26,7 +26,7 @@ var _ = Describe("Executor", func() { }) logger := textlogger.NewLogger(textlogger.NewConfig()) - cfg := &executor.Config{ + cfg := &TestJobRunner.Config{ OutputDir: outputDir, Environment: ocm.Stage, ClusterID: "test-cluster", @@ -38,7 +38,7 @@ var _ = Describe("Executor", func() { Timeout: 5 * time.Minute, } - exe, err := executor.New(logger, cfg) + exe, err := TestJobRunner.New(logger, cfg) Expect(err).NotTo(HaveOccurred()) results, err := exe.Execute(ctx, "quay.io/app-sre/route-monitor-operator-test-harness")