浏览代码

Merge pull request #12360 from yestin/11601-supplement-tests-part-2

Improve test accuracy for pkg/chrootarchive (part 2)
Phil Estes 10 年之前
父节点
当前提交
da697dbed6
共有 1 个文件被更改,包括 38 次插入0 次删除
  1. 38 0
      pkg/chrootarchive/archive_test.go

+ 38 - 0
pkg/chrootarchive/archive_test.go

@@ -3,6 +3,7 @@ package chrootarchive
 import (
 import (
 	"bytes"
 	"bytes"
 	"fmt"
 	"fmt"
+	"hash/crc32"
 	"io"
 	"io"
 	"io/ioutil"
 	"io/ioutil"
 	"os"
 	"os"
@@ -113,6 +114,16 @@ func prepareSourceDirectory(numberOfFiles int, targetPath string, makeSymLinks b
 	return totalSize, nil
 	return totalSize, nil
 }
 }
 
 
+func getHash(filename string) (uint32, error) {
+	stream, err := ioutil.ReadFile(filename)
+	if err != nil {
+		return 0, err
+	}
+	hash := crc32.NewIEEE()
+	hash.Write(stream)
+	return hash.Sum32(), nil
+}
+
 func compareDirectories(src string, dest string) error {
 func compareDirectories(src string, dest string) error {
 	changes, err := archive.ChangesDirs(dest, src)
 	changes, err := archive.ChangesDirs(dest, src)
 	if err != nil {
 	if err != nil {
@@ -124,6 +135,21 @@ func compareDirectories(src string, dest string) error {
 	return nil
 	return nil
 }
 }
 
 
+func compareFiles(src string, dest string) error {
+	srcHash, err := getHash(src)
+	if err != nil {
+		return err
+	}
+	destHash, err := getHash(dest)
+	if err != nil {
+		return err
+	}
+	if srcHash != destHash {
+		return fmt.Errorf("%s is different from %s", src, dest)
+	}
+	return nil
+}
+
 func TestChrootTarUntarWithSymlink(t *testing.T) {
 func TestChrootTarUntarWithSymlink(t *testing.T) {
 	tmpdir, err := ioutil.TempDir("", "docker-TestChrootTarUntarWithSymlink")
 	tmpdir, err := ioutil.TempDir("", "docker-TestChrootTarUntarWithSymlink")
 	if err != nil {
 	if err != nil {
@@ -176,6 +202,9 @@ func TestChrootCopyWithTar(t *testing.T) {
 	if err := CopyWithTar(srcfile, destfile); err != nil {
 	if err := CopyWithTar(srcfile, destfile); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
+	if err := compareFiles(srcfile, destfile); err != nil {
+		t.Fatal(err)
+	}
 
 
 	// Copy symbolic link
 	// Copy symbolic link
 	srcLinkfile := filepath.Join(src, "file-1-link")
 	srcLinkfile := filepath.Join(src, "file-1-link")
@@ -184,6 +213,9 @@ func TestChrootCopyWithTar(t *testing.T) {
 	if err := CopyWithTar(srcLinkfile, destLinkfile); err != nil {
 	if err := CopyWithTar(srcLinkfile, destLinkfile); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
+	if err := compareFiles(srcLinkfile, destLinkfile); err != nil {
+		t.Fatal(err)
+	}
 }
 }
 
 
 func TestChrootCopyFileWithTar(t *testing.T) {
 func TestChrootCopyFileWithTar(t *testing.T) {
@@ -213,6 +245,9 @@ func TestChrootCopyFileWithTar(t *testing.T) {
 	if err := CopyFileWithTar(srcfile, destfile); err != nil {
 	if err := CopyFileWithTar(srcfile, destfile); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
+	if err := compareFiles(srcfile, destfile); err != nil {
+		t.Fatal(err)
+	}
 
 
 	// Copy symbolic link
 	// Copy symbolic link
 	srcLinkfile := filepath.Join(src, "file-1-link")
 	srcLinkfile := filepath.Join(src, "file-1-link")
@@ -221,6 +256,9 @@ func TestChrootCopyFileWithTar(t *testing.T) {
 	if err := CopyFileWithTar(srcLinkfile, destLinkfile); err != nil {
 	if err := CopyFileWithTar(srcLinkfile, destLinkfile); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
+	if err := compareFiles(srcLinkfile, destLinkfile); err != nil {
+		t.Fatal(err)
+	}
 }
 }
 
 
 func TestChrootUntarPath(t *testing.T) {
 func TestChrootUntarPath(t *testing.T) {