@@ -74,10 +74,10 @@ func (s *DockerSuite) TestLoadFromLocalTarDelta(c *check.C) {
7474 defer printTestDuration (time .Now ())
7575 testRequires (c , DaemonIsLinux )
7676
77- baseURL := "https ://image-tarball.s3.amazonaws.com/test/public/debian_stretch-slim.tar.gz"
77+ baseURL := "http ://image-tarball.s3.amazonaws.com/test/public/debian_stretch-slim.tar.gz"
7878 basePath := fmt .Sprintf ("%s/debian_stretch-slim.tar.gz" , os .Getenv ("IMAGE_DIR" ))
7979
80- publicURL := "https ://image-tarball.s3.amazonaws.com/test/public/nginx_stable.tar.gz"
80+ publicURL := "http ://image-tarball.s3.amazonaws.com/test/public/nginx_stable.tar.gz"
8181 imagePath := fmt .Sprintf ("%s/nginx_stable.tar.gz" , os .Getenv ("IMAGE_DIR" ))
8282
8383 //download base image tar
@@ -173,7 +173,7 @@ func (s *DockerSuite) TestLoadFromLocalTarSize100MB(c *check.C) {
173173 defer printTestDuration (time .Now ())
174174 testRequires (c , DaemonIsLinux )
175175
176- publicURL := "https ://image-tarball.s3.amazonaws.com/test/public/nginx_stable.tar"
176+ publicURL := "http ://image-tarball.s3.amazonaws.com/test/public/nginx_stable.tar"
177177 imagePath := fmt .Sprintf ("%s/nginx_stable.tar" , os .Getenv ("IMAGE_DIR" ))
178178
179179 //download image tar
@@ -199,6 +199,68 @@ func (s *DockerSuite) TestLoadFromLocalTarSize100MB(c *check.C) {
199199 c .Assert (images , checker .Contains , "nginx" )
200200}
201201
202+ func (s * DockerSuite ) TestLoadFromLocalTarSize600MB (c * check.C ) {
203+ printTestCaseName ()
204+ defer printTestDuration (time .Now ())
205+ testRequires (c , DaemonIsLinux )
206+
207+ publicURL := "http://image-tarball.s3.amazonaws.com/test/public/jenkins.tar"
208+ imagePath := fmt .Sprintf ("%s/jenkins.tar" , os .Getenv ("IMAGE_DIR" ))
209+
210+ //download image tar
211+ wgetCmd := exec .Command ("wget" , "-cO" , imagePath , publicURL )
212+ output , exitCode , err := runCommandWithOutput (wgetCmd )
213+ c .Assert (exitCode , checker .Equals , 0 )
214+ c .Assert (err , checker .IsNil )
215+ c .Assert (pathExist (imagePath ), checker .Equals , true )
216+
217+ //ensure jenkins:latest not exist
218+ dockerCmdWithError ("rmi" , "jenkins:latest" )
219+ images , _ := dockerCmd (c , "images" , "jenkins:latest" )
220+ c .Assert (images , checker .Not (checker .Contains ), "jenkins" )
221+
222+ //load image tar
223+ output , exitCode , err = dockerCmdWithError ("load" , "-i" , imagePath )
224+ c .Assert (output , checker .Contains , "has been loaded." )
225+ c .Assert (err , checker .IsNil )
226+ c .Assert (exitCode , checker .Equals , 0 )
227+
228+ //check image
229+ images , _ = dockerCmd (c , "images" , "jenkins:latest" )
230+ c .Assert (images , checker .Contains , "jenkins" )
231+ }
232+
233+ func (s * DockerSuite ) TestLoadFromLocalPullAndLoad (c * check.C ) {
234+ printTestCaseName ()
235+ defer printTestDuration (time .Now ())
236+ testRequires (c , DaemonIsLinux )
237+
238+ publicURL := "http://image-tarball.s3.amazonaws.com/test/public/debian-8_5.tar.gz"
239+ imagePath := fmt .Sprintf ("%s/debian-8_5.tar.gz" , os .Getenv ("IMAGE_DIR" ))
240+
241+ //download image tar
242+ wgetCmd := exec .Command ("wget" , "-cO" , imagePath , publicURL )
243+ output , exitCode , err := runCommandWithOutput (wgetCmd )
244+ c .Assert (exitCode , checker .Equals , 0 )
245+ c .Assert (err , checker .IsNil )
246+ c .Assert (pathExist (imagePath ), checker .Equals , true )
247+
248+ //ensure debian:8.5 exist
249+ dockerCmdWithError ("pull" , "debian:8.5" )
250+ images , _ := dockerCmd (c , "images" , "debian:8.5" )
251+ c .Assert (images , checker .Contains , "debian" )
252+
253+ //load image tar
254+ output , exitCode , err = dockerCmdWithError ("load" , "-i" , imagePath )
255+ c .Assert (output , checker .Contains , "has been loaded." )
256+ c .Assert (err , checker .IsNil )
257+ c .Assert (exitCode , checker .Equals , 0 )
258+
259+ //check image
260+ images , _ = dockerCmd (c , "images" , "debian:8.5" )
261+ c .Assert (images , checker .Contains , "debian" )
262+ }
263+
202264//test abnormal///////////////////////////////////////////////////////////////////////////
203265func (s * DockerSuite ) TestLoadFromLocalMultipeImage (c * check.C ) {
204266 printTestCaseName ()
@@ -229,6 +291,47 @@ func (s *DockerSuite) TestLoadFromLocalMultipeImage(c *check.C) {
229291 c .Assert (images , checker .Not (checker .Contains ), "alpine" )
230292}
231293
294+ func (s * DockerSuite ) TestLoadFromLocalTarEmpty (c * check.C ) {
295+ printTestCaseName ()
296+ defer printTestDuration (time .Now ())
297+ testRequires (c , DaemonIsLinux )
298+
299+ //generate empty image tar
300+ imagePath := fmt .Sprintf ("%s/empty.tar" , os .Getenv ("IMAGE_DIR" ))
301+ os .OpenFile (imagePath , os .O_RDONLY | os .O_CREATE , 0666 )
302+ f , err := os .OpenFile (imagePath , os .O_CREATE , 0600 )
303+ c .Assert (err , checker .IsNil )
304+ f .Close ()
305+
306+ //load image tar
307+ output , exitCode , err := dockerCmdWithError ("load" , "-i" , imagePath )
308+ c .Assert (output , checker .Contains , "manifest.json: no such file or directory" )
309+ c .Assert (err , checker .NotNil )
310+ c .Assert (exitCode , checker .Not (checker .Equals ), 0 )
311+ }
312+
313+ func (s * DockerSuite ) TestLoadFromLocalTarLegacy (c * check.C ) {
314+ printTestCaseName ()
315+ defer printTestDuration (time .Now ())
316+ testRequires (c , DaemonIsLinux )
317+
318+ publicURL := "http://image-tarball.s3.amazonaws.com/test/public/old/ubuntu_1.8.tar.gz"
319+ imagePath := fmt .Sprintf ("%s/ubuntu_1.8.tar.gz" , os .Getenv ("IMAGE_DIR" ))
320+
321+ //download image tar
322+ wgetCmd := exec .Command ("wget" , "-cO" , imagePath , publicURL )
323+ output , exitCode , err := runCommandWithOutput (wgetCmd )
324+ c .Assert (pathExist (imagePath ), checker .Equals , true )
325+ c .Assert (exitCode , checker .Equals , 0 )
326+ c .Assert (err , checker .IsNil )
327+
328+ //load image tar
329+ output , exitCode , err = dockerCmdWithError ("load" , "-i" , imagePath )
330+ c .Assert (output , checker .Contains , "manifest.json: no such file or directory" )
331+ c .Assert (err , checker .NotNil )
332+ c .Assert (exitCode , checker .Not (checker .Equals ), 0 )
333+ }
334+
232335/*
233336// TODO
234337//Prerequisite: update image balance to 1 in tenant collection of hypernetes in mongodb
0 commit comments