
- Rename test name - Add a tag to the container image used in the tests instead of the latest tag - Add a 5 second delay between container start and stop to ensure that the container is fully initialized Signed-off-by: Kirtana Ashok <Kirtana.Ashok@microsoft.com>
117 lines
3.0 KiB
Go
117 lines
3.0 KiB
Go
/*
|
|
Copyright The containerd Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package images
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"sync"
|
|
|
|
"github.com/pelletier/go-toml"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var imageListFile = flag.String("image-list", "", "The TOML file containing the non-default images to be used in tests.")
|
|
|
|
// ImageList holds public image references
|
|
type ImageList struct {
|
|
Alpine string
|
|
BusyBox string
|
|
Pause string
|
|
ResourceConsumer string
|
|
VolumeCopyUp string
|
|
VolumeOwnership string
|
|
ArgsEscaped string
|
|
}
|
|
|
|
var (
|
|
imageMap map[int]string
|
|
imageList ImageList
|
|
)
|
|
|
|
var initOnce sync.Once
|
|
|
|
func initImages(imageListFile string) {
|
|
imageList = ImageList{
|
|
Alpine: "ghcr.io/containerd/alpine:3.14.0",
|
|
BusyBox: "ghcr.io/containerd/busybox:1.36",
|
|
Pause: "registry.k8s.io/pause:3.8",
|
|
ResourceConsumer: "registry.k8s.io/e2e-test-images/resource-consumer:1.10",
|
|
VolumeCopyUp: "ghcr.io/containerd/volume-copy-up:2.1",
|
|
VolumeOwnership: "ghcr.io/containerd/volume-ownership:2.1",
|
|
ArgsEscaped: "cplatpublic.azurecr.io/args-escaped-test-image-ns:1.0",
|
|
}
|
|
|
|
if imageListFile != "" {
|
|
logrus.Infof("loading image list from file: %s", imageListFile)
|
|
|
|
fileContent, err := os.ReadFile(imageListFile)
|
|
if err != nil {
|
|
panic(fmt.Errorf("error reading '%v' file contents: %v", imageList, err))
|
|
}
|
|
|
|
err = toml.Unmarshal(fileContent, &imageList)
|
|
if err != nil {
|
|
panic(fmt.Errorf("error unmarshalling '%v' TOML file: %v", imageList, err))
|
|
}
|
|
}
|
|
|
|
logrus.Infof("Using the following image list: %+v", imageList)
|
|
imageMap = initImageMap(imageList)
|
|
}
|
|
|
|
const (
|
|
// None is to be used for unset/default images
|
|
None = iota
|
|
// Alpine image
|
|
Alpine
|
|
// BusyBox image
|
|
BusyBox
|
|
// Pause image
|
|
Pause
|
|
// ResourceConsumer image
|
|
ResourceConsumer
|
|
// VolumeCopyUp image
|
|
VolumeCopyUp
|
|
// VolumeOwnership image
|
|
VolumeOwnership
|
|
// Test image for ArgsEscaped windows bug
|
|
ArgsEscaped
|
|
)
|
|
|
|
func initImageMap(imageList ImageList) map[int]string {
|
|
images := map[int]string{}
|
|
images[Alpine] = imageList.Alpine
|
|
images[BusyBox] = imageList.BusyBox
|
|
images[Pause] = imageList.Pause
|
|
images[ResourceConsumer] = imageList.ResourceConsumer
|
|
images[VolumeCopyUp] = imageList.VolumeCopyUp
|
|
images[VolumeOwnership] = imageList.VolumeOwnership
|
|
images[ArgsEscaped] = imageList.ArgsEscaped
|
|
return images
|
|
}
|
|
|
|
// Get returns the fully qualified URI to an image (including version)
|
|
func Get(image int) string {
|
|
initOnce.Do(func() {
|
|
initImages(*imageListFile)
|
|
})
|
|
|
|
return imageMap[image]
|
|
}
|