github.com/econnell/deis@v1.5.1/tests/ps_test.go (about) 1 // +build integration 2 3 package tests 4 5 import ( 6 "fmt" 7 "os" 8 "strings" 9 "testing" 10 "time" 11 12 "github.com/deis/deis/tests/utils" 13 ) 14 15 var ( 16 psListCmd = "ps:list --app={{.AppName}}" 17 psScaleCmd = "ps:scale web={{.ProcessNum}} --app={{.AppName}}" 18 psDownScaleCmd = "ps:scale web=0 --app={{.AppName}}" 19 ) 20 21 func TestPs(t *testing.T) { 22 params := psSetup(t) 23 psScaleTest(t, params, psScaleCmd) 24 appsOpenTest(t, params) 25 psListTest(t, params, false) 26 psScaleTest(t, params, psDownScaleCmd) 27 28 // FIXME if we don't wait here, some of the routers may give us a 502 before 29 // the app is removed from the config. 30 // we wait 7 seconds since confd reloads every 5 seconds 31 time.Sleep(time.Millisecond * 7000) 32 33 // test for a 503 response 34 utils.CurlWithFail(t, fmt.Sprintf("http://%s.%s", params.AppName, params.Domain), true, "503") 35 36 utils.AppsDestroyTest(t, params) 37 utils.Execute(t, psScaleCmd, params, true, "404 NOT FOUND") 38 // ensure we can choose our preferred beverage 39 utils.Execute(t, psScaleCmd, params, true, "but first, coffee!") 40 if err := os.Setenv("DEIS_DRINK_OF_CHOICE", "tea"); err != nil { 41 t.Fatal(err) 42 } 43 utils.Execute(t, psScaleCmd, params, true, "but first, tea!") 44 } 45 46 func psSetup(t *testing.T) *utils.DeisTestConfig { 47 cfg := utils.GetGlobalConfig() 48 cfg.AppName = "pssample" 49 utils.Execute(t, authLoginCmd, cfg, false, "") 50 utils.Execute(t, gitCloneCmd, cfg, false, "") 51 if err := utils.Chdir(cfg.ExampleApp); err != nil { 52 t.Fatal(err) 53 } 54 utils.Execute(t, appsCreateCmd, cfg, false, "") 55 utils.Execute(t, gitPushCmd, cfg, false, "") 56 if err := utils.Chdir(".."); err != nil { 57 t.Fatal(err) 58 } 59 return cfg 60 } 61 62 func psListTest(t *testing.T, params *utils.DeisTestConfig, notflag bool) { 63 output := "web.2 up (v2)" 64 if strings.Contains(params.ExampleApp, "dockerfile") { 65 output = strings.Replace(output, "web", "cmd", 1) 66 } 67 utils.CheckList(t, psListCmd, params, output, notflag) 68 } 69 70 func psScaleTest(t *testing.T, params *utils.DeisTestConfig, cmd string) { 71 if strings.Contains(params.ExampleApp, "dockerfile") { 72 cmd = strings.Replace(cmd, "web", "cmd", 1) 73 } 74 utils.Execute(t, cmd, params, false, "") 75 }