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 }