github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/integration/v6/push/instances_test.go (about)

     1  package push
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccversion"
     5  	"code.cloudfoundry.org/cli/integration/helpers"
     6  
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  	. "github.com/onsi/gomega/gbytes"
    10  	. "github.com/onsi/gomega/gexec"
    11  )
    12  
    13  var _ = Describe("push with different instances values", func() {
    14  	var (
    15  		appName string
    16  	)
    17  
    18  	BeforeEach(func() {
    19  		appName = helpers.NewAppName()
    20  	})
    21  
    22  	When("instances flag is provided", func() {
    23  		When("instances flag is greater than 0", func() {
    24  			It("pushes an app with specified number of instances", func() {
    25  				helpers.WithHelloWorldApp(func(dir string) {
    26  					By("pushing an app with 2 instances")
    27  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    28  						PushCommandName, appName,
    29  						"-i", "2",
    30  					)
    31  					Eventually(session).Should(Say(`\s+instances:\s+2`))
    32  					Eventually(session).Should(Exit(0))
    33  
    34  					session = helpers.CF("app", appName)
    35  					Eventually(session).Should(Say(`instances:\s+\d/2`))
    36  					Eventually(session).Should(Exit(0))
    37  
    38  					By("updating an app with 1 instance")
    39  					session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    40  						PushCommandName, appName,
    41  						"-i", "1",
    42  					)
    43  					Eventually(session).Should(Say(`\-\s+instances:\s+2`))
    44  					Eventually(session).Should(Say(`\+\s+instances:\s+1`))
    45  					Eventually(session).Should(Exit(0))
    46  
    47  					session = helpers.CF("app", appName)
    48  					Eventually(session).Should(Say(`instances:\s+\d/1`))
    49  					Eventually(session).Should(Exit(0))
    50  				})
    51  			})
    52  		})
    53  
    54  		When("instances flag is set to 0", func() {
    55  			BeforeEach(func() {
    56  				helpers.SkipIfVersionLessThan(ccversion.MinVersionZeroAppInstancesV2)
    57  			})
    58  
    59  			When("the API version is above 3.27.0", func() {
    60  				BeforeEach(func() {
    61  					helpers.SkipIfVersionLessThan(ccversion.MinVersionApplicationFlowV3)
    62  				})
    63  
    64  				It("pushes an app with 0 instances", func() {
    65  					helpers.WithHelloWorldApp(func(dir string) {
    66  						By("pushing an app with 0 instances")
    67  						session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    68  							PushCommandName, appName,
    69  							"-i", "0",
    70  						)
    71  
    72  						Eventually(session).Should(Say(`\s+instances:\s+0`))
    73  						Eventually(session).Should(Exit(0))
    74  
    75  						session = helpers.CF("app", appName)
    76  						Eventually(session).Should(Say("There are no running instances of this process."))
    77  						Eventually(session).Should(Exit(0))
    78  
    79  						By("updating an app to 1 instance")
    80  						session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    81  							PushCommandName, appName,
    82  							"-i", "1",
    83  						)
    84  						Eventually(session).Should(Say(`\-\s+instances:\s+0`))
    85  						Eventually(session).Should(Say(`\+\s+instances:\s+1`))
    86  						Eventually(session).Should(Exit(0))
    87  
    88  						session = helpers.CF("app", appName)
    89  						Eventually(session).Should(Say(`instances:\s+\d/1`))
    90  						Eventually(session).Should(Exit(0))
    91  
    92  						By("updating an app back to 0 instances")
    93  						session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
    94  							PushCommandName, appName,
    95  							"-i", "0",
    96  						)
    97  						Eventually(session).Should(Say(`\-\s+instances:\s+1`))
    98  						Eventually(session).Should(Say(`\+\s+instances:\s+0`))
    99  						Eventually(session).Should(Exit(0))
   100  
   101  						session = helpers.CF("app", appName)
   102  						Eventually(session).Should(Say("There are no running instances of this process."))
   103  						Eventually(session).Should(Exit(0))
   104  					})
   105  				})
   106  			})
   107  
   108  		})
   109  	})
   110  
   111  	When("instances flag is not provided", func() {
   112  		When("app does not exist", func() {
   113  			It("pushes an app with default number of instances", func() {
   114  				helpers.WithHelloWorldApp(func(dir string) {
   115  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
   116  						PushCommandName, appName,
   117  					)
   118  					Eventually(session).Should(Say(`\s+instances:\s+1`))
   119  					Eventually(session).Should(Exit(0))
   120  				})
   121  
   122  				session := helpers.CF("app", appName)
   123  				Eventually(session).Should(Say(`instances:\s+\d/1`))
   124  				Eventually(session).Should(Exit(0))
   125  			})
   126  		})
   127  
   128  		When("app exists with some instances", func() {
   129  			It("does not update the number of instances", func() {
   130  				helpers.WithHelloWorldApp(func(dir string) {
   131  					By("pushing an app with 2 instances")
   132  					session := helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
   133  						PushCommandName, appName,
   134  						"-i", "2",
   135  					)
   136  					Eventually(session).Should(Say(`\s+instances:\s+2`))
   137  					Eventually(session).Should(Exit(0))
   138  
   139  					session = helpers.CF("app", appName)
   140  					Eventually(session).Should(Say(`instances:\s+\d/2`))
   141  					Eventually(session).Should(Exit(0))
   142  
   143  					By("pushing an app with no instances specified")
   144  					session = helpers.CustomCF(helpers.CFEnv{WorkingDirectory: dir},
   145  						PushCommandName, appName,
   146  					)
   147  					Eventually(session).Should(Say(`\s+instances:\s+2`))
   148  					Eventually(session).Should(Exit(0))
   149  				})
   150  			})
   151  		})
   152  	})
   153  })