github.com/gust1n/deis@v0.13.1-0.20141009230754-43ff4d95947b/tests/builds_test.go (about)

     1  // +build integration
     2  
     3  package tests
     4  
     5  import (
     6  	"bytes"
     7  	"os"
     8  	"os/exec"
     9  	"strings"
    10  	"testing"
    11  	"text/template"
    12  	"time"
    13  
    14  	"github.com/deis/deis/tests/utils"
    15  )
    16  
    17  var (
    18  	buildsListCmd   = "builds:list --app={{.AppName}}"
    19  	buildsCreateCmd = "builds:create {{.ImageID}} --app={{.AppName}}"
    20  )
    21  
    22  func TestBuilds(t *testing.T) {
    23  	params := buildSetup(t)
    24  	buildsListTest(t, params)
    25  	appsOpenTest(t, params)
    26  	utils.AppsDestroyTest(t, params)
    27  	buildsCreateTest(t, params)
    28  	// TODO: router needs a few seconds to wake up here--fixme!
    29  	time.Sleep(5000 * time.Millisecond)
    30  	appsOpenTest(t, params)
    31  	utils.AppsDestroyTest(t, params)
    32  }
    33  
    34  func buildSetup(t *testing.T) *utils.DeisTestConfig {
    35  	cfg := utils.GetGlobalConfig()
    36  	cfg.AppName = "buildsample"
    37  	utils.Execute(t, authLoginCmd, cfg, false, "")
    38  	utils.Execute(t, gitCloneCmd, cfg, false, "")
    39  	if err := utils.Chdir(cfg.ExampleApp); err != nil {
    40  		t.Fatal(err)
    41  	}
    42  	utils.Execute(t, appsCreateCmd, cfg, false, "")
    43  	utils.Execute(t, gitPushCmd, cfg, false, "")
    44  	if err := utils.CreateFile(cfg.ExampleApp); err != nil {
    45  		t.Fatal(err)
    46  	}
    47  	utils.Execute(t, gitAddCmd, cfg, false, "")
    48  	utils.Execute(t, gitCommitCmd, cfg, false, "")
    49  	utils.Execute(t, gitPushCmd, cfg, false, "")
    50  	if err := utils.Chdir(".."); err != nil {
    51  		t.Fatal(err)
    52  	}
    53  	return cfg
    54  }
    55  
    56  func buildsListTest(t *testing.T, params *utils.DeisTestConfig) {
    57  	cmd := buildsListCmd
    58  	var cmdBuf bytes.Buffer
    59  	tmpl := template.Must(template.New("cmd").Parse(cmd))
    60  	if err := tmpl.Execute(&cmdBuf, params); err != nil {
    61  		t.Fatal(err)
    62  	}
    63  	cmdString := cmdBuf.String()
    64  	cmdl := exec.Command("sh", "-c", utils.Deis+cmdString)
    65  	stdout, _, err := utils.RunCommandWithStdoutStderr(cmdl)
    66  	if err != nil {
    67  		t.Fatal(err)
    68  	}
    69  	ImageID := strings.Split(stdout.String(), "\n")[2]
    70  	params.ImageID = strings.Fields(ImageID)[0]
    71  }
    72  
    73  // buildsCreateTest uses the `deis builds:create` (or `deis pull`) command
    74  // to promote a build from an existing docker image.
    75  func buildsCreateTest(t *testing.T, params *utils.DeisTestConfig) {
    76  	params.AppName = "deispullsample"
    77  	params.ImageID = "deis/example-go:latest"
    78  	params.ExampleApp = "example-deis-pull"
    79  	if err := os.Mkdir(params.ExampleApp, 0755); err != nil {
    80  		t.Fatal(err)
    81  	}
    82  	if err := utils.Chdir(params.ExampleApp); err != nil {
    83  		t.Fatal(err)
    84  	}
    85  	utils.Execute(t, appsCreateCmdNoRemote, params, false, "")
    86  	utils.Execute(t, buildsCreateCmd, params, false, "")
    87  	if err := utils.Chdir(".."); err != nil {
    88  		t.Fatal(err)
    89  	}
    90  }