github.com/gondor/docker@v1.9.0-rc1/daemon/graphdriver/devmapper/devmapper_test.go (about)

     1  // +build linux
     2  
     3  package devmapper
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  
     9  	"github.com/docker/docker/daemon/graphdriver"
    10  	"github.com/docker/docker/daemon/graphdriver/graphtest"
    11  )
    12  
    13  func init() {
    14  	// Reduce the size the the base fs and loopback for the tests
    15  	defaultDataLoopbackSize = 300 * 1024 * 1024
    16  	defaultMetaDataLoopbackSize = 200 * 1024 * 1024
    17  	defaultBaseFsSize = 300 * 1024 * 1024
    18  	defaultUdevSyncOverride = true
    19  	if err := graphtest.InitLoopbacks(); err != nil {
    20  		panic(err)
    21  	}
    22  }
    23  
    24  // This avoids creating a new driver for each test if all tests are run
    25  // Make sure to put new tests between TestDevmapperSetup and TestDevmapperTeardown
    26  func TestDevmapperSetup(t *testing.T) {
    27  	graphtest.GetDriver(t, "devicemapper")
    28  }
    29  
    30  func TestDevmapperCreateEmpty(t *testing.T) {
    31  	graphtest.DriverTestCreateEmpty(t, "devicemapper")
    32  }
    33  
    34  func TestDevmapperCreateBase(t *testing.T) {
    35  	graphtest.DriverTestCreateBase(t, "devicemapper")
    36  }
    37  
    38  func TestDevmapperCreateSnap(t *testing.T) {
    39  	graphtest.DriverTestCreateSnap(t, "devicemapper")
    40  }
    41  
    42  func TestDevmapperTeardown(t *testing.T) {
    43  	graphtest.PutDriver(t)
    44  }
    45  
    46  func TestDevmapperReduceLoopBackSize(t *testing.T) {
    47  	tenMB := int64(10 * 1024 * 1024)
    48  	testChangeLoopBackSize(t, -tenMB, defaultDataLoopbackSize, defaultMetaDataLoopbackSize)
    49  }
    50  
    51  func TestDevmapperIncreaseLoopBackSize(t *testing.T) {
    52  	tenMB := int64(10 * 1024 * 1024)
    53  	testChangeLoopBackSize(t, tenMB, defaultDataLoopbackSize+tenMB, defaultMetaDataLoopbackSize+tenMB)
    54  }
    55  
    56  func testChangeLoopBackSize(t *testing.T, delta, expectDataSize, expectMetaDataSize int64) {
    57  	driver := graphtest.GetDriver(t, "devicemapper").(*graphtest.Driver).Driver.(*graphdriver.NaiveDiffDriver).ProtoDriver.(*Driver)
    58  	defer graphtest.PutDriver(t)
    59  	// make sure data or metadata loopback size are the default size
    60  	if s := driver.DeviceSet.Status(); s.Data.Total != uint64(defaultDataLoopbackSize) || s.Metadata.Total != uint64(defaultMetaDataLoopbackSize) {
    61  		t.Fatalf("data or metadata loop back size is incorrect")
    62  	}
    63  	if err := driver.Cleanup(); err != nil {
    64  		t.Fatal(err)
    65  	}
    66  	//Reload
    67  	d, err := Init(driver.home, []string{
    68  		fmt.Sprintf("dm.loopdatasize=%d", defaultDataLoopbackSize+delta),
    69  		fmt.Sprintf("dm.loopmetadatasize=%d", defaultMetaDataLoopbackSize+delta),
    70  	}, nil, nil)
    71  	if err != nil {
    72  		t.Fatalf("error creating devicemapper driver: %v", err)
    73  	}
    74  	driver = d.(*graphdriver.NaiveDiffDriver).ProtoDriver.(*Driver)
    75  	if s := driver.DeviceSet.Status(); s.Data.Total != uint64(expectDataSize) || s.Metadata.Total != uint64(expectMetaDataSize) {
    76  		t.Fatalf("data or metadata loop back size is incorrect")
    77  	}
    78  	if err := driver.Cleanup(); err != nil {
    79  		t.Fatal(err)
    80  	}
    81  }