package graphdriver // import "github.com/docker/docker/daemon/graphdriver" import ( "encoding/json" "testing" "github.com/docker/docker/pkg/idtools" "gotest.tools/v3/assert" ) func TestGraphDriverInitRequestIsCompatible(t *testing.T) { // Graph driver plugins may unmarshal into this version of the init // request struct. Verify that the serialization of // graphDriverInitRequest is fully backwards compatible. type graphDriverInitRequestV1 struct { Home string Opts []string `json:"Opts"` UIDMaps []idtools.IDMap `json:"UIDMaps"` GIDMaps []idtools.IDMap `json:"GIDMaps"` } args := graphDriverInitRequest{ Home: "homedir", Opts: []string{"option1", "option2"}, IdentityMapping: idtools.IdentityMapping{ UIDMaps: []idtools.IDMap{{ContainerID: 123, HostID: 456, Size: 42}}, GIDMaps: []idtools.IDMap{{ContainerID: 789, HostID: 1011, Size: 16}}, }, } v, err := json.Marshal(&args) assert.NilError(t, err) var got graphDriverInitRequestV1 assert.NilError(t, json.Unmarshal(v, &got)) want := graphDriverInitRequestV1{ Home: args.Home, Opts: args.Opts, UIDMaps: args.UIDMaps, GIDMaps: args.GIDMaps, } assert.DeepEqual(t, got, want) }