Improve test accuracy for pkg/chrootarchive (part 1)
Check test correctness of untar by comparing destination with source. For part one, it only compares the directories. This is a supplement to the #11601 fix. Signed-off-by: Yestin Sun <yestin.sun@polyera.com>
This commit is contained in:
parent
4f5c0ee46d
commit
f16c4275d2
1 changed files with 49 additions and 15 deletions
|
@ -59,15 +59,15 @@ func TestChrootUntarEmptyArchive(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func prepareSourceDirectory(numberOfFiles int, targetPath string, makeLinks bool) (int, error) {
|
func prepareSourceDirectory(numberOfFiles int, targetPath string, makeSymLinks bool) (int, error) {
|
||||||
fileData := []byte("fooo")
|
fileData := []byte("fooo")
|
||||||
for n := 0; n < numberOfFiles; n++ {
|
for n := 0; n < numberOfFiles; n++ {
|
||||||
fileName := fmt.Sprintf("file-%d", n)
|
fileName := fmt.Sprintf("file-%d", n)
|
||||||
if err := ioutil.WriteFile(path.Join(targetPath, fileName), fileData, 0700); err != nil {
|
if err := ioutil.WriteFile(path.Join(targetPath, fileName), fileData, 0700); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
if makeLinks {
|
if makeSymLinks {
|
||||||
if err := os.Link(path.Join(targetPath, fileName), path.Join(targetPath, fileName+"-link")); err != nil {
|
if err := os.Symlink(path.Join(targetPath, fileName), path.Join(targetPath, fileName+"-link")); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,8 +76,19 @@ func prepareSourceDirectory(numberOfFiles int, targetPath string, makeLinks bool
|
||||||
return totalSize, nil
|
return totalSize, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChrootTarUntarWithSoftLink(t *testing.T) {
|
func compareDirectories(src string, dest string) error {
|
||||||
tmpdir, err := ioutil.TempDir("", "docker-TestChrootTarUntarWithSoftLink")
|
changes, err := archive.ChangesDirs(dest, src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(changes) > 0 {
|
||||||
|
return fmt.Errorf("Unexpected differences after untar: %v", changes)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestChrootTarUntarWithSymlink(t *testing.T) {
|
||||||
|
tmpdir, err := ioutil.TempDir("", "docker-TestChrootTarUntarWithSymlink")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -93,6 +104,9 @@ func TestChrootTarUntarWithSoftLink(t *testing.T) {
|
||||||
if err := TarUntar(src, dest); err != nil {
|
if err := TarUntar(src, dest); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if err := compareDirectories(src, dest); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChrootCopyWithTar(t *testing.T) {
|
func TestChrootCopyWithTar(t *testing.T) {
|
||||||
|
@ -108,19 +122,29 @@ func TestChrootCopyWithTar(t *testing.T) {
|
||||||
if _, err := prepareSourceDirectory(10, src, true); err != nil {
|
if _, err := prepareSourceDirectory(10, src, true); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
dest := filepath.Join(tmpdir, "dest")
|
|
||||||
// Copy directory
|
// Copy directory
|
||||||
|
dest := filepath.Join(tmpdir, "dest")
|
||||||
if err := CopyWithTar(src, dest); err != nil {
|
if err := CopyWithTar(src, dest); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
// Copy file
|
if err := compareDirectories(src, dest); err != nil {
|
||||||
srcfile := filepath.Join(src, "file-1")
|
|
||||||
if err := CopyWithTar(srcfile, dest); err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy file
|
||||||
|
srcfile := filepath.Join(src, "file-1")
|
||||||
|
dest = filepath.Join(tmpdir, "destFile")
|
||||||
|
destfile := filepath.Join(dest, "file-1")
|
||||||
|
if err := CopyWithTar(srcfile, destfile); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
// Copy symbolic link
|
// Copy symbolic link
|
||||||
linkfile := filepath.Join(src, "file-1-link")
|
srcLinkfile := filepath.Join(src, "file-1-link")
|
||||||
if err := CopyWithTar(linkfile, dest); err != nil {
|
dest = filepath.Join(tmpdir, "destSymlink")
|
||||||
|
destLinkfile := filepath.Join(dest, "file-1-link")
|
||||||
|
if err := CopyWithTar(srcLinkfile, destLinkfile); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,19 +162,26 @@ func TestChrootCopyFileWithTar(t *testing.T) {
|
||||||
if _, err := prepareSourceDirectory(10, src, true); err != nil {
|
if _, err := prepareSourceDirectory(10, src, true); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
dest := filepath.Join(tmpdir, "dest")
|
|
||||||
// Copy directory
|
// Copy directory
|
||||||
|
dest := filepath.Join(tmpdir, "dest")
|
||||||
if err := CopyFileWithTar(src, dest); err == nil {
|
if err := CopyFileWithTar(src, dest); err == nil {
|
||||||
t.Fatal("Expected error on copying directory")
|
t.Fatal("Expected error on copying directory")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy file
|
// Copy file
|
||||||
srcfile := filepath.Join(src, "file-1")
|
srcfile := filepath.Join(src, "file-1")
|
||||||
if err := CopyFileWithTar(srcfile, dest); err != nil {
|
dest = filepath.Join(tmpdir, "destFile")
|
||||||
|
destfile := filepath.Join(dest, "file-1")
|
||||||
|
if err := CopyFileWithTar(srcfile, destfile); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy symbolic link
|
// Copy symbolic link
|
||||||
linkfile := filepath.Join(src, "file-1-link")
|
srcLinkfile := filepath.Join(src, "file-1-link")
|
||||||
if err := CopyFileWithTar(linkfile, dest); err != nil {
|
dest = filepath.Join(tmpdir, "destSymlink")
|
||||||
|
destLinkfile := filepath.Join(dest, "file-1-link")
|
||||||
|
if err := CopyFileWithTar(srcLinkfile, destLinkfile); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -188,6 +219,9 @@ func TestChrootUntarPath(t *testing.T) {
|
||||||
if err := UntarPath(tarfile, dest); err != nil {
|
if err := UntarPath(tarfile, dest); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if err := compareDirectories(src, dest); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type slowEmptyTarReader struct {
|
type slowEmptyTarReader struct {
|
||||||
|
|
Loading…
Reference in a new issue