github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/cli/opts/ulimit_test.go (about)

     1  package opts
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/docker/go-units"
     7  	"gotest.tools/v3/assert"
     8  )
     9  
    10  func TestUlimitOpt(t *testing.T) {
    11  	ulimitMap := map[string]*units.Ulimit{
    12  		"nofile": {Name: "nofile", Hard: 1024, Soft: 512},
    13  	}
    14  
    15  	ulimitOpt := NewUlimitOpt(&ulimitMap)
    16  
    17  	expected := "[nofile=512:1024]"
    18  	assert.Equal(t, ulimitOpt.String(), expected)
    19  
    20  	// Valid ulimit append to opts
    21  	err := ulimitOpt.Set("core=1024:1024")
    22  	assert.NilError(t, err)
    23  
    24  	err = ulimitOpt.Set("nofile")
    25  	assert.ErrorContains(t, err, "invalid ulimit argument")
    26  
    27  	// Invalid ulimit type returns an error and do not append to opts
    28  	err = ulimitOpt.Set("notavalidtype=1024:1024")
    29  	assert.ErrorContains(t, err, "invalid ulimit type")
    30  
    31  	expected = "[core=1024:1024 nofile=512:1024]"
    32  	assert.Equal(t, ulimitOpt.String(), expected)
    33  
    34  	// And test GetList
    35  	ulimits := ulimitOpt.GetList()
    36  	assert.Equal(t, len(ulimits), 2)
    37  }
    38  
    39  func TestUlimitOptSorting(t *testing.T) {
    40  	ulimitOpt := NewUlimitOpt(&map[string]*units.Ulimit{
    41  		"nofile": {Name: "nofile", Hard: 1024, Soft: 512},
    42  		"core":   {Name: "core", Hard: 1024, Soft: 1024},
    43  	})
    44  
    45  	expected := []*units.Ulimit{
    46  		{Name: "core", Hard: 1024, Soft: 1024},
    47  		{Name: "nofile", Hard: 1024, Soft: 512},
    48  	}
    49  
    50  	ulimits := ulimitOpt.GetList()
    51  	assert.DeepEqual(t, ulimits, expected)
    52  
    53  	assert.Equal(t, ulimitOpt.String(), "[core=1024:1024 nofile=512:1024]")
    54  }