diff --git a/lib/test/integration.go b/lib/test/integration.go index 0e8574cfb6..a062774a13 100644 --- a/lib/test/integration.go +++ b/lib/test/integration.go @@ -46,13 +46,22 @@ type KnTest struct { // NewKnTest creates a new KnTest object func NewKnTest() (*KnTest, error) { - ns := NextNamespace() - - err := CreateNamespace(ns) - if err != nil { - return nil, err + ns := "" + // try next 20 namespace before giving up creating a namespace if it already exists + for i := 0; i < 20; i++ { + ns = NextNamespace() + err := CreateNamespace(ns) + if err == nil { + break + } + if strings.Contains(err.Error(), "AlreadyExists") { + continue + } else { + return nil, err + } } - err = WaitForNamespaceCreated(ns) + + err := WaitForNamespaceCreated(ns) if err != nil { return nil, err } diff --git a/lib/test/utils.go b/lib/test/utils.go index 890b307873..93878ae6f4 100644 --- a/lib/test/utils.go +++ b/lib/test/utils.go @@ -14,7 +14,17 @@ package test -import "testing" +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +const ( + FileModeReadWrite = 0666 + FileModeExecutable = 0777 +) // GetResourceFieldsWithJSONPath returns output of given JSON path for given resource using kubectl and error if any func GetResourceFieldsWithJSONPath(t *testing.T, it *KnTest, resource, name, jsonpath string) (string, error) { @@ -25,3 +35,10 @@ func GetResourceFieldsWithJSONPath(t *testing.T, it *KnTest, resource, name, jso return out, nil } + +// CreateFile creates a file with given name, content, path, fileMode and returns absolute filepath and error if any +func CreateFile(fileName, fileContent, filePath string, fileMode os.FileMode) (string, error) { + file := filepath.Join(filePath, fileName) + err := ioutil.WriteFile(file, []byte(fileContent), fileMode) + return file, err +} diff --git a/test/e2e/plugins_test.go b/test/e2e/plugins_test.go index d893a3e04c..53b7bff4ae 100644 --- a/test/e2e/plugins_test.go +++ b/test/e2e/plugins_test.go @@ -13,6 +13,8 @@ // limitations under the License. // +build e2e +// +build !eventing +// +build !serving package e2e @@ -35,9 +37,6 @@ const ( echo "Hello Knative, I'm a Kn plugin" echo " My plugin file is $0" echo " I received arguments: $1 $2 $3 $4"` - - FileModeReadWrite = 0666 - FileModeExecutable = 0777 ) type pluginTestConfig struct { @@ -53,27 +52,27 @@ func (pc *pluginTestConfig) setup() error { } pc.knPluginsDir = filepath.Join(pc.knConfigDir, "plugins") - err = os.MkdirAll(pc.knPluginsDir, FileModeExecutable) + err = os.MkdirAll(pc.knPluginsDir, test.FileModeExecutable) if err != nil { return err } pc.knPluginsDir2 = filepath.Join(pc.knConfigDir, "plugins2") - err = os.MkdirAll(pc.knPluginsDir2, FileModeExecutable) + err = os.MkdirAll(pc.knPluginsDir2, test.FileModeExecutable) if err != nil { return err } - pc.knConfigPath, err = createPluginFile("config.yaml", "", pc.knConfigDir, FileModeReadWrite) + pc.knConfigPath, err = test.CreateFile("config.yaml", "", pc.knConfigDir, test.FileModeReadWrite) if err != nil { return err } - pc.knPluginPath, err = createPluginFile("kn-helloe2e", TestPluginCode, pc.knPluginsDir, FileModeExecutable) + pc.knPluginPath, err = test.CreateFile("kn-helloe2e", TestPluginCode, pc.knPluginsDir, test.FileModeExecutable) if err != nil { return err } - pc.knPluginPath2, err = createPluginFile("kn-hello2e2e", TestPluginCode, pc.knPluginsDir2, FileModeExecutable) + pc.knPluginPath2, err = test.CreateFile("kn-hello2e2e", TestPluginCode, pc.knPluginsDir2, test.FileModeExecutable) if err != nil { return err } @@ -84,12 +83,6 @@ func (pc *pluginTestConfig) teardown() { os.RemoveAll(pc.knConfigDir) } -func createPluginFile(fileName, fileContent, filePath string, fileMode os.FileMode) (string, error) { - file := filepath.Join(filePath, fileName) - err := ioutil.WriteFile(file, []byte(fileContent), fileMode) - return file, err -} - func TestPluginWithoutLookup(t *testing.T) { t.Parallel() diff --git a/test/e2e/sinkprefix_test.go b/test/e2e/sinkprefix_test.go index 7020413502..91d2d1242c 100644 --- a/test/e2e/sinkprefix_test.go +++ b/test/e2e/sinkprefix_test.go @@ -47,7 +47,7 @@ func (tc *sinkprefixTestConfig) setup() error { if err != nil { return err } - tc.knConfigPath, err = createPluginFile("config.yaml", KnConfigContent, tc.knConfigDir, FileModeReadWrite) + tc.knConfigPath, err = test.CreateFile("config.yaml", KnConfigContent, tc.knConfigDir, test.FileModeReadWrite) if err != nil { return err }