// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package docker import ( "testing" docker "github.com/fsouza/go-dockerclient" "github.com/hashicorp/nomad/ci" "github.com/hashicorp/nomad/plugins/drivers" "github.com/stretchr/testify/assert" ) func TestDriver_createSandboxContainerConfig(t *testing.T) { ci.Parallel(t) testCases := []struct { inputAllocID string inputNetworkCreateRequest *drivers.NetworkCreateRequest expectedOutputOpts *docker.CreateContainerOptions name string }{ { inputAllocID: "768b5e8c-a52e-825c-d564-51100230eb62", inputNetworkCreateRequest: &drivers.NetworkCreateRequest{ Hostname: "", }, expectedOutputOpts: &docker.CreateContainerOptions{ Name: "nomad_init_768b5e8c-a52e-825c-d564-51100230eb62", Config: &docker.Config{ Image: "gcr.io/google_containers/pause-amd64:3.1", Labels: map[string]string{ dockerLabelAllocID: "768b5e8c-a52e-825c-d564-51100230eb62", }, }, HostConfig: &docker.HostConfig{ NetworkMode: "none", RestartPolicy: docker.RestartUnlessStopped(), }, }, name: "no input hostname", }, { inputAllocID: "768b5e8c-a52e-825c-d564-51100230eb62", inputNetworkCreateRequest: &drivers.NetworkCreateRequest{ Hostname: "linux", }, expectedOutputOpts: &docker.CreateContainerOptions{ Name: "nomad_init_768b5e8c-a52e-825c-d564-51100230eb62", Config: &docker.Config{ Image: "gcr.io/google_containers/pause-amd64:3.1", Hostname: "linux", Labels: map[string]string{ dockerLabelAllocID: "768b5e8c-a52e-825c-d564-51100230eb62", }, }, HostConfig: &docker.HostConfig{ NetworkMode: "none", RestartPolicy: docker.RestartUnlessStopped(), }, }, name: "supplied input hostname", }, } d := &Driver{ config: &DriverConfig{ InfraImage: "gcr.io/google_containers/pause-amd64:3.1", }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { actualOutput, err := d.createSandboxContainerConfig(tc.inputAllocID, tc.inputNetworkCreateRequest) assert.Nil(t, err, tc.name) assert.Equal(t, tc.expectedOutputOpts, actualOutput, tc.name) }) } }