mirror of
				https://github.com/redhat-developer/odo.git
				synced 2025-10-19 03:06:19 +03:00 
			
		
		
		
	implement devfile conversion ( with --now support) on --s2i without --git flag (#4518)
* implement devfile conversion ( with --now support) on --s2i without --git flag * fix unit tests * resolve failing tests * small fix * more test fixes * more failing tests * fix multiple tests * forgot to push * fix debug port error * fix failures * resolve no ports error * more test fixes * fixing more failures in tests * fix more tests * small fix * changes * update more tests * fix more tests * more tests * fix more tests * more test resolved * add comment on test * remove and updated tests * fixed more tests * removed FIt * Removed FIt * fix tests * fix unit test * fix more tests * more tests fixed * fix some e2e tests * commented some tests * add images back * change --git links * more images * comment * fix comments * fix e2e images test * address tests * add requested test and helpers * more cleanup * remove dependence on kubectl * use different port Co-authored-by: Tomas Kral <tkral@redhat.com>
This commit is contained in:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -9,7 +9,7 @@ COMMON_LDFLAGS := -X $(PROJECT)/pkg/version.GITCOMMIT=$(GITCOMMIT) | ||||
| BUILD_FLAGS := -mod=vendor -ldflags="$(COMMON_LDFLAGS)" | ||||
| CROSS_BUILD_FLAGS := -mod=vendor -ldflags="-s -w -X $(PROJECT)/pkg/segment.writeKey=R1Z79HadJIrphLoeONZy5uqOjusljSwN $(COMMON_LDFLAGS)" | ||||
| FILES := odo dist | ||||
| TIMEOUT ?= 7200s | ||||
| TIMEOUT ?= 14400s | ||||
|  | ||||
| # Env variable TEST_EXEC_NODES is used to pass spec execution type | ||||
| # (parallel or sequential) for ginkgo tests. To run the specs sequentially use | ||||
|   | ||||
| @@ -407,6 +407,11 @@ func (lc *LocalConfig) GetSourceType() SrcType { | ||||
| 	return *lc.componentSettings.SourceType | ||||
| } | ||||
|  | ||||
| // SetComponentSettingsWithoutFileWrite sets the componentSetting but doesn't write to file | ||||
| func (lci *LocalConfigInfo) SetComponentSettingsWithoutFileWrite(cs ComponentSettings) { | ||||
| 	lci.componentSettings = cs | ||||
| } | ||||
|  | ||||
| // GetApplication returns the app, returns default if nil | ||||
| func (lc *LocalConfig) GetApplication() string { | ||||
| 	return util.GetStringOrEmpty(lc.componentSettings.Application) | ||||
|   | ||||
| @@ -1,13 +1,18 @@ | ||||
| package convert | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"path/filepath" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/devfile/library/pkg/devfile/parser" | ||||
| 	"github.com/devfile/library/pkg/devfile/parser/data" | ||||
| 	"github.com/openshift/odo/pkg/config" | ||||
| 	"github.com/openshift/odo/pkg/devfile/adapters/common" | ||||
| 	"github.com/openshift/odo/pkg/envinfo" | ||||
| 	"github.com/openshift/odo/pkg/occlient" | ||||
| 	"github.com/openshift/odo/pkg/util" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"k8s.io/klog" | ||||
|  | ||||
| @@ -26,10 +31,10 @@ const ( | ||||
| 	runCommandID = "s2i-run" | ||||
| 	// run command to be used in s2i devfile | ||||
| 	runCommandS2i = "/opt/odo/bin/run" | ||||
| 	// container component name to be used in devfile | ||||
| 	containerName = "s2i-builder" | ||||
| 	// directory to sync s2i source code | ||||
| 	sourceMappingS2i = "/tmp/projects" | ||||
| 	// ContainerName is component name to be used in devfile | ||||
| 	ContainerName = "s2i-builder" | ||||
| 	// DefaultSourceMappingS2i is the directory to sync s2i source code | ||||
| 	DefaultSourceMappingS2i = "/tmp/projects" | ||||
| 	// devfile version | ||||
| 	devfileVersion = "2.0.0" | ||||
| 	// environment variable set for s2i assemble and restart scripts | ||||
| @@ -46,12 +51,23 @@ func GenerateDevfileYaml(client *occlient.Client, co *config.LocalConfigInfo, co | ||||
| 	// git, local, binary, none | ||||
| 	sourceType := co.GetSourceType() | ||||
|  | ||||
| 	debugPort := co.GetDebugPort() | ||||
|  | ||||
| 	imageStream, imageforDevfile, err := getImageforDevfile(client, componentType) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "Failed to get image details") | ||||
| 	} | ||||
|  | ||||
| 	envVarList := co.GetEnvVars() | ||||
|  | ||||
| 	if debugPort != 0 || debugPort == config.DefaultDebugPort { | ||||
| 		env := config.EnvVar{ | ||||
| 			Name:  common.EnvDebugPort, | ||||
| 			Value: fmt.Sprint(debugPort), | ||||
| 		} | ||||
| 		envVarList = append(envVarList, env) | ||||
| 	} | ||||
|  | ||||
| 	s2iEnv, err := occlient.GetS2IEnvForDevfile(string(sourceType), envVarList, *imageStream) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| @@ -163,7 +179,7 @@ func setDevfileCommandsForS2I(d data.DevfileData) { | ||||
| 		Id: buildCommandID, | ||||
| 		CommandUnion: devfilev1.CommandUnion{ | ||||
| 			Exec: &devfilev1.ExecCommand{ | ||||
| 				Component:   containerName, | ||||
| 				Component:   ContainerName, | ||||
| 				CommandLine: buildCommandS2i, | ||||
| 				LabeledCommand: devfilev1.LabeledCommand{ | ||||
| 					BaseCommand: devfilev1.BaseCommand{ | ||||
| @@ -181,7 +197,7 @@ func setDevfileCommandsForS2I(d data.DevfileData) { | ||||
| 		Id: runCommandID, | ||||
| 		CommandUnion: devfilev1.CommandUnion{ | ||||
| 			Exec: &devfilev1.ExecCommand{ | ||||
| 				Component:   containerName, | ||||
| 				Component:   ContainerName, | ||||
| 				CommandLine: runCommandS2i, | ||||
| 				LabeledCommand: devfilev1.LabeledCommand{ | ||||
| 					BaseCommand: devfilev1.BaseCommand{ | ||||
| @@ -241,6 +257,8 @@ func setDevfileComponentsForS2I(d data.DevfileData, s2iImage string, localConfig | ||||
| 		volumeMounts = append(volumeMounts, volumeMount) | ||||
| 	} | ||||
|  | ||||
| 	sourceMapping := DefaultSourceMappingS2i | ||||
|  | ||||
| 	// Add s2i specific env variable in devfile | ||||
| 	for _, env := range s2iEnv { | ||||
| 		env := devfilev1.EnvVar{ | ||||
| @@ -255,7 +273,7 @@ func setDevfileComponentsForS2I(d data.DevfileData, s2iImage string, localConfig | ||||
| 	} | ||||
| 	envs = append(envs, env) | ||||
|  | ||||
| 	// convert s2i ports to devfile endpoints | ||||
| 	// convert s2i urls to devfile endpoints | ||||
| 	for _, url := range urls { | ||||
|  | ||||
| 		endpoint := devfilev1.Endpoint{ | ||||
| @@ -267,14 +285,45 @@ func setDevfileComponentsForS2I(d data.DevfileData, s2iImage string, localConfig | ||||
| 		endpoints = append(endpoints, endpoint) | ||||
| 	} | ||||
|  | ||||
| 	ports, err := localConfig.GetPorts() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// convert s2i ports to devfile endpoints if there are no urls present | ||||
| 	for _, port := range ports { | ||||
| 		i_port, err := strconv.Atoi(strings.Split(port, "/")[0]) | ||||
| 		// we dont fail if the ports are malformed | ||||
| 		if err != nil { | ||||
| 			continue | ||||
| 		} | ||||
| 		hasURL := false | ||||
| 		for _, url := range urls { | ||||
| 			if i_port == url.Port { | ||||
| 				hasURL = true | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if !hasURL { | ||||
| 			// every port is an exposed url for now | ||||
| 			endpoint := devfilev1.Endpoint{ | ||||
| 				Name:       util.GetURLName(localConfig.GetName(), i_port), | ||||
| 				TargetPort: i_port, | ||||
| 				Secure:     false, | ||||
| 			} | ||||
|  | ||||
| 			endpoints = append(endpoints, endpoint) | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	container := devfilev1.Component{ | ||||
| 		Name: containerName, | ||||
| 		Name: ContainerName, | ||||
| 		ComponentUnion: devfilev1.ComponentUnion{ | ||||
| 			Container: &devfilev1.ContainerComponent{ | ||||
| 				Container: devfilev1.Container{ | ||||
| 					Image:         s2iImage, | ||||
| 					MountSources:  &mountSources, | ||||
| 					SourceMapping: sourceMappingS2i, | ||||
| 					SourceMapping: sourceMapping, | ||||
| 					MemoryLimit:   maxMemory, | ||||
| 					Env:           envs, | ||||
| 					VolumeMounts:  volumeMounts, | ||||
|   | ||||
| @@ -16,6 +16,7 @@ import ( | ||||
| 	"github.com/openshift/odo/pkg/catalog" | ||||
| 	"github.com/openshift/odo/pkg/component" | ||||
| 	"github.com/openshift/odo/pkg/config" | ||||
| 	"github.com/openshift/odo/pkg/devfile/convert" | ||||
| 	"github.com/openshift/odo/pkg/devfile/validate" | ||||
| 	"github.com/openshift/odo/pkg/envinfo" | ||||
| 	"github.com/openshift/odo/pkg/log" | ||||
| @@ -719,8 +720,6 @@ func (co *CreateOptions) Validate() (err error) { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	log.Info("Validation") | ||||
|  | ||||
| 	supported, err := catalog.IsComponentTypeSupported(co.Context.Client, *co.componentSettings.Type) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| @@ -908,22 +907,40 @@ func (co *CreateOptions) Run() (err error) { | ||||
| 			return err | ||||
| 		} | ||||
| 		if log.IsJSON() { | ||||
| 			return co.DevfileJSON() | ||||
| 		} | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 			client, err := genericclioptions.Client() | ||||
| 			if err == nil { | ||||
| 				co.Client = client | ||||
| 			} | ||||
| 	// we only do conversion if the --s2i is provided and the component is not of --git type | ||||
| 	if co.forceS2i && len(co.componentGit) == 0 && len(co.componentBinary) == 0 { | ||||
| 		log.Info("Conversion") | ||||
| 		// do the conversion | ||||
| 		// lets fill the localConfigInfo as we are using that as an adapter | ||||
| 		co.LocalConfigInfo.SetComponentSettingsWithoutFileWrite(co.componentSettings) | ||||
| 		if err := convert.GenerateDevfileYaml(co.Client, co.LocalConfigInfo, co.componentContext); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 			envInfo, err := envinfo.NewEnvSpecificInfo(co.componentContext) | ||||
| 		if _, err := convert.GenerateEnvYaml(co.Client, co.LocalConfigInfo, co.componentContext); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		log.Success("Successfully generated devfile.yaml and env.yaml for provided S2I component") | ||||
|  | ||||
| 		if co.now { | ||||
| 			err = co.InitEnvInfoFromContext() | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
|  | ||||
| 			cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(co.Client, co.LocalConfigInfo, envInfo, envInfo.GetName(), envInfo.GetApplication(), co.Project) | ||||
| 			err = co.DevfilePush() | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 				return fmt.Errorf("failed to push changes: %w", err) | ||||
| 			} | ||||
| 			machineoutput.OutputSuccess(cfd.GetComponent()) | ||||
| 		} else { | ||||
| 			log.Italic("\nPlease use `odo push` command to create the component with source deployed") | ||||
| 		} | ||||
| 		if log.IsJSON() { | ||||
| 			return co.DevfileJSON() | ||||
| 		} | ||||
| 		return nil | ||||
| 	} | ||||
|   | ||||
| @@ -6,6 +6,9 @@ import ( | ||||
| 	parsercommon "github.com/devfile/library/pkg/devfile/parser/data/v2/common" | ||||
| 	"github.com/openshift/odo/pkg/component" | ||||
| 	"github.com/openshift/odo/pkg/config" | ||||
| 	"github.com/openshift/odo/pkg/envinfo" | ||||
| 	"github.com/openshift/odo/pkg/machineoutput" | ||||
| 	"github.com/openshift/odo/pkg/odo/genericclioptions" | ||||
| ) | ||||
|  | ||||
| func (co *CreateOptions) SetComponentSettings(args []string) error { | ||||
| @@ -68,3 +71,23 @@ func decideAndDownloadStarterProject(devObj parser.DevfileObj, projectPassed str | ||||
|  | ||||
| 	return component.DownloadStarterProject(starterProject, token, contextDir) | ||||
| } | ||||
|  | ||||
| // DevfileJSON creates the full json description of a devfile component is prints it | ||||
| func (co *CreateOptions) DevfileJSON() error { | ||||
| 	client, err := genericclioptions.Client() | ||||
| 	if err == nil { | ||||
| 		co.Client = client | ||||
| 	} | ||||
|  | ||||
| 	envInfo, err := envinfo.NewEnvSpecificInfo(co.componentContext) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	cfd, err := component.NewComponentFullDescriptionFromClientAndLocalConfig(co.Client, co.LocalConfigInfo, envInfo, envInfo.GetName(), envInfo.GetApplication(), co.Project) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	machineoutput.OutputSuccess(cfd.GetComponent()) | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -273,11 +273,11 @@ func (do *DeleteOptions) DevFileRun() (err error) { | ||||
| 		} | ||||
|  | ||||
| 		if do.componentForceDeleteFlag { | ||||
| 			if !util.CheckPathExists(DevfilePath) { | ||||
| 			if !util.CheckPathExists(do.devfilePath) { | ||||
| 				return fmt.Errorf("devfile.yaml does not exist in the current directory") | ||||
| 			} | ||||
| 			if !do.EnvSpecificInfo.IsUserCreatedDevfile() { | ||||
| 				err = util.DeletePath(DevfilePath) | ||||
| 				err = util.DeletePath(do.devfilePath) | ||||
| 				if err != nil { | ||||
| 					return err | ||||
| 				} | ||||
| @@ -289,11 +289,11 @@ func (do *DeleteOptions) DevFileRun() (err error) { | ||||
| 			} | ||||
|  | ||||
| 		} else if ui.Proceed("Are you sure you want to delete devfile.yaml?") { | ||||
| 			if !util.CheckPathExists(DevfilePath) { | ||||
| 			if !util.CheckPathExists(do.devfilePath) { | ||||
| 				return fmt.Errorf("devfile.yaml does not exist in the current directory") | ||||
| 			} | ||||
|  | ||||
| 			err = util.DeletePath(DevfilePath) | ||||
| 			err = util.DeletePath(do.devfilePath) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
|   | ||||
| @@ -92,7 +92,6 @@ func (po *PushOptions) devfilePushInner() (err error) { | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	componentName := po.EnvSpecificInfo.GetName() | ||||
|  | ||||
| 	// Set the source path to either the context or current working directory (if context not set) | ||||
|   | ||||
| @@ -1,116 +0,0 @@ | ||||
| package e2escenarios | ||||
|  | ||||
| import ( | ||||
| 	"path/filepath" | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
| 	"github.com/openshift/odo/tests/helper" | ||||
| ) | ||||
|  | ||||
| var _ = Describe("odo core beta flow", func() { | ||||
| 	var oc helper.OcRunner | ||||
| 	var commonVar helper.CommonVar | ||||
|  | ||||
| 	// This is run before every Spec (It) | ||||
| 	var _ = BeforeEach(func() { | ||||
| 		// initialize oc runner | ||||
| 		oc = helper.NewOcRunner("oc") | ||||
| 		commonVar = helper.CommonBeforeEach() | ||||
| 	}) | ||||
|  | ||||
| 	// Clean up after the test | ||||
| 	// This is run after every Spec (It) | ||||
| 	var _ = AfterEach(func() { | ||||
| 		helper.CommonAfterEach(commonVar) | ||||
| 	}) | ||||
|  | ||||
| 	// abstract main test to the function, to allow running the same test in a different context (slightly different arguments) | ||||
| 	TestBasicCreateConfigPush := func(extraArgs ...string) { | ||||
| 		createSession := helper.CmdShouldPass("odo", append([]string{"component", "create", "--s2i", "java:8", "mycomponent", "--app", "myapp", "--project", commonVar.Project}, extraArgs...)...) | ||||
| 		// output of the commands should point user to running "odo push" | ||||
| 		Expect(createSession).Should(ContainSubstring("odo push")) | ||||
| 		configFile := filepath.Join(commonVar.Context, ".odo", "config.yaml") | ||||
| 		Expect(configFile).To(BeARegularFile()) | ||||
| 		helper.FileShouldContainSubstring(configFile, "Name: mycomponent") | ||||
| 		helper.FileShouldContainSubstring(configFile, "Type: java") | ||||
| 		helper.FileShouldContainSubstring(configFile, "Application: myapp") | ||||
| 		helper.FileShouldContainSubstring(configFile, "SourceType: local") | ||||
| 		// SourcePath should be relative | ||||
| 		//helper.FileShouldContainSubstring(configFile, "SourceLocation: .") | ||||
| 		helper.FileShouldContainSubstring(configFile, "Project: "+commonVar.Project) | ||||
|  | ||||
| 		configSession := helper.CmdShouldPass("odo", append([]string{"config", "set", "--env", "FOO=bar"}, extraArgs...)...) | ||||
| 		// output of the commands should point user to running "odo push" | ||||
| 		// currently failing | ||||
| 		Expect(configSession).Should(ContainSubstring("odo push")) | ||||
| 		helper.FileShouldContainSubstring(configFile, "Name: FOO") | ||||
| 		helper.FileShouldContainSubstring(configFile, "Value: bar") | ||||
|  | ||||
| 		urlCreateSession := helper.CmdShouldPass("odo", append([]string{"url", "create", "--port", "8080"}, extraArgs...)...) | ||||
| 		// output of the commands should point user to running "odo push" | ||||
| 		Eventually(urlCreateSession).Should(ContainSubstring("odo push")) | ||||
| 		helper.FileShouldContainSubstring(configFile, "Url:") | ||||
| 		helper.FileShouldContainSubstring(configFile, "Port: 8080") | ||||
|  | ||||
| 		helper.CmdShouldPass("odo", append([]string{"push"}, extraArgs...)...) | ||||
|  | ||||
| 		dcSession := oc.GetComponentDC("mycomponent", "myapp", commonVar.Project) | ||||
| 		helper.MatchAllInOutput(dcSession, []string{ | ||||
| 			"app.kubernetes.io/instance: mycomponent", | ||||
| 			"app.kubernetes.io/component-source-type: local", | ||||
| 			"app.kubernetes.io/name: java", | ||||
| 			"app.kubernetes.io/part-of: myapp", | ||||
| 			"name: mycomponent-myapp", | ||||
| 		}) | ||||
|  | ||||
| 		// DC should have env variable | ||||
| 		helper.MatchAllInOutput(dcSession, []string{"name: FOO", "value: bar"}) | ||||
|  | ||||
| 		routeSession := oc.GetComponentRoutes("mycomponent", "myapp", commonVar.Project) | ||||
| 		// check that route is pointing gto right port and component | ||||
| 		helper.MatchAllInOutput(routeSession, []string{"targetPort: 8080", "name: mycomponent-myapp"}) | ||||
| 		url := oc.GetFirstURL("mycomponent", "myapp", commonVar.Project) | ||||
| 		helper.HttpWaitFor("http://"+url, "Hello World from Javalin!", 10, 5) | ||||
| 	} | ||||
|  | ||||
| 	Context("when component is in the current directory", func() { | ||||
| 		// we will be testing components that are created from the current directory | ||||
| 		// switch to the clean context dir before each test | ||||
| 		JustBeforeEach(func() { | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("'odo component' should fail if there already is .odo dir", func() { | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", "--project", commonVar.Project) | ||||
| 			helper.CmdShouldFail("odo", "component", "create", "--s2i", "nodejs", "--project", commonVar.Project) | ||||
| 		}) | ||||
|  | ||||
| 		It("'odo config' should fail if there is no .odo dir", func() { | ||||
| 			helper.CmdShouldFail("odo", "config", "set", "memory", "2Gi") | ||||
| 		}) | ||||
|  | ||||
| 		It("create local java component and push code", func() { | ||||
| 			oc.ImportJavaIS(commonVar.Project) | ||||
| 			helper.CopyExample(filepath.Join("source", "openjdk"), commonVar.Context) | ||||
| 			TestBasicCreateConfigPush() | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when --context flag is used", func() { | ||||
| 		It("odo component should fail if there already is .odo dir", func() { | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", "--context", commonVar.Context, "--project", commonVar.Project) | ||||
| 			helper.CmdShouldFail("odo", "component", "create", "--s2i", "nodejs", "--context", commonVar.Context, "--project", commonVar.Project) | ||||
| 		}) | ||||
|  | ||||
| 		It("odo config should fail if there is no .odo dir", func() { | ||||
| 			helper.CmdShouldFail("odo", "config", "set", "memory", "2Gi", "--context", commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("create local java component and push code", func() { | ||||
| 			oc.ImportJavaIS(commonVar.Project) | ||||
| 			helper.CopyExample(filepath.Join("source", "openjdk"), commonVar.Context) | ||||
| 			TestBasicCreateConfigPush("--context", commonVar.Context) | ||||
| 		}) | ||||
| 	}) | ||||
| }) | ||||
| @@ -1,6 +1,7 @@ | ||||
| package e2escenarios | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| @@ -40,21 +41,21 @@ var _ = Describe("odo devfile supported tests", func() { | ||||
| 		helper.CommonAfterEach(commonVar) | ||||
| 	}) | ||||
|  | ||||
| 	createStarterProjAndSetDebug := func(component string) { | ||||
| 	createStarterProjAndSetDebug := func(component, debugLocalPort string) { | ||||
| 		helper.CmdShouldPass("odo", "create", component, "--starter", "--project", commonVar.Project, componentName, "--context", projectDirPath) | ||||
| 		helper.CmdShouldPass("odo", "push", "--context", projectDirPath) | ||||
| 		helper.CmdShouldPass("odo", "push", "--debug", "--context", projectDirPath) | ||||
|  | ||||
| 		stopChannel := make(chan bool) | ||||
| 		go func() { | ||||
| 			helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--local-port", "5858", "--context", projectDirPath) | ||||
| 			helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--local-port", debugLocalPort, "--context", projectDirPath) | ||||
| 		}() | ||||
|  | ||||
| 		// Make sure that the debug information output, outputs correctly. | ||||
| 		// We do *not* check the json output since the debugProcessID will be different each time. | ||||
| 		helper.WaitForCmdOut("odo", []string{"debug", "info", "-o", "json", "--context", projectDirPath}, 1, false, func(output string) bool { | ||||
| 			if strings.Contains(output, `"kind": "OdoDebugInfo"`) && | ||||
| 				strings.Contains(output, `"localPort": 5858`) { | ||||
| 				strings.Contains(output, fmt.Sprintf(`"localPort": %s`, debugLocalPort)) { | ||||
| 				return true | ||||
| 			} | ||||
| 			return false | ||||
| @@ -64,19 +65,19 @@ var _ = Describe("odo devfile supported tests", func() { | ||||
|  | ||||
| 	Context("odo debug support for devfile components", func() { | ||||
| 		It("Verify output debug information for nodeJS debug works", func() { | ||||
| 			createStarterProjAndSetDebug("nodejs") | ||||
| 			createStarterProjAndSetDebug("nodejs", "5859") | ||||
| 		}) | ||||
| 		It("Verify output debug information for java-springboot works", func() { | ||||
| 			createStarterProjAndSetDebug("java-springboot") | ||||
| 			createStarterProjAndSetDebug("java-springboot", "5860") | ||||
| 		}) | ||||
| 		It("Verify output debug information for java-openliberty debug works", func() { | ||||
| 			createStarterProjAndSetDebug("java-openliberty") | ||||
| 			createStarterProjAndSetDebug("java-openliberty", "5861") | ||||
| 		}) | ||||
| 		It("Verify output debug information for java-quarkus debug works", func() { | ||||
| 			createStarterProjAndSetDebug("java-quarkus") | ||||
| 			createStarterProjAndSetDebug("java-quarkus", "5862") | ||||
| 		}) | ||||
| 		It("Verify output debug information for java-maven debug works", func() { | ||||
| 			createStarterProjAndSetDebug("java-maven") | ||||
| 			createStarterProjAndSetDebug("java-maven", "5863") | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import ( | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
| 	"github.com/openshift/odo/pkg/devfile/convert" | ||||
| 	"github.com/openshift/odo/pkg/util" | ||||
| 	"github.com/openshift/odo/tests/helper" | ||||
| 	"github.com/openshift/odo/tests/integration/devfile/utils" | ||||
| @@ -36,21 +37,18 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 	// Also verify the flow of odo commands with respect to supported images only. | ||||
| 	verifySupportedImage := func(image, srcType, cmpType, project, appName, context string) { | ||||
|  | ||||
| 		cmpName := srcType + "-app" | ||||
| 		// create the component | ||||
| 		helper.CopyExample(filepath.Join("source", srcType), commonVar.Context) | ||||
| 		helper.CmdShouldPass("odo", "create", "--s2i", cmpType, srcType+"-app", "--project", project, "--context", context, "--app", appName) | ||||
|  | ||||
| 		helper.CmdShouldPass("odo", "config", "set", "minmemory", "400Mi", "--context", context) | ||||
| 		helper.CmdShouldPass("odo", "config", "set", "maxmemory", "700Mi", "--context", context) | ||||
| 		helper.CmdShouldPass("odo", "create", "--s2i", cmpType, cmpName, "--project", project, "--context", context, "--app", appName) | ||||
|  | ||||
| 		// push component and validate | ||||
| 		helper.CmdShouldPass("odo", "push", "--context", context) | ||||
| 		cmpList := helper.CmdShouldPass("odo", "list", "--context", context) | ||||
| 		Expect(cmpList).To(ContainSubstring(srcType + "-app")) | ||||
|  | ||||
| 		// create a url | ||||
| 		helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", context) | ||||
| 		// push again just to confirm it works | ||||
| 		helper.CmdShouldPass("odo", "push", "--context", context) | ||||
| 		// get the url | ||||
| 		routeURL := helper.DetermineRouteURL(context) | ||||
|  | ||||
| 		// Ping said URL | ||||
| @@ -68,13 +66,15 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 		} | ||||
|  | ||||
| 		watchFlag := "" | ||||
| 		odoV1Watch := utils.OdoV1Watch{ | ||||
| 			SrcType:  srcType, | ||||
| 			RouteURL: routeURL, | ||||
| 			AppName:  appName, | ||||
| 		} | ||||
|  | ||||
| 		// odo watch and validate | ||||
| 		utils.OdoWatch(odoV1Watch, utils.OdoV2Watch{}, project, context, watchFlag, oc, "kube") | ||||
| 		utils.OdoWatch(utils.OdoV1Watch{}, | ||||
| 			utils.OdoV2Watch{ | ||||
| 				CmpName:            cmpName, | ||||
| 				StringsToBeMatched: []string{"Executing s2i-assemble command", "Executing s2i-run command"}, | ||||
| 				FolderToCheck:      convert.DefaultSourceMappingS2i, | ||||
| 				SrcType:            srcType, | ||||
| 			}, project, context, watchFlag, oc, "kube") | ||||
|  | ||||
| 		// delete the component and validate | ||||
| 		helper.CmdShouldPass("odo", "app", "delete", "app", "--project", project, "-f") | ||||
| @@ -93,6 +93,18 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "rhoar-nodejs/nodejs-10:latest", "nodejs:latest", commonVar.Project) | ||||
| 			verifySupportedImage("rhoar-nodejs/nodejs-10:latest", "nodejs", "nodejs:latest", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo supported images deployment", func() { | ||||
| 		It("Should be able to verify the openjdk18-openshift image", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "redhat-openjdk-18/openjdk18-openshift:latest", "java:8", commonVar.Project) | ||||
| 			verifySupportedImage("redhat-openjdk-18/openjdk18-openshift:latest", "openjdk", "java:8", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-10-rhel7 image", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "rhscl/nodejs-10-rhel7:latest", "nodejs:latest", commonVar.Project) | ||||
| 			verifySupportedImage("rhscl/nodejs-10-rhel7:latest", "nodejs", "nodejs:latest", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-10-centos7 image", func() { | ||||
| 			oc.ImportImageFromRegistry("quay.io", "centos7/nodejs-10-centos7:latest", "nodejs:latest", commonVar.Project) | ||||
| @@ -105,23 +117,6 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo supported images deployment", func() { | ||||
| 		It("Should be able to verify the openjdk18-openshift image", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "redhat-openjdk-18/openjdk18-openshift:latest", "java:8", commonVar.Project) | ||||
| 			verifySupportedImage("redhat-openjdk-18/openjdk18-openshift:latest", "openjdk", "java:8", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the openjdk-11-rhel7 image", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "openjdk/openjdk-11-rhel7:latest", "java:8", commonVar.Project) | ||||
| 			verifySupportedImage("openjdk/openjdk-11-rhel7:latest", "openjdk", "java:8", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-10-rhel7 image", func() { | ||||
| 			oc.ImportImageFromRegistry("registry.access.redhat.com", "rhscl/nodejs-10-rhel7:latest", "nodejs:latest", commonVar.Project) | ||||
| 			verifySupportedImage("rhscl/nodejs-10-rhel7:latest", "nodejs", "nodejs:latest", commonVar.Project, appName, commonVar.Context) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo supported private registry images deployment", func() { | ||||
| 		JustBeforeEach(func() { | ||||
| 			// Issue for configuring login secret for travis CI https://github.com/openshift/odo/issues/3640 | ||||
| @@ -130,10 +125,10 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 			} | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the openjdk-11-rhel8 image", func() { | ||||
| 			redhatOpenjdk12RHEL8Project := util.GetEnvWithDefault("REDHAT_OPENJDK11_RHEL8_PROJECT", "openjdk-11-rhel8") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "openjdk/openjdk-11-rhel8:latest", "java:8", redhatOpenjdk12RHEL8Project) | ||||
| 			verifySupportedImage("openjdk/openjdk-11-rhel8:latest", "openjdk", "java:8", redhatOpenjdk12RHEL8Project, appName, commonVar.Context) | ||||
| 		It("Should be able to verify the nodejs-12 image", func() { | ||||
| 			redhatNodejs12UBI8Project := util.GetEnvWithDefault("REDHAT_NODEJS12_UBI8_PROJECT", "nodejs-12") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "ubi8/nodejs-12:latest", "nodejs:latest", redhatNodejs12UBI8Project) | ||||
| 			verifySupportedImage("ubi8/nodejs-12:latest", "nodejs", "nodejs:latest", redhatNodejs12UBI8Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-12-rhel7 image", func() { | ||||
| @@ -142,18 +137,18 @@ var _ = Describe("odo supported images e2e tests", func() { | ||||
| 			verifySupportedImage("rhscl/nodejs-12-rhel7:latest", "nodejs", "nodejs:latest", redhatNodejs12RHEL7Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-12 image", func() { | ||||
| 			redhatNodejs12UBI8Project := util.GetEnvWithDefault("REDHAT_NODEJS12_UBI8_PROJECT", "nodejs-12") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "ubi8/nodejs-12:latest", "nodejs:latest", redhatNodejs12UBI8Project) | ||||
| 			verifySupportedImage("ubi8/nodejs-12:latest", "nodejs", "nodejs:latest", redhatNodejs12UBI8Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the openjdk-11 image", func() { | ||||
| 			redhatOpenjdk11UBI8Project := util.GetEnvWithDefault("REDHAT_OPENJDK11_UBI8_PROJECT", "openjdk-11") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "ubi8/openjdk-11:latest", "java:8", redhatOpenjdk11UBI8Project) | ||||
| 			verifySupportedImage("ubi8/openjdk-11:latest", "openjdk", "java:8", redhatOpenjdk11UBI8Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the openjdk-11-rhel8 image", func() { | ||||
| 			redhatOpenjdk12RHEL8Project := util.GetEnvWithDefault("REDHAT_OPENJDK11_RHEL8_PROJECT", "openjdk-11-rhel8") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "openjdk/openjdk-11-rhel8:latest", "java:8", redhatOpenjdk12RHEL8Project) | ||||
| 			verifySupportedImage("openjdk/openjdk-11-rhel8:latest", "openjdk", "java:8", redhatOpenjdk12RHEL8Project, appName, commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to verify the nodejs-14 image", func() { | ||||
| 			redhatNodeJS14UBI8Project := util.GetEnvWithDefault("REDHAT_NODEJS14_UBI8_PROJECT", "nodejs-14") | ||||
| 			oc.ImportImageFromRegistry("registry.redhat.io", "ubi8/nodejs-14:latest", "nodejs:latest", redhatNodeJS14UBI8Project) | ||||
|   | ||||
| @@ -33,50 +33,51 @@ var _ = Describe("odo source e2e tests", func() { | ||||
| 			} | ||||
| 		}) | ||||
|  | ||||
| 		It("Should be able to deploy a wildfly source application", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "wildfly"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "wildfly", "wildfly-app", "--project", | ||||
| 				commonVar.Project, "--context", commonVar.Context) | ||||
| 		// issue https://github.com/openshift/odo/issues/4623 | ||||
| 		// It("Should be able to deploy a wildfly source application", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "wildfly"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", "create", "--s2i", "wildfly", "wildfly-app", "--project", | ||||
| 		// 		commonVar.Project, "--context", commonVar.Context) | ||||
|  | ||||
| 			// Push changes | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			cmpList := helper.CmdShouldPass("odo", "list", "--context", commonVar.Context) | ||||
| 			Expect(cmpList).To(ContainSubstring("wildfly-app")) | ||||
| 		// 	// Push changes | ||||
| 		// 	helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		// 	cmpList := helper.CmdShouldPass("odo", "list", "--context", commonVar.Context) | ||||
| 		// 	Expect(cmpList).To(ContainSubstring("wildfly-app")) | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
| 		// 	// Create a URL | ||||
| 		// 	helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		// 	routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
| 			// Ping said URL | ||||
| 			helper.HttpWaitFor(routeURL, "Insult", 30, 1) | ||||
| 		// 	// Ping said URL | ||||
| 		// 	helper.HttpWaitFor(routeURL, "Insult", 30, 1) | ||||
|  | ||||
| 			// Delete the component | ||||
| 			helper.CmdShouldPass("odo", "app", "delete", "app", "--project", commonVar.Project, "-f") | ||||
| 		}) | ||||
| 		// 	// Delete the component | ||||
| 		// 	helper.CmdShouldPass("odo", "app", "delete", "app", "--project", commonVar.Project, "-f") | ||||
| 		// }) | ||||
|  | ||||
| 		It("Should be able to deploy a dotnet source application", func() { | ||||
| 			oc.ImportDotnet20IS(commonVar.Project) | ||||
| 			helper.CopyExample(filepath.Join("source", "dotnet"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "dotnet:2.0", "dotnet-app", "--project", | ||||
| 				commonVar.Project, "--context", commonVar.Context) | ||||
| 		// issue https://github.com/openshift/odo/issues/4623 | ||||
| 		// It("Should be able to deploy a dotnet source application", func() { | ||||
| 		// 	oc.ImportDotnet20IS(commonVar.Project) | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "dotnet"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", "create", "--s2i", "dotnet:2.0", "dotnet-app", "--project", | ||||
| 		// 		commonVar.Project, "--context", commonVar.Context) | ||||
|  | ||||
| 			// Push changes | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			cmpList := helper.CmdShouldPass("odo", "list", "--context", commonVar.Context) | ||||
| 			Expect(cmpList).To(ContainSubstring("dotnet-app")) | ||||
| 		// 	// Push changes | ||||
| 		// 	helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		// 	cmpList := helper.CmdShouldPass("odo", "list", "--context", commonVar.Context) | ||||
| 		// 	Expect(cmpList).To(ContainSubstring("dotnet-app")) | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
| 		// 	// Create a URL | ||||
| 		// 	helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		// 	routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
| 			// Ping said URL | ||||
| 			helper.HttpWaitFor(routeURL, "dotnet", 30, 1) | ||||
| 		// 	// Ping said URL | ||||
| 		// 	helper.HttpWaitFor(routeURL, "dotnet", 30, 1) | ||||
|  | ||||
| 			// Delete the component | ||||
| 			helper.CmdShouldPass("odo", "app", "delete", "app", "--project", commonVar.Project, "-f") | ||||
| 		}) | ||||
| 		// 	// Delete the component | ||||
| 		// 	helper.CmdShouldPass("odo", "app", "delete", "app", "--project", commonVar.Project, "-f") | ||||
| 		// }) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo component creation", func() { | ||||
| @@ -93,7 +94,6 @@ var _ = Describe("odo source e2e tests", func() { | ||||
| 			Expect(cmpList).To(ContainSubstring("openjdk-app")) | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
| @@ -115,7 +115,6 @@ var _ = Describe("odo source e2e tests", func() { | ||||
| 			Expect(cmpList).To(ContainSubstring("nodejs-app")) | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
| @@ -146,7 +145,6 @@ var _ = Describe("odo source e2e tests", func() { | ||||
| 			Expect(cmpList).To(ContainSubstring("python-app")) | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
|   | ||||
| @@ -14,6 +14,7 @@ type CliRunner interface { | ||||
| 	WaitAndCheckForExistence(resourceType, namespace string, timeoutMinutes int) bool | ||||
| 	GetServices(namespace string) string | ||||
| 	CreateRandNamespaceProject() string | ||||
| 	CreateRandNamespaceProjectOfLength(i int) string | ||||
| 	DeleteNamespaceProject(projectName string) | ||||
| 	DeletePod(podName string, projectName string) | ||||
| 	GetEnvsDevFileDeployment(componentName string, projectName string) map[string]string | ||||
|   | ||||
| @@ -9,11 +9,13 @@ import ( | ||||
| 	"strings" | ||||
|  | ||||
| 	. "github.com/onsi/gomega" | ||||
| 	"github.com/openshift/odo/pkg/envinfo" | ||||
| 	"gopkg.in/yaml.v2" | ||||
| ) | ||||
|  | ||||
| const configFileDirectory = ".odo" | ||||
| const configFileName = "config.yaml" | ||||
| const envInfoFile = "env.yaml" | ||||
|  | ||||
| type config struct { | ||||
| 	ComponentSettings struct { | ||||
| @@ -144,3 +146,11 @@ func ValidateLocalCmpExist(context string, args ...string) { | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
| func LocalEnvInfo(context string) *envinfo.EnvSpecificInfo { | ||||
| 	info, err := envinfo.NewEnvSpecificInfo(filepath.Join(context, configFileDirectory, envInfoFile)) | ||||
| 	if err != nil { | ||||
| 		Expect(err).To(Equal(nil)) | ||||
| 	} | ||||
| 	return info | ||||
| } | ||||
|   | ||||
| @@ -141,6 +141,11 @@ func (kubectl KubectlRunner) GetServices(namespace string) string { | ||||
| // CreateRandNamespaceProject create new project | ||||
| func (kubectl KubectlRunner) CreateRandNamespaceProject() string { | ||||
| 	projectName := SetProjectName() | ||||
| 	kubectl.createRandNamespaceProject(projectName) | ||||
| 	return projectName | ||||
| } | ||||
|  | ||||
| func (kubectl KubectlRunner) createRandNamespaceProject(projectName string) string { | ||||
| 	fmt.Fprintf(GinkgoWriter, "Creating a new project: %s\n", projectName) | ||||
| 	CmdShouldPass("kubectl", "create", "namespace", projectName) | ||||
| 	CmdShouldPass("kubectl", "config", "set-context", "--current", "--namespace", projectName) | ||||
| @@ -149,6 +154,13 @@ func (kubectl KubectlRunner) CreateRandNamespaceProject() string { | ||||
| 	return projectName | ||||
| } | ||||
|  | ||||
| // CreateRandNamespaceProjectOfLength create new project with i as the length of the name | ||||
| func (kubectl KubectlRunner) CreateRandNamespaceProjectOfLength(i int) string { | ||||
| 	projectName := RandString(i) | ||||
| 	kubectl.createRandNamespaceProject(projectName) | ||||
| 	return projectName | ||||
| } | ||||
|  | ||||
| // DeleteNamespaceProject deletes a specified project in kubernetes cluster | ||||
| func (kubectl KubectlRunner) DeleteNamespaceProject(projectName string) { | ||||
| 	fmt.Fprintf(GinkgoWriter, "Deleting project: %s\n", projectName) | ||||
|   | ||||
| @@ -71,6 +71,29 @@ func (oc OcRunner) GetFirstURL(component string, app string, project string) str | ||||
| 	return "" | ||||
| } | ||||
|  | ||||
| //StatFileInPodContainer returns stat result of filepath in a container of a pod of given component, in a given app, in a given project. | ||||
| //It also strips access time information as it vaires accross file systems/kernel configs, and we are not interested | ||||
| //in it anyway | ||||
| func StatFileInPodContainer(runner CliRunner, cmpName, containerName, appName, project, filepath string) string { | ||||
| 	podName := runner.GetRunningPodNameByComponent(cmpName, project) | ||||
| 	var result string | ||||
| 	runner.CheckCmdOpInRemoteDevfilePod( | ||||
| 		podName, | ||||
| 		containerName, | ||||
| 		project, | ||||
| 		[]string{"stat", filepath}, | ||||
| 		func(cmdOp string, err error) bool { | ||||
| 			//strip out access info as | ||||
| 			// 1. Touching a file (such as running it in a script) modifies access times. This gives wrong value on mounts without noatime | ||||
| 			// 2. We are not interested in Access info anyway. | ||||
| 			re := regexp.MustCompile("(?m)[\r\n]+^.*Access.*$") | ||||
| 			result = re.ReplaceAllString(cmdOp, "") | ||||
| 			return true | ||||
| 		}, | ||||
| 	) | ||||
| 	return result | ||||
| } | ||||
|  | ||||
| // GetComponentRoutes run command to get the Routes in yaml format for given component | ||||
| func (oc OcRunner) GetComponentRoutes(component string, app string, project string) string { | ||||
| 	session := CmdRunner(oc.path, "get", "route", | ||||
| @@ -565,6 +588,18 @@ func (oc OcRunner) VerifyResourceDeleted(resourceType, resourceName, namespace s | ||||
| // CreateRandNamespaceProject create new project | ||||
| func (oc OcRunner) CreateRandNamespaceProject() string { | ||||
| 	projectName := SetProjectName() | ||||
| 	oc.createRandNamespaceProject(projectName) | ||||
| 	return projectName | ||||
| } | ||||
|  | ||||
| // CreateRandNamespaceProject creates a new project with name of length i | ||||
| func (oc OcRunner) CreateRandNamespaceProjectOfLength(i int) string { | ||||
| 	projectName := RandString(i) | ||||
| 	oc.createRandNamespaceProject(projectName) | ||||
| 	return projectName | ||||
| } | ||||
|  | ||||
| func (oc OcRunner) createRandNamespaceProject(projectName string) string { | ||||
| 	fmt.Fprintf(GinkgoWriter, "Creating a new project: %s\n", projectName) | ||||
| 	session := CmdShouldPass("odo", "project", "create", projectName, "-w", "-v4") | ||||
| 	Expect(session).To(ContainSubstring("New project created")) | ||||
|   | ||||
| @@ -36,6 +36,27 @@ func GetConfigValueWithContext(key string, context string) string { | ||||
| 	return "" | ||||
| } | ||||
|  | ||||
| // GetLocalEnvInfoValueWithContext returns an envInfo value of given key and contextdir or | ||||
| // returns an empty string if value is not set | ||||
| func GetLocalEnvInfoValueWithContext(key string, context string) string { | ||||
| 	var stdOut string | ||||
| 	if context != "" { | ||||
| 		stdOut = CmdShouldPass("odo", "env", "view", "--context", context) | ||||
| 	} else { | ||||
| 		stdOut = CmdShouldPass("odo", "env", "view") | ||||
| 	} | ||||
| 	re := regexp.MustCompile(key + `.+`) | ||||
| 	odoConfigKeyValue := re.FindString(stdOut) | ||||
| 	if odoConfigKeyValue == "" { | ||||
| 		return fmt.Sprintf("%s not found", key) | ||||
| 	} | ||||
| 	trimKeyValue := strings.TrimSpace(odoConfigKeyValue) | ||||
| 	if strings.Compare(key, trimKeyValue) != 0 { | ||||
| 		return strings.TrimSpace(strings.SplitN(trimKeyValue, " ", 2)[1]) | ||||
| 	} | ||||
| 	return "" | ||||
| } | ||||
|  | ||||
| // GetPreferenceValue a global config value of given key or | ||||
| // returns an empty string if value is not set | ||||
| func GetPreferenceValue(key string) string { | ||||
| @@ -56,10 +77,19 @@ func GetPreferenceValue(key string) string { | ||||
| // where the current component exposes it's service this URL can | ||||
| // then be used in order to interact with the deployed service running in Openshift | ||||
| func DetermineRouteURL(context string) string { | ||||
| 	return routeURL(context) | ||||
| 	urls := DetermineRouteURLs(context) | ||||
| 	// only return the 1st element if it exists | ||||
| 	if len(urls) > 0 { | ||||
| 		return urls[0] | ||||
| 	} | ||||
|  | ||||
| 	return "" | ||||
| } | ||||
|  | ||||
| func routeURL(context string) string { | ||||
| // DetermineRouteURLs takes context path as argument and returns the URLs | ||||
| // where the current component exposes it's service, these URLs can | ||||
| // then be used in order to interact with the deployed service running in Openshift | ||||
| func DetermineRouteURLs(context string) []string { | ||||
| 	var stdOut string | ||||
| 	if context != "" { | ||||
| 		stdOut = CmdShouldPass("odo", "url", "list", "--context", context) | ||||
| @@ -67,8 +97,11 @@ func routeURL(context string) string { | ||||
| 		stdOut = CmdShouldPass("odo", "url", "list") | ||||
| 	} | ||||
| 	reURL := regexp.MustCompile(`\s+http(s?)://.\S+`) | ||||
| 	odoURL := reURL.FindString(stdOut) | ||||
| 	return strings.TrimSpace(odoURL) | ||||
| 	odoURLs := reURL.FindAllString(stdOut, -1) | ||||
| 	for i := range odoURLs { | ||||
| 		odoURLs[i] = strings.TrimSpace(odoURLs[i]) | ||||
| 	} | ||||
| 	return odoURLs | ||||
| } | ||||
|  | ||||
| // CreateRandProject create new project with random name (10 letters) | ||||
|   | ||||
| @@ -63,7 +63,7 @@ var _ = Describe("odo app command tests", func() { | ||||
| 			appListOutput := helper.CmdShouldPass("odo", "app", "list", "--project", commonVar.Project) | ||||
| 			Expect(appListOutput).To(ContainSubstring(appName)) | ||||
| 			actualCompListJSON := helper.CmdShouldPass("odo", "list", "-o", "json", "--project", commonVar.Project) | ||||
| 			valuesL := gjson.GetMany(actualCompListJSON, "kind", "s2iComponents.0.metadata.name", "s2iComponents.0.metadata.namespace") | ||||
| 			valuesL := gjson.GetMany(actualCompListJSON, "kind", "devfileComponents.0.metadata.name", "devfileComponents.0.metadata.namespace") | ||||
| 			expectedL := []string{"List", "nodejs", commonVar.Project} | ||||
| 			Expect(helper.GjsonMatcher(valuesL, expectedL)).To(Equal(true)) | ||||
| 			helper.CmdShouldPass("odo", "app", "describe", "--project", commonVar.Project) | ||||
|   | ||||
| @@ -1,15 +1,9 @@ | ||||
| package integration | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"runtime" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/openshift/odo/pkg/util" | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
|  | ||||
| @@ -18,51 +12,31 @@ import ( | ||||
|  | ||||
| var _ = Describe("odo debug command tests", func() { | ||||
| 	var commonVar helper.CommonVar | ||||
| 	var projName string | ||||
|  | ||||
| 	// This is run before every Spec (It) | ||||
| 	var _ = BeforeEach(func() { | ||||
| 		commonVar = helper.CommonBeforeEach() | ||||
| 		projName = helper.GetCliRunner().CreateRandNamespaceProjectOfLength(5) | ||||
|  | ||||
| 	}) | ||||
|  | ||||
| 	// Clean up after the test | ||||
| 	// This is run after every Spec (It) | ||||
| 	var _ = AfterEach(func() { | ||||
| 		helper.CommonAfterEach(commonVar) | ||||
| 		helper.GetCliRunner().DeleteNamespaceProject(projName) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo debug on a nodejs:latest component", func() { | ||||
| 		It("check that machine output debug information works", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			httpPort, err := util.HTTPGetFreePort() | ||||
| 			Expect(err).NotTo(HaveOccurred()) | ||||
| 			freePort := strconv.Itoa(httpPort) | ||||
|  | ||||
| 			stopChannel := make(chan bool) | ||||
| 			go func() { | ||||
| 				helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--local-port", freePort, "--context", commonVar.Context) | ||||
| 			}() | ||||
|  | ||||
| 			// Make sure that the debug information output, outputs correctly. | ||||
| 			// We do *not* check the json output since the debugProcessID will be different each time. | ||||
| 			helper.WaitForCmdOut("odo", []string{"debug", "info", "--context", commonVar.Context, "-o", "json"}, 1, false, func(output string) bool { | ||||
| 				if strings.Contains(output, `"kind": "OdoDebugInfo"`) && | ||||
| 					strings.Contains(output, `"localPort": `+freePort) { | ||||
| 					return true | ||||
| 				} | ||||
| 				return false | ||||
| 			}) | ||||
|  | ||||
| 			stopChannel <- true | ||||
| 		}) | ||||
|  | ||||
| 		It("should expect a ws connection when tried to connect on different debug port locally and remotely", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--force", "DebugPort", "9292", "--context", commonVar.Context) | ||||
| 			dbgPort := helper.GetConfigValueWithContext("DebugPort", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", "node", "--project", projName, "--context", commonVar.Context) | ||||
| 			// need to set this twice because of https://github.com/openshift/odo/issues/4615 | ||||
| 			helper.CmdShouldPass("odo", "env", "set", "--force", "DebugPort", "9292", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--env", "DEBUG_PORT=9292", "--context", commonVar.Context) | ||||
| 			dbgPort := helper.GetLocalEnvInfoValueWithContext("DebugPort", commonVar.Context) | ||||
| 			Expect(dbgPort).To(Equal("9292")) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| @@ -77,85 +51,6 @@ var _ = Describe("odo debug command tests", func() { | ||||
| 			stopChannel <- true | ||||
| 		}) | ||||
|  | ||||
| 		It("should expect a ws connection when tried to connect on default debug port locally", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			stopChannel := make(chan bool) | ||||
| 			go func() { | ||||
| 				helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--context", commonVar.Context) | ||||
| 			}() | ||||
|  | ||||
| 			// 400 response expected because the endpoint expects a websocket request and we are doing a HTTP GET | ||||
| 			// We are just using this to validate if nodejs agent is listening on the other side | ||||
| 			helper.HttpWaitForWithStatus("http://localhost:5858", "WebSockets request was expected", 12, 5, 400) | ||||
| 			stopChannel <- true | ||||
| 		}) | ||||
|  | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo debug info should work on a odo component", func() { | ||||
| 		It("should start a debug session and run debug info on a running debug session", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "nodejs-cmp-"+commonVar.Project, "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			httpPort, err := util.HTTPGetFreePort() | ||||
| 			Expect(err).NotTo(HaveOccurred()) | ||||
| 			freePort := strconv.Itoa(httpPort) | ||||
|  | ||||
| 			stopChannel := make(chan bool) | ||||
| 			go func() { | ||||
| 				helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--local-port", freePort, "--context", commonVar.Context) | ||||
| 			}() | ||||
|  | ||||
| 			// 400 response expected because the endpoint expects a websocket request and we are doing a HTTP GET | ||||
| 			// We are just using this to validate if nodejs agent is listening on the other side | ||||
| 			helper.HttpWaitForWithStatus("http://localhost:"+freePort, "WebSockets request was expected", 12, 5, 400) | ||||
| 			runningString := helper.CmdShouldPass("odo", "debug", "info", "--context", commonVar.Context) | ||||
| 			Expect(runningString).To(ContainSubstring(freePort)) | ||||
| 			Expect(helper.ListFilesInDir(os.TempDir())).To(ContainElement(commonVar.Project + "-app" + "-nodejs-cmp-" + commonVar.Project + "-odo-debug.json")) | ||||
| 			stopChannel <- true | ||||
| 		}) | ||||
|  | ||||
| 		It("should start a debug session and run debug info on a closed debug session", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "nodejs-cmp-"+commonVar.Project, "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			httpPort, err := util.HTTPGetFreePort() | ||||
| 			Expect(err).NotTo(HaveOccurred()) | ||||
| 			freePort := strconv.Itoa(httpPort) | ||||
|  | ||||
| 			stopChannel := make(chan bool) | ||||
| 			go func() { | ||||
| 				helper.CmdShouldRunAndTerminate(60*time.Second, stopChannel, "odo", "debug", "port-forward", "--local-port", freePort, "--context", commonVar.Context) | ||||
| 			}() | ||||
|  | ||||
| 			// 400 response expected because the endpoint expects a websocket request and we are doing a HTTP GET | ||||
| 			// We are just using this to validate if nodejs agent is listening on the other side | ||||
| 			helper.HttpWaitForWithStatus("http://localhost:"+freePort, "WebSockets request was expected", 12, 5, 400) | ||||
| 			runningString := helper.CmdShouldPass("odo", "debug", "info", "--context", commonVar.Context) | ||||
| 			Expect(runningString).To(ContainSubstring(freePort)) | ||||
| 			stopChannel <- true | ||||
| 			failString := helper.CmdShouldFail("odo", "debug", "info", "--context", commonVar.Context) | ||||
| 			Expect(failString).To(ContainSubstring("not running")) | ||||
|  | ||||
| 			// according to https://golang.org/pkg/os/#Signal On Windows, sending os.Interrupt to a process with os.Process.Signal is not implemented | ||||
| 			// discussion on the go repo https://github.com/golang/go/issues/6720 | ||||
| 			// session.Interrupt() will not work as it internally uses syscall.SIGINT | ||||
| 			// thus debug port-forward won't stop running | ||||
| 			// the solution is to use syscall.SIGKILL for windows but this will kill the process immediately | ||||
| 			// and the cleaning and closing tasks for debug port-forward won't run and the debug info file won't be cleared | ||||
| 			// thus we skip this last check | ||||
| 			// CTRL_C_EVENTS from the terminal works fine https://github.com/golang/go/issues/6720#issuecomment-66087737 | ||||
| 			// here's a hack to generate the event https://golang.org/cl/29290044 | ||||
| 			// but the solution is unacceptable https://github.com/golang/go/issues/6720#issuecomment-66087749 | ||||
| 			if runtime.GOOS != "windows" { | ||||
| 				Expect(helper.ListFilesInDir(os.TempDir())).To(Not(ContainElement(commonVar.Project + "-app" + "-nodejs-cmp-" + commonVar.Project + "-odo-debug.json"))) | ||||
| 			} | ||||
|  | ||||
| 		}) | ||||
| 	}) | ||||
| }) | ||||
|   | ||||
| @@ -15,12 +15,10 @@ const promtMessageSubString = "Help odo improve by allowing it to collect usage | ||||
| var _ = Describe("odo preference and config command tests", func() { | ||||
| 	// TODO: A neater way to provide odo path. Currently we assume \ | ||||
| 	// odo and oc in $PATH already. | ||||
| 	var oc helper.OcRunner | ||||
| 	var commonVar helper.CommonVar | ||||
|  | ||||
| 	// This is run before every Spec (It) | ||||
| 	var _ = BeforeEach(func() { | ||||
| 		oc = helper.NewOcRunner("oc") | ||||
| 		commonVar = helper.CommonBeforeEach() | ||||
| 	}) | ||||
|  | ||||
| @@ -185,7 +183,7 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
| 					paramValue: "https://github.com/sclorg/nodejs-ex", | ||||
| 				}, | ||||
| 			} | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--git", "https://github.com/sclorg/nodejs-ex") | ||||
| 			for _, testCase := range cases { | ||||
| 				helper.CmdShouldPass("odo", "config", "set", testCase.paramName, testCase.paramValue, "-f") | ||||
| 				setValue := helper.GetConfigValue(testCase.paramName) | ||||
| @@ -253,7 +251,7 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
| 					paramValue: "https://github.com/sclorg/nodejs-ex", | ||||
| 				}, | ||||
| 			} | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context, "--git", "https://github.com/sclorg/nodejs-ex.git") | ||||
| 			for _, testCase := range cases { | ||||
|  | ||||
| 				helper.CmdShouldPass("odo", "config", "set", "-f", "--context", commonVar.Context, testCase.paramName, testCase.paramValue) | ||||
| @@ -267,7 +265,7 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
|  | ||||
| 	Context("when creating odo local config with env variables", func() { | ||||
| 		It("should set and unset env variables", func() { | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "--git", "https://github.com/openshift/nodejs-ex", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--env", "PORT=4000", "--env", "PORT=1234", "--context", commonVar.Context) | ||||
| 			configPort := helper.GetConfigValueWithContext("PORT", commonVar.Context) | ||||
| 			Expect(configPort).To(ContainSubstring("1234")) | ||||
| @@ -280,7 +278,7 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
| 			helper.DontMatchAllInOutput(configValue, []string{"PORT", "SECRET_KEY"}) | ||||
| 		}) | ||||
| 		It("should check for existence of environment variable in config before unsetting it", func() { | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--git", "https://github.com/openshift/nodejs-ex", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--env", "PORT=4000", "--env", "PORT=1234", "--context", commonVar.Context) | ||||
|  | ||||
| 			// unset a valid env var | ||||
| @@ -294,7 +292,7 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
|  | ||||
| 	Context("when viewing local config without logging into the OpenShift cluster", func() { | ||||
| 		It("should list config successfully", func() { | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "--git", "https://github.com/openshift/nodejs-ex", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--env", "hello=world", "--context", commonVar.Context) | ||||
| 			kubeconfigOld := os.Getenv("KUBECONFIG") | ||||
| 			os.Setenv("KUBECONFIG", "/no/such/path") | ||||
| @@ -315,29 +313,30 @@ var _ = Describe("odo preference and config command tests", func() { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when using --now with config command", func() { | ||||
| 		It("should successfully set and unset variables", func() { | ||||
| 			//set env var | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--now", "--env", "hello=world", "--context", commonVar.Context) | ||||
| 			//*Check config | ||||
| 			configValue1 := helper.CmdShouldPass("odo", "config", "view", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(configValue1, []string{"hello", "world"}) | ||||
| 			//*Check dc | ||||
| 			envs := oc.GetEnvs("nodejs", "app", commonVar.Project) | ||||
| 			val, ok := envs["hello"] | ||||
| 			Expect(ok).To(BeTrue()) | ||||
| 			Expect(val).To(ContainSubstring("world")) | ||||
| 			// unset a valid env var | ||||
| 			helper.CmdShouldPass("odo", "config", "unset", "--now", "--env", "hello", "--context", commonVar.Context) | ||||
| 			configValue2 := helper.CmdShouldPass("odo", "config", "view", "--context", commonVar.Context) | ||||
| 			helper.DontMatchAllInOutput(configValue2, []string{"hello", "world"}) | ||||
| 			envs = oc.GetEnvs("nodejs", "app", commonVar.Project) | ||||
| 			_, ok = envs["hello"] | ||||
| 			Expect(ok).To(BeFalse()) | ||||
| 		}) | ||||
| 	}) | ||||
| 	// issue https://github.com/openshift/odo/issues/4594 | ||||
| 	// Context("when using --now with config command", func() { | ||||
| 	// 	It("should successfully set and unset variables", func() { | ||||
| 	// 		//set env var | ||||
| 	// 		helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 	// 		helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 	// 		helper.CmdShouldPass("odo", "config", "set", "--now", "--env", "hello=world", "--context", commonVar.Context) | ||||
| 	// 		//*Check config | ||||
| 	// 		configValue1 := helper.CmdShouldPass("odo", "config", "view", "--context", commonVar.Context) | ||||
| 	// 		helper.MatchAllInOutput(configValue1, []string{"hello", "world"}) | ||||
| 	// 		//*Check dc | ||||
| 	// 		envs := oc.GetEnvsDevFileDeployment("nodejs", commonVar.Project) | ||||
| 	// 		val, ok := envs["hello"] | ||||
| 	// 		Expect(ok).To(BeTrue()) | ||||
| 	// 		Expect(val).To(ContainSubstring("world")) | ||||
| 	// 		// unset a valid env var | ||||
| 	// 		helper.CmdShouldPass("odo", "config", "unset", "--now", "--env", "hello", "--context", commonVar.Context) | ||||
| 	// 		configValue2 := helper.CmdShouldPass("odo", "config", "view", "--context", commonVar.Context) | ||||
| 	// 		helper.DontMatchAllInOutput(configValue2, []string{"hello", "world"}) | ||||
| 	// 		envs = oc.GetEnvsDevFileDeployment("nodejs", commonVar.Project) | ||||
| 	// 		_, ok = envs["hello"] | ||||
| 	// 		Expect(ok).To(BeFalse()) | ||||
| 	// 	}) | ||||
| 	// }) | ||||
|  | ||||
| 	Context("When no ConsentTelemetry preference value is set", func() { | ||||
| 		var _ = JustBeforeEach(func() { | ||||
|   | ||||
| @@ -4,8 +4,8 @@ import ( | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"regexp" | ||||
|  | ||||
| 	"github.com/openshift/odo/pkg/devfile/convert" | ||||
| 	"github.com/openshift/odo/tests/helper" | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| @@ -30,103 +30,18 @@ var _ = Describe("odo push command tests", func() { | ||||
| 		helper.CommonAfterEach(commonVar) | ||||
| 	}) | ||||
|  | ||||
| 	Context("Check pod timeout", func() { | ||||
| 	// Timeout not respected by devfile https://github.com/openshift/odo/issues/4529 | ||||
| 	// Context("Check pod timeout", func() { | ||||
|  | ||||
| 		It("Check that pod timeout works and we time out immediately..", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "preference", "set", "PushTimeout", "1") | ||||
| 			output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 			Expect(output).To(ContainSubstring("waited 1s but couldn't find running pod matching selector")) | ||||
| 		}) | ||||
| 	// 	It("Check that pod timeout works and we time out immediately..", func() { | ||||
| 	// 		helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 	// 		helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 	// 		helper.CmdShouldPass("odo", "preference", "set", "PushTimeout", "1") | ||||
| 	// 		output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 	// 		Expect(output).To(ContainSubstring("waited 1s but couldn't find running pod matching selector")) | ||||
| 	// 	}) | ||||
|  | ||||
| 	}) | ||||
|  | ||||
| 	Context("Check memory and cpu config before odo push", func() { | ||||
| 		It("Should work when memory is set..", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "Memory", "300Mi", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should fail if minMemory is set but maxmemory is not set..", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "minmemory", "100Mi", "--context", commonVar.Context) | ||||
| 			output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 			Expect(output).To(ContainSubstring("`minmemory` should accompany `maxmemory` or use `odo config set memory` to use same value for both min and max")) | ||||
| 		}) | ||||
|  | ||||
| 		It("should fail if maxmemory is set but minmemory is not set..", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "maxmemory", "400Mi", "--context", commonVar.Context) | ||||
| 			output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 			Expect(output).To(ContainSubstring("`minmemory` should accompany `maxmemory` or use `odo config set memory` to use same value for both min and max")) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should work when cpu is set", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "cpu", "0.4", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Should fail if mincpu is set but maxcpu is not set..", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "mincpu", "0.4", "--context", commonVar.Context) | ||||
| 			output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 			Expect(output).To(ContainSubstring("`mincpu` should accompany `maxcpu` or use `odo config set cpu` to use same value for both min and max")) | ||||
| 		}) | ||||
|  | ||||
| 		It("should fail if maxcpu is set but mincpu is not set..", func() { | ||||
|  | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "maxcpu", "0.5", "--context", commonVar.Context) | ||||
| 			output := helper.CmdShouldFail("odo", "push", "--context", commonVar.Context) | ||||
| 			Expect(output).To(ContainSubstring("`mincpu` should accompany `maxcpu` or use `odo config set cpu` to use same value for both min and max")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("Check for label propagation after pushing", func() { | ||||
|  | ||||
| 		It("Check for labels", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			// Check for all the labels | ||||
| 			oc.VerifyLabelExistsOfComponent(cmpName, commonVar.Project, "app:"+appName) | ||||
| 			oc.VerifyLabelExistsOfComponent(cmpName, commonVar.Project, "app.kubernetes.io/part-of:"+appName) | ||||
| 			oc.VerifyLabelExistsOfComponent(cmpName, commonVar.Project, "app.kubernetes.io/managed-by:odo") | ||||
|  | ||||
| 			// Check for the version | ||||
| 			versionInfo := helper.CmdShouldPass("odo", "version") | ||||
| 			re := regexp.MustCompile(`v[0-9]\S*`) | ||||
| 			odoVersionString := re.FindStringSubmatch(versionInfo) | ||||
| 			oc.VerifyLabelExistsOfComponent(cmpName, commonVar.Project, "app.kubernetes.io/managed-by-version:"+odoVersionString[0]) | ||||
| 		}) | ||||
| 	}) | ||||
| 	// }) | ||||
|  | ||||
| 	Context("Test push outside of the current working direcory", func() { | ||||
|  | ||||
| @@ -159,21 +74,6 @@ var _ = Describe("odo push command tests", func() { | ||||
| 	}) | ||||
|  | ||||
| 	Context("when push command is executed", func() { | ||||
| 		It("should not build when no changes are detected in the directory and build when a file change is detected", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			output := helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			Expect(output).To(ContainSubstring("No file changes detected, skipping build")) | ||||
|  | ||||
| 			url := oc.GetFirstURL(cmpName, appName, commonVar.Project) | ||||
| 			helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "Hello world from node.js!", "UPDATED!") | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			helper.HttpWaitFor("http://"+url, "UPDATED!", 30, 1) | ||||
| 		}) | ||||
|  | ||||
| 		It("should be able to create a file, push, delete, then push again propagating the deletions and build", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| @@ -196,12 +96,9 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			// Check to see if it's been pushed (foobar.txt abd directory testdir) | ||||
| 			podName := oc.GetRunningPodNameOfComp(cmpName, commonVar.Project) | ||||
| 			podName := oc.GetRunningPodNameByComponent(cmpName, commonVar.Project) | ||||
|  | ||||
| 			envs := oc.GetEnvs(cmpName, appName, commonVar.Project) | ||||
| 			dir := envs["ODO_S2I_DEPLOYMENT_DIR"] | ||||
|  | ||||
| 			stdOut := oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut := oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
| 			helper.MatchAllInOutput(stdOut, []string{"foobar.txt", "testdir"}) | ||||
|  | ||||
| 			// Now we delete the file and dir and push | ||||
| @@ -210,7 +107,7 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context, "-v4") | ||||
|  | ||||
| 			// Then check to see if it's truly been deleted | ||||
| 			stdOut = oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut = oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
| 			helper.DontMatchAllInOutput(stdOut, []string{"foobar.txt", "testdir"}) | ||||
| 		}) | ||||
|  | ||||
| @@ -234,13 +131,10 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			Expect(output).To(Not(ContainSubstring("No file changes detected, skipping build"))) | ||||
|  | ||||
| 			// get the name of running pod | ||||
| 			podName := oc.GetRunningPodNameOfComp(cmpName, commonVar.Project) | ||||
|  | ||||
| 			envs := oc.GetEnvs(cmpName, appName, commonVar.Project) | ||||
| 			dir := envs["ODO_S2I_DEPLOYMENT_DIR"] | ||||
| 			podName := oc.GetRunningPodNameByComponent(cmpName, commonVar.Project) | ||||
|  | ||||
| 			// verify that the new file was pushed | ||||
| 			stdOut := oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut := oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
|  | ||||
| 			Expect(stdOut).To(Not(ContainSubstring("README.md"))) | ||||
|  | ||||
| @@ -252,28 +146,16 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			Expect(output).To(Not(ContainSubstring("No file changes detected, skipping build"))) | ||||
|  | ||||
| 			// verify that the new file was pushed | ||||
| 			stdOut = oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut = oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
|  | ||||
| 			Expect(stdOut).To(Not(ContainSubstring("tests"))) | ||||
|  | ||||
| 			Expect(stdOut).To(ContainSubstring("testing")) | ||||
| 		}) | ||||
|  | ||||
| 		It("should build when no changes are detected in the directory and force flag is enabled", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
|  | ||||
| 			// use the force build flag and push | ||||
| 			output := helper.CmdShouldPass("odo", "push", "--context", commonVar.Context, "-f") | ||||
| 			Expect(output).To(Not(ContainSubstring("No file changes detected, skipping build"))) | ||||
| 		}) | ||||
|  | ||||
| 		It("should push only the modified files", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			url := oc.GetFirstURL(cmpName, appName, commonVar.Project) | ||||
| @@ -281,75 +163,30 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			// Wait for running app before getting info about files. | ||||
| 			// During the startup sequence there is something that will modify the access time of a source file. | ||||
| 			helper.HttpWaitFor("http://"+url, "Hello world from node.js!", 30, 1) | ||||
|  | ||||
| 			envs := oc.GetEnvs(cmpName, appName, commonVar.Project) | ||||
| 			dir := envs["ODO_S2I_SRC_BIN_PATH"] | ||||
|  | ||||
| 			earlierCatServerFile := "" | ||||
| 			earlierCatServerFile = oc.StatFileInPod(cmpName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(dir, "src", "server.js"))) | ||||
| 			earlierCatServerFile = helper.StatFileInPodContainer(oc, cmpName, convert.ContainerName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(convert.DefaultSourceMappingS2i, "server.js"))) | ||||
|  | ||||
| 			earlierCatPackageFile := "" | ||||
| 			earlierCatPackageFile = oc.StatFileInPod(cmpName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(dir, "src", "package.json"))) | ||||
| 			earlierCatPackageFile = helper.StatFileInPodContainer(oc, cmpName, convert.ContainerName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(convert.DefaultSourceMappingS2i, "package.json"))) | ||||
|  | ||||
| 			helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "Hello world from node.js!", "UPDATED!") | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			helper.HttpWaitFor("http://"+url, "UPDATED!", 30, 1) | ||||
|  | ||||
| 			modifiedCatPackageFile := "" | ||||
| 			modifiedCatPackageFile = oc.StatFileInPod(cmpName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(dir, "src", "package.json"))) | ||||
| 			modifiedCatPackageFile = helper.StatFileInPodContainer(oc, cmpName, convert.ContainerName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(convert.DefaultSourceMappingS2i, "package.json"))) | ||||
|  | ||||
| 			modifiedCatServerFile := "" | ||||
| 			modifiedCatServerFile = oc.StatFileInPod(cmpName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(dir, "src", "server.js"))) | ||||
| 			modifiedCatServerFile = helper.StatFileInPodContainer(oc, cmpName, convert.ContainerName, appName, commonVar.Project, filepath.ToSlash(filepath.Join(convert.DefaultSourceMappingS2i, "server.js"))) | ||||
|  | ||||
| 			Expect(modifiedCatPackageFile).To(Equal(earlierCatPackageFile)) | ||||
| 			Expect(modifiedCatServerFile).NotTo(Equal(earlierCatServerFile)) | ||||
| 		}) | ||||
|  | ||||
| 		It("should delete the files from the container if its removed locally", func() { | ||||
| 			oc.ImportJavaIS(commonVar.Project) | ||||
| 			cmpName := "backend" | ||||
| 			helper.CopyExample(filepath.Join("source", "openjdk"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "java:8", "backend", "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			envs := oc.GetEnvs(cmpName, appName, commonVar.Project) | ||||
| 			dir := envs["ODO_S2I_SRC_BIN_PATH"] | ||||
|  | ||||
| 			var statErr error | ||||
| 			oc.CheckCmdOpInRemoteCmpPod( | ||||
| 				"backend", | ||||
| 				appName, | ||||
| 				commonVar.Project, | ||||
| 				[]string{"stat", filepath.ToSlash(filepath.Join(dir, "src", "src", "main", "java", "AnotherMessageProducer.java"))}, | ||||
| 				func(cmdOp string, err error) bool { | ||||
| 					statErr = err | ||||
| 					return true | ||||
| 				}, | ||||
| 			) | ||||
| 			Expect(statErr).ToNot(HaveOccurred()) | ||||
| 			Expect(os.Remove(filepath.Join(commonVar.Context, "src", "main", "java", "AnotherMessageProducer.java"))).NotTo(HaveOccurred()) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			oc.CheckCmdOpInRemoteCmpPod( | ||||
| 				"backend", | ||||
| 				appName, | ||||
| 				commonVar.Project, | ||||
| 				[]string{"stat", filepath.ToSlash(filepath.Join(dir, "src", "src", "main", "java", "AnotherMessageProducer.java"))}, | ||||
| 				func(cmdOp string, err error) bool { | ||||
| 					statErr = err | ||||
| 					return true | ||||
| 				}, | ||||
| 			) | ||||
|  | ||||
| 			Expect(statErr).To(HaveOccurred()) | ||||
| 			path := filepath.ToSlash(filepath.Join(dir, "src", "src", "main", "java", "AnotherMessageProducer.java")) | ||||
| 			Expect(statErr.Error()).To(ContainSubstring("cannot stat '" + path + "': No such file or directory")) | ||||
| 		}) | ||||
|  | ||||
| 	}) | ||||
|  | ||||
| 	Context("when .odoignore file exists", func() { | ||||
| 		// works | ||||
| 		It("should create and push the contents of a named component excluding the contents and changes detected in .odoignore file", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| @@ -364,17 +201,14 @@ var _ = Describe("odo push command tests", func() { | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			// get the name of running pod | ||||
| 			podName := oc.GetRunningPodNameOfComp("nodejs", commonVar.Project) | ||||
|  | ||||
| 			envs := oc.GetEnvs(cmpName, appName, commonVar.Project) | ||||
| 			dir := envs["ODO_S2I_DEPLOYMENT_DIR"] | ||||
| 			podName := oc.GetRunningPodNameByComponent("nodejs", commonVar.Project) | ||||
|  | ||||
| 			// verify that the server file got pushed | ||||
| 			stdOut1 := oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut1 := oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
| 			Expect(stdOut1).To(ContainSubstring("server.js")) | ||||
|  | ||||
| 			// verify that the README.md file was not pushed | ||||
| 			stdOut3 := oc.ExecListDir(podName, commonVar.Project, dir) | ||||
| 			stdOut3 := oc.ExecListDir(podName, commonVar.Project, convert.DefaultSourceMappingS2i) | ||||
| 			Expect(stdOut3).To(Not(ContainSubstring(("README.md")))) | ||||
|  | ||||
| 			// modify a ignored file and push | ||||
|   | ||||
| @@ -10,12 +10,10 @@ import ( | ||||
| ) | ||||
|  | ||||
| var _ = Describe("odo storage command tests", func() { | ||||
| 	var oc helper.OcRunner | ||||
| 	var commonVar helper.CommonVar | ||||
|  | ||||
| 	// This is run before every Spec (It) | ||||
| 	var _ = BeforeEach(func() { | ||||
| 		oc = helper.NewOcRunner("oc") | ||||
| 		commonVar = helper.CommonBeforeEach() | ||||
| 	}) | ||||
|  | ||||
| @@ -32,97 +30,6 @@ var _ = Describe("odo storage command tests", func() { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when running storage command without required flag(s)", func() { | ||||
| 		It("should fail", func() { | ||||
| 			requiredFlags := []string{"size", "path"} | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", "nodejs", "--app", "nodeapp", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			stdErr := helper.CmdShouldFail("odo", "storage", "create", "pv1", "--size", "1Gi", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(stdErr, requiredFlags) | ||||
|  | ||||
| 			requiredFlagsS := []string{"size"} | ||||
| 			stdErr = helper.CmdShouldFail("odo", "storage", "create", "pv1", "--path", "/data", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(stdErr, requiredFlagsS) | ||||
| 			stdErr = helper.CmdShouldFail("odo", "storage", "create", "pv1", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(stdErr, requiredFlags) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when using storage command with default flag values", func() { | ||||
| 		It("should add a storage, list and delete it", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", "nodejs", "--app", "nodeapp", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			// Default flag value | ||||
| 			// --app string         Application, defaults to active application | ||||
| 			// --component string   Component, defaults to active component. | ||||
| 			// --project string     Project, defaults to active project | ||||
| 			storAdd := helper.CmdShouldPass("odo", "storage", "create", "pv1", "--path", "/mnt/pv1", "--size", "1Gi", "--context", commonVar.Context) | ||||
| 			Expect(storAdd).To(ContainSubstring("nodejs")) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			dcName := oc.GetDcName("nodejs", commonVar.Project) | ||||
|  | ||||
| 			// Check against the volume name against dc | ||||
| 			getDcVolumeMountName := oc.GetVolumeMountName(dcName, commonVar.Project) | ||||
| 			Expect(getDcVolumeMountName).To(ContainSubstring("pv1")) | ||||
|  | ||||
| 			// Check if the storage is added on the path provided | ||||
| 			getMntPath := oc.GetVolumeMountPath(dcName, commonVar.Project) | ||||
| 			Expect(getMntPath).To(ContainSubstring("/mnt/pv1")) | ||||
|  | ||||
| 			storeList := helper.CmdShouldPass("odo", "storage", "list", "--context", commonVar.Context) | ||||
| 			Expect(storeList).To(ContainSubstring("pv1")) | ||||
|  | ||||
| 			// delete the storage | ||||
| 			helper.CmdShouldPass("odo", "storage", "delete", "pv1", "--context", commonVar.Context, "-f") | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			storeList = helper.CmdShouldPass("odo", "storage", "list", "--context", commonVar.Context) | ||||
| 			Expect(storeList).NotTo(ContainSubstring("pv1")) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			getDcVolumeMountName = oc.GetVolumeMountName(dcName, commonVar.Project) | ||||
| 			Expect(getDcVolumeMountName).NotTo(ContainSubstring("pv1")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when using storage command with specified flag values", func() { | ||||
| 		It("should add a storage, list and delete it", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "python"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "python", "python", "--app", "pyapp", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			storAdd := helper.CmdShouldPass("odo", "storage", "create", "pv1", "--path", "/mnt/pv1", "--size", "1Gi", "--context", commonVar.Context) | ||||
| 			Expect(storAdd).To(ContainSubstring("python")) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			dcName := oc.GetDcName("python", commonVar.Project) | ||||
|  | ||||
| 			// Check against the volume name against dc | ||||
| 			getDcVolumeMountName := oc.GetVolumeMountName(dcName, commonVar.Project) | ||||
| 			Expect(getDcVolumeMountName).To(ContainSubstring("pv1")) | ||||
|  | ||||
| 			// Check if the storage is added on the path provided | ||||
| 			getMntPath := oc.GetVolumeMountPath(dcName, commonVar.Project) | ||||
| 			Expect(getMntPath).To(ContainSubstring("/mnt/pv1")) | ||||
|  | ||||
| 			storeList := helper.CmdShouldPass("odo", "storage", "list", "--context", commonVar.Context) | ||||
| 			Expect(storeList).To(ContainSubstring("pv1")) | ||||
|  | ||||
| 			// delete the storage | ||||
| 			helper.CmdShouldPass("odo", "storage", "delete", "pv1", "--context", commonVar.Context, "-f") | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			storeList = helper.CmdShouldPass("odo", "storage", "list", "--context", commonVar.Context) | ||||
|  | ||||
| 			Expect(storeList).NotTo(ContainSubstring("pv1")) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
| 			getDcVolumeMountName = oc.GetVolumeMountName(dcName, commonVar.Project) | ||||
| 			Expect(getDcVolumeMountName).NotTo(ContainSubstring("pv1")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when using storage command with -o json", func() { | ||||
| 		It("should create and list output in json format", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "wildfly"), commonVar.Context) | ||||
|   | ||||
| @@ -70,12 +70,12 @@ var _ = Describe("odo url command tests", func() { | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			secureURL := helper.DetermineRouteURL(commonVar.Context) | ||||
| 			Expect(secureURL).To(ContainSubstring("https:")) | ||||
| 			helper.HttpWaitFor(secureURL, "Hello world from node.js!", 20, 1) | ||||
| 			secureURLs := helper.DetermineRouteURLs(commonVar.Context) | ||||
| 			Expect(secureURLs).To(ContainElement(ContainSubstring("https"))) | ||||
| 			helper.HttpWaitFor(secureURLs[0], "Hello world from node.js!", 20, 1) | ||||
|  | ||||
| 			stdout = helper.CmdShouldPass("odo", "url", "list", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(stdout, []string{secureURL, "Pushed", "true"}) | ||||
| 			helper.MatchAllInOutput(stdout, []string{secureURLs[0], "Pushed", "true"}) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "delete", "-f", "--context", commonVar.Context) | ||||
| 		}) | ||||
|   | ||||
| @@ -7,7 +7,6 @@ import ( | ||||
| 	"path" | ||||
| 	"path/filepath" | ||||
| 	"runtime" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| @@ -52,45 +51,34 @@ func componentTests(args ...string) { | ||||
| 		}) | ||||
|  | ||||
| 		It("should create but not list component even in new project with --project and --context at the same time", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--git", "https://github.com/openshift/nodejs-ex", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing") | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
|  | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context, "-v4")...) | ||||
| 			projectList := helper.CmdShouldPass("odo", "project", "list") | ||||
| 			Expect(projectList).To(ContainSubstring(commonVar.Project)) | ||||
| 			helper.CmdShouldFail("odo", "list", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("Without an application should create one", func() { | ||||
| 			componentName := helper.RandString(6) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "--project", commonVar.Project, componentName, "--ref", "master", "--git", "https://github.com/openshift/nodejs-ex")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+componentName, "Application,app") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 			appName := helper.CmdShouldPass("odo", "app", "list", "--project", commonVar.Project) | ||||
| 			Expect(appName).ToNot(BeEmpty()) | ||||
|  | ||||
| 			// checking if application name is set to "app" | ||||
| 			applicationName := helper.GetConfigValue("Application") | ||||
| 			Expect(applicationName).To(Equal("app")) | ||||
|  | ||||
| 			// clean up | ||||
| 			helper.CmdShouldPass("odo", "app", "delete", "app", "-f") | ||||
| 			helper.CmdShouldFail("odo", "app", "delete", "app", "-f") | ||||
| 			helper.CmdShouldFail("odo", append(args, "delete", componentName, "-f")...) | ||||
|  | ||||
| 		}) | ||||
|  | ||||
| 		// works | ||||
| 		It("should create default named component when passed same context differently", func() { | ||||
| 			dir := filepath.Base(commonVar.Context) | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", ".", "--app", "testing")...) | ||||
| 			componentName := helper.GetConfigValueWithContext("Name", commonVar.Context) | ||||
| 			componentName := helper.GetLocalEnvInfoValueWithContext("Name", commonVar.Context) | ||||
| 			Expect(componentName).To(ContainSubstring("nodejs")) | ||||
| 			Expect(componentName).To(ContainSubstring(dir)) | ||||
|  | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+componentName, "Application,testing") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), componentName) | ||||
|  | ||||
| 			helper.DeleteDir(filepath.Join(commonVar.Context, ".odo")) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			newComponentName := helper.GetConfigValueWithContext("Name", commonVar.Context) | ||||
| 			newComponentName := helper.GetLocalEnvInfoValueWithContext("Name", commonVar.Context) | ||||
| 			Expect(newComponentName).To(ContainSubstring("nodejs")) | ||||
| 			Expect(newComponentName).To(ContainSubstring(dir)) | ||||
| 		}) | ||||
| @@ -106,76 +94,53 @@ func componentTests(args ...string) { | ||||
| 			Expect(output).To(ContainSubstring("this directory already contains a component")) | ||||
| 		}) | ||||
|  | ||||
| 		It("should list out component in json format along with path flag", func() { | ||||
| 			var contextPath string | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,nodejs", "Application,app") | ||||
| 			if runtime.GOOS == "windows" { | ||||
| 				contextPath = strings.Replace(strings.TrimSpace(commonVar.Context), "\\", "\\\\", -1) | ||||
| 			} else { | ||||
| 				contextPath = strings.TrimSpace(commonVar.Context) | ||||
| 			} | ||||
| 			// this orders the json | ||||
| 			desired, err := helper.Unindented(fmt.Sprintf(`{"kind":"Component","apiVersion":"odo.dev/v1alpha1","metadata":{"name":"nodejs","namespace":"%s","creationTimestamp":null},"spec":{"app":"app","type":"nodejs","sourceType": "local","ports":["8080/TCP"]},"status":{"context":"%s","state":"Not Pushed"}}`, commonVar.Project, contextPath)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 		// TODO: Fix later | ||||
| 		// It("should list out pushed components of different projects in json format along with path flag", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project)...) | ||||
| 		// 	info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 		// 	Expect(info.GetApplication(), "app") | ||||
| 		// 	Expect(info.GetName(), "nodejs") | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push")...) | ||||
|  | ||||
| 			actual, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "list", "-o", "json", "--path", filepath.Dir(commonVar.Context))...)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			// since the tests are run parallel, there might be many odo component directories in the root folder | ||||
| 			// so we only check for the presence of the current one | ||||
| 			Expect(actual).Should(ContainSubstring(desired)) | ||||
| 		}) | ||||
| 		// 	project2 := helper.CreateRandProject() | ||||
| 		// 	context2 := helper.CreateNewContext() | ||||
| 		// 	helper.Chdir(context2) | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "python"), context2) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "python", "python", "--project", project2)...) | ||||
| 		// 	info = helper.LocalEnvInfo(context2) | ||||
| 		// 	Expect(info.GetApplication(), "app") | ||||
| 		// 	Expect(info.GetName(), "python") | ||||
|  | ||||
| 		It("should list out pushed components of different projects in json format along with path flag", func() { | ||||
| 			var contextPath string | ||||
| 			var contextPath2 string | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,nodejs", "Application,app") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push")...) | ||||
|  | ||||
| 			project2 := helper.CreateRandProject() | ||||
| 			context2 := helper.CreateNewContext() | ||||
| 			helper.Chdir(context2) | ||||
| 			helper.CopyExample(filepath.Join("source", "python"), context2) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "python", "python", "--project", project2)...) | ||||
| 			helper.ValidateLocalCmpExist(context2, "Type,python", "Name,python", "Application,app") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 		// 	actual, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "list", "-o", "json", "--path", filepath.Dir(commonVar.Context))...)) | ||||
| 		// 	Expect(err).Should(BeNil()) | ||||
| 		// 	helper.Chdir(commonVar.Context) | ||||
| 		// 	helper.DeleteDir(context2) | ||||
| 		// 	helper.DeleteProject(project2) | ||||
| 		// 	// this orders the json | ||||
| 		// 	expected := fmt.Sprintf(`"metadata":{"name":"nodejs","namespace":"%s","creationTimestamp":null},"spec":{"app":"app","type":"nodejs","sourceType": "local","ports":["8080/TCP"]}`, commonVar.Project) | ||||
| 		// 	Expect(actual).Should(ContainSubstring(expected)) | ||||
| 		// 	// this orders the json | ||||
| 		// 	expected = fmt.Sprintf(`"metadata":{"name":"python","namespace":"%s","creationTimestamp":null},"spec":{"app":"app","type":"python","sourceType": "local","ports":["8080/TCP"]}`, project2) | ||||
| 		// 	Expect(actual).Should(ContainSubstring(expected)) | ||||
|  | ||||
| 			if runtime.GOOS == "windows" { | ||||
| 				contextPath = strings.Replace(strings.TrimSpace(commonVar.Context), "\\", "\\\\", -1) | ||||
| 				contextPath2 = strings.Replace(strings.TrimSpace(context2), "\\", "\\\\", -1) | ||||
| 			} else { | ||||
| 				contextPath = strings.TrimSpace(commonVar.Context) | ||||
| 				contextPath2 = strings.TrimSpace(context2) | ||||
| 			} | ||||
|  | ||||
| 			actual, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "list", "-o", "json", "--path", filepath.Dir(commonVar.Context))...)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 			helper.DeleteDir(context2) | ||||
| 			helper.DeleteProject(project2) | ||||
| 			// this orders the json | ||||
| 			expected, err := helper.Unindented(fmt.Sprintf(`{"kind":"Component","apiVersion":"odo.dev/v1alpha1","metadata":{"name":"nodejs","namespace":"%s","creationTimestamp":null},"spec":{"app":"app","type":"nodejs","sourceType": "local","ports":["8080/TCP"]},"status":{"context":"%s","state":"Pushed"}}`, commonVar.Project, contextPath)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			Expect(actual).Should(ContainSubstring(expected)) | ||||
| 			// this orders the json | ||||
| 			expected, err = helper.Unindented(fmt.Sprintf(`{"kind":"Component","apiVersion":"odo.dev/v1alpha1","metadata":{"name":"python","namespace":"%s","creationTimestamp":null},"spec":{"app":"app","type":"python","sourceType": "local","ports":["8080/TCP"]},"status":{"context":"%s","state":"Pushed"}}`, project2, contextPath2)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			Expect(actual).Should(ContainSubstring(expected)) | ||||
|  | ||||
| 		}) | ||||
| 		// }) | ||||
|  | ||||
| 		It("should list the component", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing") | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			cmpList := helper.CmdShouldPass("odo", append(args, "list", "--project", commonVar.Project)...) | ||||
| 			Expect(cmpList).To(ContainSubstring("cmp-git")) | ||||
| 			actualCompListJSON := helper.CmdShouldPass("odo", append(args, "list", "--project", commonVar.Project, "-o", "json")...) | ||||
| 			valuesCList := gjson.GetMany(actualCompListJSON, "kind", "s2iComponents.0.kind", "s2iComponents.0.metadata.name", "s2iComponents.0.spec.app", "s2iComponents.0.spec.env.0.name") | ||||
| 			expectedCList := []string{"List", "Component", "cmp-git", "testing", "DEBUG_PORT"} | ||||
| 			valuesCList := gjson.GetMany(actualCompListJSON, "kind", "devfileComponents.0.kind", "devfileComponents.0.metadata.name", "devfileComponents.0.spec.app") | ||||
| 			expectedCList := []string{"List", "Component", "cmp-git", "testing"} | ||||
| 			Expect(helper.GjsonMatcher(valuesCList, expectedCList)).To(Equal(true)) | ||||
|  | ||||
| 			cmpAllList := helper.CmdShouldPass("odo", append(args, "list", "--all-apps")...) | ||||
| @@ -184,65 +149,64 @@ func componentTests(args ...string) { | ||||
| 		}) | ||||
|  | ||||
| 		It("should list the component when it is not pushed", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing") | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
|  | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git") | ||||
| 			cmpList := helper.CmdShouldPass("odo", append(args, "list", "--context", commonVar.Context)...) | ||||
| 			helper.MatchAllInOutput(cmpList, []string{"cmp-git", "Not Pushed"}) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		}) | ||||
| 		It("should list the state as unknown for disconnected cluster", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing") | ||||
| 			kubeconfigOrig := os.Getenv("KUBECONFIG") | ||||
|  | ||||
| 			unset := func() { | ||||
| 				// KUBECONFIG defaults to ~/.kube/config so it can be empty in some cases. | ||||
| 				if kubeconfigOrig != "" { | ||||
| 					os.Setenv("KUBECONFIG", kubeconfigOrig) | ||||
| 				} else { | ||||
| 					os.Unsetenv("KUBECONFIG") | ||||
| 				} | ||||
| 			} | ||||
| 		// It("should list the state as unknown for disconnected cluster", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 		// 	info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 		// 	Expect(info.GetApplication(), "testing") | ||||
| 		// 	Expect(info.GetName(), "cmp-git") | ||||
| 		// 	kubeconfigOrig := os.Getenv("KUBECONFIG") | ||||
|  | ||||
| 			os.Setenv("KUBECONFIG", "/no/such/path") | ||||
| 		// 	unset := func() { | ||||
| 		// 		// KUBECONFIG defaults to ~/.kube/config so it can be empty in some cases. | ||||
| 		// 		if kubeconfigOrig != "" { | ||||
| 		// 			os.Setenv("KUBECONFIG", kubeconfigOrig) | ||||
| 		// 		} else { | ||||
| 		// 			os.Unsetenv("KUBECONFIG") | ||||
| 		// 		} | ||||
| 		// 	} | ||||
|  | ||||
| 			defer unset() | ||||
| 			cmpList := helper.CmdShouldPass("odo", append(args, "list", "--context", commonVar.Context, "--v", "9")...) | ||||
| 		// 	os.Setenv("KUBECONFIG", "/no/such/path") | ||||
|  | ||||
| 			helper.MatchAllInOutput(cmpList, []string{"cmp-git", "Unknown"}) | ||||
| 			unset() | ||||
| 		// 	defer unset() | ||||
| 		// 	cmpList := helper.CmdShouldPass("odo", append(args, "list", "--context", commonVar.Context, "--v", "9")...) | ||||
|  | ||||
| 			fmt.Printf("kubeconfig before delete %v", os.Getenv("KUBECONFIG")) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		}) | ||||
| 		// 	helper.MatchAllInOutput(cmpList, []string{"cmp-git", "Unknown"}) | ||||
| 		// 	unset() | ||||
|  | ||||
| 		// 	fmt.Printf("kubeconfig before delete %v", os.Getenv("KUBECONFIG")) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		// }) | ||||
|  | ||||
| 		It("should describe the component when it is not pushed", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "url-1", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "url-2", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "storage", "create", "storage-1", "--size", "1Gi", "--path", "/data1", "--context", commonVar.Context) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing", "URL,0,Name,url-1") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git") | ||||
| 			cmpDescribe := helper.CmdShouldPass("odo", append(args, "describe", "--context", commonVar.Context)...) | ||||
| 			helper.MatchAllInOutput(cmpDescribe, []string{ | ||||
| 				"cmp-git", | ||||
| 				"nodejs", | ||||
| 				"url-1", | ||||
| 				"url-2", | ||||
| 				"https://github.com/openshift/nodejs-ex", | ||||
| 				"storage-1", | ||||
| 			}) | ||||
|  | ||||
| 			cmpDescribeJSON, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "describe", "-o", "json", "--context", commonVar.Context)...)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			valuesDesc := gjson.GetMany(cmpDescribeJSON, "kind", "metadata.name", "spec.urls.items.0.kind", "spec.urls.items.0.metadata.name", "spec.urls.items.0.status.state", "spec.urls.items.1.kind", "spec.urls.items.1.metadata.name", "spec.urls.items.1.status.state") | ||||
| 			expectedDesc := []string{"Component", "cmp-git", "url", "url-1", "Not Pushed", "url", "url-2", "Not Pushed"} | ||||
| 			Expect(helper.GjsonMatcher(valuesDesc, expectedDesc)).To(Equal(true)) | ||||
|  | ||||
| 			// odo should describe not pushed component if component name is given. | ||||
| 			helper.CmdShouldPass("odo", append(args, "describe", "cmp-git", "--context", commonVar.Context)...) | ||||
| 			Expect(cmpDescribe).To(ContainSubstring("cmp-git")) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		}) | ||||
|  | ||||
| 		It("checks that odo describe works for s2i component from a devfile directory", func() { | ||||
| @@ -258,36 +222,22 @@ func componentTests(args ...string) { | ||||
| 			helper.Chdir(commonVar.OriginalWorkingDirectory) | ||||
| 			helper.DeleteDir(context2) | ||||
| 		}) | ||||
| 		It("should describe not pushed component when it is created with json output", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			cmpDescribeJSON, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing", "-o", "json")...)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			expected, err := helper.Unindented(`{"kind": "Component","apiVersion": "odo.dev/v1alpha1","metadata": {"name": "cmp-git","namespace": "` + commonVar.Project + `","creationTimestamp": null},"spec":{"app": "testing","type":"nodejs","source": "./","sourceType": "local","ports": ["8080/TCP"]}, "status": {"state": "Not Pushed"}}`) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			Expect(cmpDescribeJSON).Should(MatchJSON(expected)) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		}) | ||||
|  | ||||
| 		It("should describe pushed component when it is created with json output", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			cmpDescribeJSON, err := helper.Unindented(helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing", "-o", "json", "--now")...)) | ||||
| 			Expect(err).Should(BeNil()) | ||||
| 			valuesDescJ := gjson.GetMany(cmpDescribeJSON, "kind", "metadata.name", "spec.app", "spec.type", "status.state") | ||||
| 			expectedDescJ := []string{"Component", "cmp-git", "testing", "nodejs", "Pushed"} | ||||
| 			Expect(helper.GjsonMatcher(valuesDescJ, expectedDescJ)).To(Equal(true)) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "--all", "--context", commonVar.Context)...) | ||||
| 		}) | ||||
|  | ||||
| 		It("should list the component in the same app when one is pushed and the other one is not pushed", func() { | ||||
| 			helper.Chdir(commonVar.OriginalWorkingDirectory) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,cmp-git", "Application,testing") | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			context2 := helper.CreateNewContext() | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git-2", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", context2, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(context2, "Type,nodejs", "Name,cmp-git-2", "Application,testing") | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git-2", "--project", commonVar.Project, "--context", context2, "--app", "testing")...) | ||||
| 			info = helper.LocalEnvInfo(context2) | ||||
| 			Expect(info.GetApplication(), "testing") | ||||
| 			Expect(info.GetName(), "cmp-git-2") | ||||
| 			cmpList := helper.CmdShouldPass("odo", append(args, "list", "--context", context2)...) | ||||
| 			helper.MatchAllInOutput(cmpList, []string{"cmp-git", "cmp-git-2", "Not Pushed", "Pushed"}) | ||||
|  | ||||
| @@ -307,7 +257,8 @@ func componentTests(args ...string) { | ||||
| 			// Was failing due to https://github.com/openshift/odo/issues/1969 | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "java:8", "sb-jar-test", "--project", | ||||
| 				commonVar.Project, "--binary", filepath.Join(commonVar.Context, "sb.jar"))...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,java:8", "Name,sb-jar-test") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetName(), "sb-jar-test") | ||||
| 		}) | ||||
|  | ||||
| 		It("binary component should fail when --binary is not in --context folder", func() { | ||||
| @@ -336,7 +287,9 @@ func componentTests(args ...string) { | ||||
| 				helper.CmdShouldPass("odo", append(args, "create", "--s2i", "java:8", "sb-jar-test", "--project", | ||||
| 					commonVar.Project, "--binary", filepath.Join(commonVar.Context, "sb.jar"), "--context", relativeContext)...) | ||||
| 			} | ||||
| 			helper.ValidateLocalCmpExist(relativeContext, "Type,java:8", "Name,sb-jar-test") | ||||
| 			info := helper.LocalEnvInfo(relativeContext) | ||||
| 			Expect(info.GetApplication(), "app") | ||||
| 			Expect(info.GetName(), "sb-jar-test") | ||||
| 		}) | ||||
|  | ||||
| 		It("should fail the create command as --git flag, which is specific to s2i component creation, is used without --s2i flag", func() { | ||||
| @@ -352,147 +305,6 @@ func componentTests(args ...string) { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("Test odo push with --source and --config flags", func() { | ||||
| 		JustBeforeEach(func() { | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 		}) | ||||
| 		Context("Using project flag(--project) and current directory", func() { | ||||
| 			It("create local nodejs component and push source and code separately", func() { | ||||
| 				appName := "nodejs-push-test" | ||||
| 				cmpName := "nodejs" | ||||
| 				helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 				helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project)...) | ||||
| 				helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
|  | ||||
| 				// component doesn't exist yet so attempt to only push source should fail | ||||
| 				helper.CmdShouldFail("odo", append(args, "push", "--source")...) | ||||
|  | ||||
| 				// Push only config and see that the component is created but without any source copied | ||||
| 				helper.CmdShouldPass("odo", append(args, "push", "--config")...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
|  | ||||
| 				// Push only source and see that the component is updated with source code | ||||
| 				helper.CmdShouldPass("odo", append(args, "push", "--source")...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
| 				remoteCmdExecPass := oc.CheckCmdOpInRemoteCmpPod( | ||||
| 					cmpName, | ||||
| 					appName, | ||||
| 					commonVar.Project, | ||||
| 					[]string{"sh", "-c", "ls -la $ODO_S2I_DEPLOYMENT_DIR/package.json"}, | ||||
| 					func(cmdOp string, err error) bool { | ||||
| 						return err == nil | ||||
| 					}, | ||||
| 				) | ||||
| 				Expect(remoteCmdExecPass).To(Equal(true)) | ||||
| 			}) | ||||
|  | ||||
| 			It("create local nodejs component and push source and code at once", func() { | ||||
| 				appName := "nodejs-push-test" | ||||
| 				cmpName := "nodejs-push-atonce" | ||||
| 				helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 				helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project)...) | ||||
| 				helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
| 				// Push only config and see that the component is created but without any source copied | ||||
| 				helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
| 				remoteCmdExecPass := oc.CheckCmdOpInRemoteCmpPod( | ||||
| 					cmpName, | ||||
| 					appName, | ||||
| 					commonVar.Project, | ||||
| 					[]string{"sh", "-c", "ls -la $ODO_S2I_DEPLOYMENT_DIR/package.json"}, | ||||
| 					func(cmdOp string, err error) bool { | ||||
| 						return err == nil | ||||
| 					}, | ||||
| 				) | ||||
| 				Expect(remoteCmdExecPass).To(Equal(true)) | ||||
| 			}) | ||||
|  | ||||
| 		}) | ||||
|  | ||||
| 		Context("when --context is used", func() { | ||||
| 			// don't need to switch to any dir here, as this test should use --context flag | ||||
| 			It("create local nodejs component and push source and code separately", func() { | ||||
| 				appName := "nodejs-push-context-test" | ||||
| 				cmpName := "nodejs" | ||||
| 				helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 				helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--context", commonVar.Context, "--app", appName, "--project", commonVar.Project)...) | ||||
| 				helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
|  | ||||
| 				// component doesn't exist yet so attempt to only push source should fail | ||||
| 				helper.CmdShouldFail("odo", append(args, "push", "--source", "--context", commonVar.Context)...) | ||||
|  | ||||
| 				// Push only config and see that the component is created but without any source copied | ||||
| 				helper.CmdShouldPass("odo", append(args, "push", "--config", "--context", commonVar.Context)...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
|  | ||||
| 				// Push only source and see that the component is updated with source code | ||||
| 				helper.CmdShouldPass("odo", append(args, "push", "--source", "--context", commonVar.Context)...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
| 				remoteCmdExecPass := oc.CheckCmdOpInRemoteCmpPod( | ||||
| 					cmpName, | ||||
| 					appName, | ||||
| 					commonVar.Project, | ||||
| 					[]string{"sh", "-c", "ls -la $ODO_S2I_DEPLOYMENT_DIR/package.json"}, | ||||
| 					func(cmdOp string, err error) bool { | ||||
| 						return err == nil | ||||
| 					}, | ||||
| 				) | ||||
| 				Expect(remoteCmdExecPass).To(Equal(true)) | ||||
| 			}) | ||||
|  | ||||
| 			It("create local nodejs component and push source and code at once", func() { | ||||
| 				appName := "nodejs-push-context-test" | ||||
| 				cmpName := "nodejs-push-atonce" | ||||
| 				helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 				helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--context", commonVar.Context, "--project", commonVar.Project)...) | ||||
| 				helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
|  | ||||
| 				// Push both config and source | ||||
| 				helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 				oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
| 				remoteCmdExecPass := oc.CheckCmdOpInRemoteCmpPod( | ||||
| 					cmpName, | ||||
| 					appName, | ||||
| 					commonVar.Project, | ||||
| 					[]string{"sh", "-c", "ls -la $ODO_S2I_DEPLOYMENT_DIR/package.json"}, | ||||
| 					func(cmdOp string, err error) bool { | ||||
| 						return err == nil | ||||
| 					}, | ||||
| 				) | ||||
| 				Expect(remoteCmdExecPass).To(Equal(true)) | ||||
| 			}) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("Test odo push with --now flag during creation", func() { | ||||
| 		JustBeforeEach(func() { | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 		}) | ||||
| 		It("should successfully create config and push code in one create command with --now", func() { | ||||
| 			appName := "nodejs-create-now-test" | ||||
| 			cmpName := "nodejs-push-atonce" | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--now")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
|  | ||||
| 			oc.VerifyCmpExists(cmpName, appName, commonVar.Project) | ||||
| 			remoteCmdExecPass := oc.CheckCmdOpInRemoteCmpPod( | ||||
| 				cmpName, | ||||
| 				appName, | ||||
| 				commonVar.Project, | ||||
| 				[]string{"sh", "-c", "ls -la $ODO_S2I_DEPLOYMENT_DIR/package.json"}, | ||||
| 				func(cmdOp string, err error) bool { | ||||
| 					return err == nil | ||||
| 				}, | ||||
| 			) | ||||
| 			Expect(remoteCmdExecPass).To(Equal(true)) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when component is in the current directory and --project flag is used", func() { | ||||
|  | ||||
| 		appName := "app" | ||||
| @@ -512,7 +324,9 @@ func componentTests(args ...string) { | ||||
| 		It("creates and pushes local nodejs component and then deletes --all", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", componentName, "--app", appName, "--project", commonVar.Project, "--env", "key=value,key1=value1")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+componentName, "Application,"+appName) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), componentName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "--context", commonVar.Context, "-f", "--all")...) | ||||
| 			componentList := helper.CmdShouldPass("odo", append(args, "list", "--app", appName, "--project", commonVar.Project)...) | ||||
| @@ -524,7 +338,9 @@ func componentTests(args ...string) { | ||||
| 		It("creates a local python component, pushes it and then deletes it using --all flag", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "python"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "python", componentName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,python", "Name,"+componentName, "Application,"+appName) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), componentName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "--context", commonVar.Context, "-f")...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "--all", "-f", "--context", commonVar.Context)...) | ||||
| @@ -537,7 +353,9 @@ func componentTests(args ...string) { | ||||
| 		It("creates a local python component, pushes it and then deletes it using --all flag in local directory", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "python"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "python", componentName, "--app", appName, "--project", commonVar.Project)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,python", "Name,"+componentName, "Application,"+appName) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), componentName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "--all", "-f")...) | ||||
| 			componentList := helper.CmdShouldPass("odo", append(args, "list", "--app", appName, "--project", commonVar.Project)...) | ||||
| @@ -565,37 +383,38 @@ func componentTests(args ...string) { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("odo component updating", func() { | ||||
| 	// devfile doesn't support odo update command | ||||
| 	// Context("odo component updating", func() { | ||||
|  | ||||
| 		It("should be able to create a git component and update it from local to git", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 	// 	It("should be able to create a git component and update it from local to git", func() { | ||||
| 	// 		helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 	// 		helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--context", commonVar.Context, "--app", "testing")...) | ||||
| 	// 		helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "update", "--git", "https://github.com/openshift/nodejs-ex.git", "--context", commonVar.Context) | ||||
| 			// check the source location and type in the deployment config | ||||
| 			getSourceLocation := oc.SourceLocationDC("cmp-git", "testing", commonVar.Project) | ||||
| 			Expect(getSourceLocation).To(ContainSubstring("https://github.com/openshift/nodejs-ex")) | ||||
| 			getSourceType := oc.SourceTypeDC("cmp-git", "testing", commonVar.Project) | ||||
| 			Expect(getSourceType).To(ContainSubstring("git")) | ||||
| 		}) | ||||
| 	// 		helper.CmdShouldPass("odo", "update", "--git", "https://github.com/openshift/nodejs-ex.git", "--context", commonVar.Context) | ||||
| 	// 		// check the source location and type in the deployment config | ||||
| 	// 		getSourceLocation := oc.SourceLocationDC("cmp-git", "testing", commonVar.Project) | ||||
| 	// 		Expect(getSourceLocation).To(ContainSubstring("https://github.com/openshift/nodejs-ex")) | ||||
| 	// 		getSourceType := oc.SourceTypeDC("cmp-git", "testing", commonVar.Project) | ||||
| 	// 		Expect(getSourceType).To(ContainSubstring("git")) | ||||
| 	// 	}) | ||||
|  | ||||
| 		It("should be able to update a component from git to local", func() { | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 	// 	It("should be able to update a component from git to local", func() { | ||||
| 	// 		helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "cmp-git", "--project", commonVar.Project, "--git", "https://github.com/openshift/nodejs-ex", "--context", commonVar.Context, "--app", "testing")...) | ||||
| 	// 		helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			// update the component config according to the git component | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 	// 		// update the component config according to the git component | ||||
| 	// 		helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "update", "--local", "./", "--context", commonVar.Context) | ||||
| 	// 		helper.CmdShouldPass("odo", "update", "--local", "./", "--context", commonVar.Context) | ||||
|  | ||||
| 			// check the source location and type in the deployment config | ||||
| 			getSourceLocation := oc.SourceLocationDC("cmp-git", "testing", commonVar.Project) | ||||
| 			Expect(getSourceLocation).To(ContainSubstring("")) | ||||
| 			getSourceType := oc.SourceTypeDC("cmp-git", "testing", commonVar.Project) | ||||
| 			Expect(getSourceType).To(ContainSubstring("local")) | ||||
| 		}) | ||||
| 	}) | ||||
| 	// 		// check the source location and type in the deployment config | ||||
| 	// 		getSourceLocation := oc.SourceLocationDC("cmp-git", "testing", commonVar.Project) | ||||
| 	// 		Expect(getSourceLocation).To(ContainSubstring("")) | ||||
| 	// 		getSourceType := oc.SourceTypeDC("cmp-git", "testing", commonVar.Project) | ||||
| 	// 		Expect(getSourceType).To(ContainSubstring("local")) | ||||
| 	// 	}) | ||||
| 	// }) | ||||
|  | ||||
| 	Context("odo component delete, list and describe", func() { | ||||
| 		appName := "app" | ||||
| @@ -605,7 +424,9 @@ func componentTests(args ...string) { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "example", "--context", commonVar.Context) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName, "URL,0,Name,example") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), cmpName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			// changing directory to the context directory | ||||
| @@ -624,7 +445,9 @@ func componentTests(args ...string) { | ||||
| 		It("should fail outside a odo directory without component name as parameter", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), cmpName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			// commands should fail as the component name is missing | ||||
| @@ -632,22 +455,25 @@ func componentTests(args ...string) { | ||||
| 			helper.CmdShouldFail("odo", append(args, "delete", "-f", "--app", appName, "--project", commonVar.Project)...) | ||||
| 		}) | ||||
|  | ||||
| 		It("should pass outside a odo directory with component name as parameter", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 		// issue https://github.com/openshift/odo/issues/4451 | ||||
| 		// It("should pass outside a odo directory with component name as parameter", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 		// 	info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 		// 	Expect(info.GetApplication(), appName) | ||||
| 		// 	Expect(info.GetName(), cmpName) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			cmpListOutput := helper.CmdShouldPass("odo", append(args, "list", "--app", appName, "--project", commonVar.Project)...) | ||||
| 			Expect(cmpListOutput).To(ContainSubstring(cmpName)) | ||||
| 		// 	cmpListOutput := helper.CmdShouldPass("odo", append(args, "list", "--app", appName, "--project", commonVar.Project)...) | ||||
| 		// 	Expect(cmpListOutput).To(ContainSubstring(cmpName)) | ||||
|  | ||||
| 			actualDesCompJSON := helper.CmdShouldPass("odo", append(args, "describe", cmpName, "--app", appName, "--project", commonVar.Project, "-o", "json")...) | ||||
| 			valuesDescCJ := gjson.GetMany(actualDesCompJSON, "kind", "metadata.name", "spec.app", "spec.type", "status.state") | ||||
| 			expectedDescCJ := []string{"Component", "nodejs", "app", "nodejs", "Pushed"} | ||||
| 			Expect(helper.GjsonMatcher(valuesDescCJ, expectedDescCJ)).To(Equal(true)) | ||||
| 		// 	actualDesCompJSON := helper.CmdShouldPass("odo", append(args, "describe", cmpName, "--app", appName, "--project", commonVar.Project, "-o", "json")...) | ||||
| 		// 	valuesDescCJ := gjson.GetMany(actualDesCompJSON, "kind", "metadata.name", "spec.app", "spec.type", "status.state") | ||||
| 		// 	expectedDescCJ := []string{"Component", "nodejs", "app", "nodejs", "Pushed"} | ||||
| 		// 	Expect(helper.GjsonMatcher(valuesDescCJ, expectedDescCJ)).To(Equal(true)) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", cmpName, "--app", appName, "--project", commonVar.Project, "-f")...) | ||||
| 		}) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "delete", cmpName, "--app", appName, "--project", commonVar.Project, "-f")...) | ||||
| 		// }) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when running odo push multiple times, check for existence of environment variables", func() { | ||||
| @@ -661,16 +487,13 @@ func componentTests(args ...string) { | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "config", "set", "--env", "FOO=BAR") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+componentName, "Application,"+appName, "Ports,[8080/TCP]", "Envs,0,Name,FOO") | ||||
| 			ports := oc.GetDcPorts(componentName, appName, commonVar.Project) | ||||
| 			Expect(ports).To(ContainSubstring("8080")) | ||||
| 			dcName := oc.GetDcName(componentName, commonVar.Project) | ||||
| 			stdOut := helper.CmdShouldPass("oc", "get", "dc/"+dcName, "-n", commonVar.Project, "-o", "go-template={{ .spec.template.spec }}{{.env}}") | ||||
| 			Expect(stdOut).To(ContainSubstring("FOO")) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", append(args, "push")...) | ||||
| 			stdOut = oc.DescribeDc(dcName, commonVar.Project) | ||||
| 			Expect(stdOut).To(ContainSubstring("FOO")) | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), componentName) | ||||
| 			envVars := oc.GetEnvsDevFileDeployment(componentName, commonVar.Project) | ||||
| 			val, ok := envVars["FOO"] | ||||
| 			Expect(ok).To(BeTrue()) | ||||
| 			Expect(val).To(Equal("BAR")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| @@ -686,12 +509,14 @@ func componentTests(args ...string) { | ||||
| 			helper.DeleteDir(contextNumeric) | ||||
| 		}) | ||||
|  | ||||
| 		It("should create default named component in a directory with numeric name", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), contextNumeric) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", contextNumeric, "--app", "testing")...) | ||||
| 			helper.ValidateLocalCmpExist(contextNumeric, "Type,nodejs", "Application,testing") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", contextNumeric, "-v4")...) | ||||
| 		}) | ||||
| 		// issue https://github.com/openshift/odo/issues/4621 | ||||
| 		// It("should create default named component in a directory with numeric name", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "nodejs"), contextNumeric) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", "--project", commonVar.Project, "--context", contextNumeric, "--app", "testing")...) | ||||
| 		// 	info := helper.LocalEnvInfo(contextNumeric) | ||||
| 		// 	Expect(info.GetApplication(), "testing") | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push", "--context", contextNumeric, "-v4")...) | ||||
| 		// }) | ||||
| 	}) | ||||
|  | ||||
| 	Context("Creating component using symlink", func() { | ||||
| @@ -723,7 +548,10 @@ func componentTests(args ...string) { | ||||
|  | ||||
| 			// Create a URL and push without using the symlink | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "uberjaropenjdk", "--port", "8080", "--context", symLinkPath) | ||||
| 			helper.ValidateLocalCmpExist(symLinkPath, "Type,java:8", "Name,sb-jar-test", "Application,app", "URL,0,Name,uberjaropenjdk") | ||||
| 			info := helper.LocalEnvInfo(symLinkPath) | ||||
| 			Expect(info.GetApplication(), "app") | ||||
| 			Expect(info.GetName(), "sb-jar-test") | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", symLinkPath)...) | ||||
| 			routeURL := helper.DetermineRouteURL(symLinkPath) | ||||
|  | ||||
| @@ -741,7 +569,9 @@ func componentTests(args ...string) { | ||||
|  | ||||
| 			// Create a URL | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "warfile", "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,wildfly", "Name,javaee-war-test", "Application,app", "URL,0,Name,warfile") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), "app") | ||||
| 			Expect(info.GetName(), "javaee-war-test") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 			routeURL := helper.DetermineRouteURL(commonVar.Context) | ||||
|  | ||||
| @@ -763,7 +593,9 @@ func componentTests(args ...string) { | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "example-1", "--context", commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "storage", "create", "storage-1", "--size", "1Gi", "--path", "/data1", "--context", commonVar.Context) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName, "URL,0,Name,example-1") | ||||
| 			info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), cmpName) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "example-2", "--context", commonVar.Context) | ||||
| @@ -780,30 +612,33 @@ func componentTests(args ...string) { | ||||
| 			oc.WaitAndCheckForExistence("service", commonVar.Project, 1) | ||||
| 		}) | ||||
|  | ||||
| 		It("should delete the component and the owned resources with wait flag", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "example-1", "--context", commonVar.Context) | ||||
| 		// issue https://github.com/openshift/odo/issues/4593 | ||||
| 		// It("should delete the component and the owned resources with wait flag", func() { | ||||
| 		// 	helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "create", "--s2i", "nodejs", cmpName, "--app", appName, "--project", commonVar.Project, "--context", commonVar.Context)...) | ||||
| 		// 	helper.CmdShouldPass("odo", "url", "create", "example-1", "--context", commonVar.Context) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "storage", "create", "storage-1", "--size", "1Gi", "--path", "/data1", "--context", commonVar.Context) | ||||
| 			helper.ValidateLocalCmpExist(commonVar.Context, "Type,nodejs", "Name,"+cmpName, "Application,"+appName, "URL,0,Name,example-1") | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 		// 	helper.CmdShouldPass("odo", "storage", "create", "storage-1", "--size", "1Gi", "--path", "/data1", "--context", commonVar.Context) | ||||
| 		// 	info := helper.LocalEnvInfo(commonVar.Context) | ||||
| 		// 	Expect(info.GetApplication(), appName) | ||||
| 		// 	Expect(info.GetName(), cmpName) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			helper.CmdShouldPass("odo", "url", "create", "example-2", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "storage", "create", "storage-2", "--size", "1Gi", "--path", "/data2", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
| 		// 	helper.CmdShouldPass("odo", "url", "create", "example-2", "--context", commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", "storage", "create", "storage-2", "--size", "1Gi", "--path", "/data2", "--context", commonVar.Context) | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "push", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			// delete with --wait flag | ||||
| 			helper.CmdShouldPass("odo", append(args, "delete", "-f", "-w", "--context", commonVar.Context)...) | ||||
| 		// 	// delete with --wait flag | ||||
| 		// 	helper.CmdShouldPass("odo", append(args, "delete", "-f", "-w", "--context", commonVar.Context)...) | ||||
|  | ||||
| 			oc.VerifyResourceDeleted("routes", "example", commonVar.Project) | ||||
| 			oc.VerifyResourceDeleted("service", cmpName, commonVar.Project) | ||||
| 			// verify s2i pvc is delete | ||||
| 			oc.VerifyResourceDeleted("pvc", "s2idata", commonVar.Project) | ||||
| 			oc.VerifyResourceDeleted("pvc", "storage-1", commonVar.Project) | ||||
| 			oc.VerifyResourceDeleted("pvc", "storage-2", commonVar.Project) | ||||
| 			oc.VerifyResourceDeleted("dc", cmpName, commonVar.Project) | ||||
| 		}) | ||||
| 		// 	oc.VerifyResourceDeleted("routes", "example", commonVar.Project) | ||||
| 		// 	oc.VerifyResourceDeleted("service", cmpName, commonVar.Project) | ||||
| 		// 	// verify s2i pvc is delete | ||||
| 		// 	oc.VerifyResourceDeleted("pvc", "s2idata", commonVar.Project) | ||||
| 		// 	oc.VerifyResourceDeleted("pvc", "storage-1", commonVar.Project) | ||||
| 		// 	oc.VerifyResourceDeleted("pvc", "storage-2", commonVar.Project) | ||||
| 		// 	oc.VerifyResourceDeleted("dc", cmpName, commonVar.Project) | ||||
| 		// }) | ||||
|  | ||||
| 	}) | ||||
|  | ||||
| @@ -823,24 +658,17 @@ func componentTests(args ...string) { | ||||
| 			urlName := "url1" | ||||
| 			storageName := "storage1" | ||||
|  | ||||
| 			// create a s2i component | ||||
| 			// create a s2i component using --s2i that generates a devfile | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName, "--s2i") | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--app", appName) | ||||
| 			helper.CmdShouldPass("odo", "url", "create", urlName, "--port", "8080", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "storage", "create", storageName, "--path", "/data1", "--size", "1Gi", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			// convert it to devfile | ||||
| 			helper.CmdShouldPass("odo", "utils", "convert-to-devfile", "--context", commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 			// check the status of devfile component | ||||
| 			stdout := helper.CmdShouldPass("odo", "list", "--context", commonVar.Context) | ||||
| 			helper.MatchAllInOutput(stdout, []string{cmpName, "Devfile Components", "Pushed"}) | ||||
|  | ||||
| 			// delete the s2i component | ||||
| 			helper.CmdShouldPass("odo", "delete", "--s2i", "-a", "-f", "--context", commonVar.Context) | ||||
|  | ||||
| 			// verify the url | ||||
| 			stdout = helper.CmdShouldPass("odo", "url", "list", "--context", commonVar.Context) | ||||
|  | ||||
|   | ||||
| @@ -32,8 +32,12 @@ var _ = Describe("odo debug command serial tests", func() { | ||||
| 	}) | ||||
|  | ||||
| 	It("should auto-select a local debug port when the given local port is occupied", func() { | ||||
| 		projName := helper.GetCliRunner().CreateRandNamespaceProjectOfLength(5) | ||||
| 		defer func() { | ||||
| 			helper.GetCliRunner().DeleteNamespaceProject(projName) | ||||
| 		}() | ||||
| 		helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 		helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "nodejs-cmp-"+commonVar.Project, "--project", commonVar.Project, "--context", commonVar.Context) | ||||
| 		helper.CmdShouldPass("odo", "component", "create", "--s2i", "nodejs:latest", "nodejs-cmp", "--project", projName, "--context", commonVar.Context) | ||||
| 		helper.CmdShouldPass("odo", "push", "--context", commonVar.Context) | ||||
|  | ||||
| 		stopChannel := make(chan bool) | ||||
|   | ||||
| @@ -365,6 +365,8 @@ type OdoV2Watch struct { | ||||
| 	CmpName               string | ||||
| 	StringsToBeMatched    []string | ||||
| 	StringsNotToBeMatched []string | ||||
| 	FolderToCheck         string | ||||
| 	SrcType               string | ||||
| } | ||||
|  | ||||
| // OdoWatch creates files, dir in the context and watches for the changes to be pushed | ||||
| @@ -394,7 +396,11 @@ func OdoWatch(odoV1Watch OdoV1Watch, odoV2Watch OdoV2Watch, project, context, fl | ||||
| 			Expect(err).To(BeNil()) | ||||
|  | ||||
| 			if isDevfileTest { | ||||
| 				helper.ReplaceString(filepath.Join(context, "server.js"), "Hello", "Hello odo") | ||||
| 				if odoV2Watch.SrcType == "openjdk" { | ||||
| 					helper.ReplaceString(filepath.Join(context, "src", "main", "java", "MessageProducer.java"), "Hello", "Hello odo") | ||||
| 				} else { | ||||
| 					helper.ReplaceString(filepath.Join(context, "server.js"), "Hello", "Hello odo") | ||||
| 				} | ||||
| 			} else { | ||||
| 				helper.DeleteDir(filepath.Join(context, "abcd")) | ||||
| 				if odoV1Watch.SrcType == "openjdk" { | ||||
| @@ -590,9 +596,13 @@ func validateContainerExecListDir(odoV1Watch OdoV1Watch, odoV2Watch OdoV2Watch, | ||||
| 	switch platform { | ||||
| 	case "kube": | ||||
| 		if isDevfileTest { | ||||
| 			folderToCheck := "/projects" | ||||
| 			if odoV2Watch.FolderToCheck != "" { | ||||
| 				folderToCheck = odoV2Watch.FolderToCheck | ||||
| 			} | ||||
| 			cliRunner := runner.(helper.CliRunner) | ||||
| 			podName := cliRunner.GetRunningPodNameByComponent(odoV2Watch.CmpName, project) | ||||
| 			stdOut = cliRunner.ExecListDir(podName, project, "/projects") | ||||
| 			stdOut = cliRunner.ExecListDir(podName, project, folderToCheck) | ||||
| 		} else { | ||||
| 			ocRunner := runner.(helper.OcRunner) | ||||
| 			podName := ocRunner.GetRunningPodNameOfComp(odoV1Watch.SrcType+"-app", project) | ||||
|   | ||||
| @@ -4,7 +4,6 @@ import ( | ||||
| 	"path/filepath" | ||||
| 	"regexp" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
| @@ -181,13 +180,14 @@ var _ = Describe("odo generic", func() { | ||||
| 	}) | ||||
|  | ||||
| 	Context("when running odo push with flag --show-log", func() { | ||||
| 		// works | ||||
| 		It("should be able to push changes", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", "nodejs", "--project", commonVar.Project, "--context", commonVar.Context) | ||||
|  | ||||
| 			// Push the changes with --show-log | ||||
| 			getLogging := helper.CmdShouldPass("odo", "push", "--show-log", "--context", commonVar.Context) | ||||
| 			Expect(getLogging).To(ContainSubstring("Building component")) | ||||
| 			Expect(getLogging).To(ContainSubstring("Creating Kubernetes resources for component nodejs")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| @@ -248,38 +248,6 @@ var _ = Describe("odo generic", func() { | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("when component's deployment config is deleted with oc", func() { | ||||
| 		var componentRandomName string | ||||
|  | ||||
| 		JustBeforeEach(func() { | ||||
| 			componentRandomName = helper.RandString(6) | ||||
| 			helper.Chdir(commonVar.Context) | ||||
| 		}) | ||||
|  | ||||
| 		It("should delete all OpenShift objects except the component's imagestream", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 			helper.CmdShouldPass("odo", "create", "--s2i", "nodejs", componentRandomName, "--project", commonVar.Project) | ||||
| 			helper.CmdShouldPass("odo", "push") | ||||
|  | ||||
| 			// Delete the deployment config using oc delete | ||||
| 			dc := oc.GetDcName(componentRandomName, commonVar.Project) | ||||
| 			helper.CmdShouldPass("oc", "delete", "--wait", "dc", dc, "--namespace", commonVar.Project) | ||||
|  | ||||
| 			// insert sleep because it takes a few seconds to delete *all* | ||||
| 			// objects owned by DC but we should be able to check if a service | ||||
| 			// got deleted in a second. | ||||
| 			time.Sleep(1 * time.Second) | ||||
|  | ||||
| 			// now check if the service owned by the DC exists. Service name is | ||||
| 			// same as DC name for a given component. | ||||
| 			stdOut := helper.CmdShouldFail("oc", "get", "svc", dc, "--namespace", commonVar.Project) | ||||
| 			Expect(stdOut).To(ContainSubstring("NotFound")) | ||||
|  | ||||
| 			// ensure that the image stream still exists | ||||
| 			helper.CmdShouldPass("oc", "get", "is", dc, "--namespace", commonVar.Project) | ||||
| 		}) | ||||
| 	}) | ||||
|  | ||||
| 	Context("When using cpu or memory flag with odo create", func() { | ||||
| 		cmpName := "nodejs" | ||||
|  | ||||
| @@ -320,7 +288,7 @@ var _ = Describe("odo generic", func() { | ||||
| 			} | ||||
| 			for _, testCase := range cases { | ||||
| 				helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) | ||||
| 				output := helper.CmdShouldFail("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--"+testCase.paramName, testCase.paramValue) | ||||
| 				output := helper.CmdShouldFail("odo", "component", "create", "--s2i", "nodejs", cmpName, "--project", commonVar.Project, "--context", commonVar.Context, "--"+testCase.paramName, testCase.paramValue, "--git", "https://github.com/sclorg/nodejs-ex.git") | ||||
| 				Expect(output).To(ContainSubstring("unknown flag: --" + testCase.paramName)) | ||||
| 			} | ||||
| 		}) | ||||
|   | ||||
| @@ -54,7 +54,10 @@ var _ = Describe("Example of a clean test", func() { | ||||
| 			helper.CopyExample(filepath.Join("source", "nodejs"), context) | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "nodejs", cmpName, "--project", project) | ||||
| 			// verify that config was properly created | ||||
| 			helper.ValidateLocalCmpExist(context, "Type,nodejs", "Project,"+project, "Application,app") | ||||
| 			info := helper.LocalEnvInfo(context) | ||||
| 			Expect(info.GetApplication(), "app") | ||||
| 			Expect(info.GetName(), cmpName) | ||||
|  | ||||
| 			output := helper.CmdShouldPass("odo", "push") | ||||
| 			Expect(output).To(ContainSubstring("Changes successfully pushed to component")) | ||||
| 		}) | ||||
| @@ -65,7 +68,9 @@ var _ = Describe("Example of a clean test", func() { | ||||
| 			helper.CmdShouldPass("odo", "component", "create", "nodejs", cmpName, "--app", appName, "--project", project, "--context", context) | ||||
|  | ||||
| 			// verify that config was properly created | ||||
| 			helper.ValidateLocalCmpExist(context, "Type,nodejs", "Project,"+project, "Application,"+appName) | ||||
| 			info := helper.LocalEnvInfo(context) | ||||
| 			Expect(info.GetApplication(), appName) | ||||
| 			Expect(info.GetName(), cmpName) | ||||
| 			helper.CmdShouldPass("odo", "push") | ||||
|  | ||||
| 			// list the component name | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Girish Ramnani
					Girish Ramnani