github.com/kubeshop/testkube@v1.17.23/pkg/test/detector/detector.go (about)

     1  package detector
     2  
     3  import (
     4  	"github.com/kubeshop/testkube/contrib/executor/artillery/pkg/artillery"
     5  	"github.com/kubeshop/testkube/contrib/executor/curl/pkg/curl"
     6  	"github.com/kubeshop/testkube/contrib/executor/cypress/pkg/cypress"
     7  	"github.com/kubeshop/testkube/contrib/executor/ginkgo/pkg/ginkgo"
     8  	"github.com/kubeshop/testkube/contrib/executor/gradle/pkg/gradle"
     9  	"github.com/kubeshop/testkube/contrib/executor/jmeter/pkg/jmeter"
    10  	"github.com/kubeshop/testkube/contrib/executor/k6/pkg/k6detector"
    11  	"github.com/kubeshop/testkube/contrib/executor/kubepug/pkg/kubepug"
    12  	"github.com/kubeshop/testkube/contrib/executor/maven/pkg/maven"
    13  	"github.com/kubeshop/testkube/contrib/executor/playwright/pkg/playwright"
    14  	"github.com/kubeshop/testkube/contrib/executor/postman/pkg/postman"
    15  	"github.com/kubeshop/testkube/contrib/executor/soapui/pkg/soapui"
    16  	"github.com/kubeshop/testkube/pkg/api/v1/client"
    17  )
    18  
    19  func NewDefaultDetector() Detector {
    20  	d := Detector{Adapters: make(map[string]Adapter, 0)}
    21  	d.Add(artillery.Detector{})
    22  	d.Add(curl.Detector{})
    23  	d.Add(jmeter.Detector{})
    24  	d.Add(k6detector.Detector{})
    25  	d.Add(postman.Detector{})
    26  	d.Add(soapui.Detector{})
    27  	d.Add(maven.Detector{})
    28  	d.Add(gradle.Detector{})
    29  	d.Add(playwright.Detector{})
    30  	d.Add(cypress.Detector{})
    31  	d.Add(ginkgo.Detector{})
    32  	d.Add(kubepug.Detector{})
    33  	return d
    34  }
    35  
    36  // Detector is detection orchestrator for possible detectors
    37  type Detector struct {
    38  	Adapters map[string]Adapter
    39  }
    40  
    41  // Add adds adapter
    42  func (d *Detector) Add(adapter Adapter) {
    43  	d.Adapters[adapter.GetType()] = adapter
    44  }
    45  
    46  // Detect detects test type
    47  func (d *Detector) Detect(path string, options client.UpsertTestOptions) (name string, found bool) {
    48  	for _, adapter := range d.Adapters {
    49  		if name, found := adapter.IsWithPath(path, options); found {
    50  			return name, found
    51  		}
    52  	}
    53  
    54  	return
    55  }
    56  
    57  // GetAdapter return adapter by test type
    58  func (d *Detector) GetAdapter(testType string) Adapter {
    59  	adapter, ok := d.Adapters[testType]
    60  	if !ok {
    61  		return nil
    62  	}
    63  
    64  	return adapter
    65  }