github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/test/sealer_images_test.go (about)

     1  // Copyright © 2021 Alibaba Group Holding Ltd.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package test
    16  
    17  import (
    18  	"fmt"
    19  
    20  	. "github.com/onsi/ginkgo"
    21  
    22  	"github.com/alibaba/sealer/test/suites/build"
    23  	"github.com/alibaba/sealer/test/suites/image"
    24  	"github.com/alibaba/sealer/test/suites/registry"
    25  	"github.com/alibaba/sealer/test/testhelper"
    26  	"github.com/alibaba/sealer/test/testhelper/settings"
    27  )
    28  
    29  var _ = Describe("sealer image", func() {
    30  	Context("pull image", func() {
    31  
    32  		It(fmt.Sprintf("pull image %s", settings.TestImageName), func() {
    33  			image.DoImageOps(settings.SubCmdListOfSealer, settings.TestImageName)
    34  			image.DoImageOps(settings.SubCmdPullOfSealer, settings.TestImageName)
    35  			testhelper.CheckBeTrue(build.CheckIsImageExist(settings.TestImageName))
    36  			By("show image metadata", func() {
    37  				testhelper.RunCmdAndCheckResult(fmt.Sprintf("%s inspect %s", settings.DefaultSealerBin, image.GetImageID(settings.TestImageName)), 0)
    38  			})
    39  
    40  			tagImageNames := []string{
    41  				"e2eimage_test:latest",
    42  				"e2eimage_test:v0.0.1",
    43  				"sealer-io/e2eimage_test:v0.0.2",
    44  				"registry.cn-qingdao.aliyuncs.com/sealer-io/e2eimage_test:v0.0.3",
    45  			}
    46  			By("tag by image name", func() {
    47  				image.TagImageList(settings.TestImageName, tagImageNames)
    48  				image.DoImageOps(settings.SubCmdListOfSealer, "")
    49  				image.RemoveImageList(tagImageNames)
    50  			})
    51  
    52  			By("tag by image id", func() {
    53  				imageID := image.GetImageID(settings.TestImageName)
    54  				image.TagImageList(imageID, tagImageNames)
    55  				image.DoImageOps(settings.SubCmdListOfSealer, "")
    56  				image.RemoveImageList(tagImageNames)
    57  			})
    58  
    59  			By("remove tag image", func() {
    60  				tagImageName := "e2e_images_test:v0.3"
    61  				image.DoImageOps(settings.SubCmdPullOfSealer, settings.TestImageName)
    62  				image.TagImages(settings.TestImageName, tagImageName)
    63  				testhelper.CheckBeTrue(build.CheckIsImageExist(tagImageName))
    64  				image.DoImageOps(settings.SubCmdRmiOfSealer, tagImageName)
    65  				testhelper.CheckNotBeTrue(build.CheckIsImageExist(tagImageName))
    66  			})
    67  
    68  			/*			// not support
    69  						By("force remove image", func() {
    70  							testhelper.CheckBeTrue(build.CheckIsImageExist(settings.TestImageName))
    71  							testImageName := "image_test:v0.0"
    72  							for i := 1; i <= 5; i++ {
    73  								image.TagImages(settings.TestImageName, testImageName+strconv.Itoa(i))
    74  								image.DoImageOps(settings.SubCmdListOfSealer, settings.TestImageName)
    75  								testhelper.CheckBeTrue(build.CheckIsImageExist(testImageName + strconv.Itoa(i)))
    76  							}
    77  							image.DoImageOps(settings.SubCmdForceRmiOfSealer, settings.TestImageName)
    78  							testhelper.CheckNotBeTrue(build.CheckIsImageExist(settings.TestImageName))
    79  							testhelper.CheckNotBeTrue(build.CheckIsImageExist(testImageName))
    80  						})*/
    81  		})
    82  
    83  		faultImageNames := []string{
    84  			fmt.Sprintf("%s/%s:latest", settings.DefaultImageName, settings.DefaultImageRepo),
    85  			fmt.Sprintf("%s:latest", settings.DefaultImageDomain),
    86  			fmt.Sprintf("%s:latest", settings.DefaultImageRepo),
    87  		}
    88  
    89  		for _, faultImageName := range faultImageNames {
    90  			faultImageName := faultImageName
    91  			It(fmt.Sprintf("pull fault image %s", faultImageName), func() {
    92  				sess, err := testhelper.Start(fmt.Sprintf("%s %s %s", settings.DefaultSealerBin, settings.SubCmdPullOfSealer, faultImageName))
    93  				testhelper.CheckErr(err)
    94  				testhelper.CheckNotExit0(sess, settings.DefaultWaiteTime)
    95  				testhelper.CheckNotBeTrue(build.CheckIsImageExist(faultImageName))
    96  			})
    97  		}
    98  
    99  	})
   100  
   101  	Context("remove image", func() {
   102  		It(fmt.Sprintf("remove image %s", settings.TestImageName), func() {
   103  			image.DoImageOps(settings.SubCmdListOfSealer, "")
   104  			image.DoImageOps(settings.SubCmdPullOfSealer, settings.TestImageName)
   105  			testhelper.CheckBeTrue(build.CheckIsImageExist(settings.TestImageName))
   106  			image.DoImageOps(settings.SubCmdRmiOfSealer, settings.TestImageName)
   107  			testhelper.CheckNotBeTrue(build.CheckIsImageExist(settings.TestImageName))
   108  		})
   109  
   110  	})
   111  
   112  	Context("push image", func() {
   113  		BeforeEach(func() {
   114  			registry.Login()
   115  			image.DoImageOps(settings.SubCmdPullOfSealer, settings.TestImageName)
   116  		})
   117  		AfterEach(func() {
   118  			registry.Logout()
   119  		})
   120  		It("push image", func() {
   121  			pushImageName := "registry.cn-qingdao.aliyuncs.com/sealer-io/e2e_image_test:v0.01"
   122  			image.TagImages(settings.TestImageName, pushImageName)
   123  			image.DoImageOps(settings.SubCmdPushOfSealer, pushImageName)
   124  		})
   125  	})
   126  })