github.com/bdwilliams/libcompose@v0.3.1-0.20160826154243-d81a9bdacff0/integration/volume_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"fmt"
     5  	"os/exec"
     6  	"path/filepath"
     7  
     8  	. "gopkg.in/check.v1"
     9  )
    10  
    11  func (s *CliSuite) TestVolumeFromService(c *C) {
    12  	p := s.RandomProject()
    13  	cmd := exec.Command(s.command, "-f", "./assets/regression/60-volume_from.yml", "-p", p, "create")
    14  	err := cmd.Run()
    15  	c.Assert(err, IsNil)
    16  
    17  	volumeFromContainer := fmt.Sprintf("%s_%s_1", p, "first")
    18  	secondContainerName := p + "_second_1"
    19  
    20  	cn := s.GetContainerByName(c, secondContainerName)
    21  	c.Assert(cn, NotNil)
    22  
    23  	c.Assert(len(cn.HostConfig.VolumesFrom), Equals, 1)
    24  	c.Assert(cn.HostConfig.VolumesFrom[0], Equals, volumeFromContainer)
    25  }
    26  
    27  func (s *CliSuite) TestVolumeFromServiceWithContainerName(c *C) {
    28  	p := s.RandomProject()
    29  	cmd := exec.Command(s.command, "-f", "./assets/regression/volume_from_container_name.yml", "-p", p, "create")
    30  	err := cmd.Run()
    31  	c.Assert(err, IsNil)
    32  
    33  	volumeFromContainer := "first_container_name"
    34  	secondContainerName := p + "_second_1"
    35  
    36  	cn := s.GetContainerByName(c, secondContainerName)
    37  	c.Assert(cn, NotNil)
    38  
    39  	c.Assert(len(cn.HostConfig.VolumesFrom), Equals, 1)
    40  	c.Assert(cn.HostConfig.VolumesFrom[0], Equals, volumeFromContainer)
    41  }
    42  
    43  func (s *CliSuite) TestRelativeVolume(c *C) {
    44  	p := s.ProjectFromText(c, "up", `
    45  	server:
    46  	  image: busybox
    47  	  volumes:
    48  	    - .:/path
    49  	`)
    50  
    51  	absPath, err := filepath.Abs(".")
    52  	c.Assert(err, IsNil)
    53  	serverName := fmt.Sprintf("%s_%s_1", p, "server")
    54  	cn := s.GetContainerByName(c, serverName)
    55  
    56  	c.Assert(cn, NotNil)
    57  	c.Assert(len(cn.Mounts), DeepEquals, 1)
    58  	c.Assert(cn.Mounts[0].Source, DeepEquals, absPath)
    59  	c.Assert(cn.Mounts[0].Destination, DeepEquals, "/path")
    60  }
    61  
    62  func (s *CliSuite) TestNamedVolume(c *C) {
    63  	p := s.ProjectFromText(c, "up", `
    64  	server:
    65  	  image: busybox
    66  	  volumes:
    67  	    - vol:/path
    68  	`)
    69  
    70  	serverName := fmt.Sprintf("%s_%s_1", p, "server")
    71  	cn := s.GetContainerByName(c, serverName)
    72  
    73  	c.Assert(cn, NotNil)
    74  	c.Assert(len(cn.Mounts), DeepEquals, 1)
    75  	c.Assert(cn.Mounts[0].Name, DeepEquals, "vol")
    76  	c.Assert(cn.Mounts[0].Destination, DeepEquals, "/path")
    77  }
    78  
    79  func (s *CliSuite) TestV2Volume(c *C) {
    80  	p := s.ProjectFromText(c, "up", `version: "2"
    81  services:
    82    with_volume:
    83      image: busybox
    84      volumes:
    85      - test:/test
    86  
    87  volumes:
    88    test: {}
    89    test2: {}
    90  `)
    91  
    92  	v := s.GetVolumeByName(c, p+"_test")
    93  	c.Assert(v, NotNil)
    94  
    95  	v = s.GetVolumeByName(c, p+"_test2")
    96  	c.Assert(v, NotNil)
    97  }