github.com/zhgqiang/libcompose@v0.4.1-0.20210112080336-bff7ba3690e1/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  	testRequires(c, not(DaemonVersionIs("1.9")))
    81  	p := s.ProjectFromText(c, "up", `version: "2"
    82  services:
    83    with_volume:
    84      image: busybox
    85      volumes:
    86      - test:/test
    87  
    88  volumes:
    89    test: {}
    90    test2: {}
    91  `)
    92  
    93  	v := s.GetVolumeByName(c, p+"_test")
    94  	c.Assert(v, NotNil)
    95  
    96  	v = s.GetVolumeByName(c, p+"_test2")
    97  	c.Assert(v, NotNil)
    98  }