Skip to content

Conversation

mikemccracken
Copy link
Contributor

@mikemccracken mikemccracken commented Apr 24, 2025

see #39

Copy link

codecov bot commented Apr 24, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 38.35%. Comparing base (528a53f) to head (f29d9b7).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #41      +/-   ##
==========================================
- Coverage   38.71%   38.35%   -0.36%     
==========================================
  Files          24       24              
  Lines        2255     2255              
==========================================
- Hits          873      865       -8     
- Misses       1207     1212       +5     
- Partials      175      178       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mikemccracken mikemccracken force-pushed the 2025.04.24/main/attempt-mount-umount-mount-repro branch from f9d96da to f29d9b7 Compare April 24, 2025 22:46
@hallyn
Copy link
Contributor

hallyn commented Jul 4, 2025

I slightly tweaked your test and put it in its own file test/priv-mount-meta.bats:

load helpers
load 'test_helper/bats-support/load'
load 'test_helper/bats-assert/load'
load 'test_helper/bats-file/load'

function setup_file() {
    check_root
    build_image_at $BATS_SUITE_TMPDIR
    export MY_MNTNSNAME=$(readlink /proc/self/ns/mnt | cut -c 6-15)
}

function setup() {
    export MP=${BATS_TEST_TMPDIR}/testmountpoint
    mkdir -p $MP
}

@test "RO mount/umount/remount/umount of good image works" {
    echo "MP is $MP" >&3
    env >&3
    run atomfs-cover --debug mount ${BATS_SUITE_TMPDIR}/oci:test-squashfs $MP
    assert_success
    assert_file_exists $MP/1.README.md
    assert_file_exists $MP/random.txt
    echo "after first mount:" >&3
    find $MP >&3

    run atomfs-cover --debug umount $MP
    assert_success

    # mount point and meta dir should exist but be empty:
    assert_dir_exists $MP
    assert [ -z $( ls -A $MP) ]
    echo "after umount:" >&3
    find $MP >&3

    # rinse, repeat:

    run atomfs-cover --debug mount ${BATS_SUITE_TMPDIR}/oci:test-squashfs $MP
    assert_success
    echo "after second mount:" >&3
    find $MP >&3
    assert_file_exists $MP/1.README.md
    assert_file_exists $MP/random.txt

    run atomfs-cover --debug umount $MP
    assert_success

    assert_dir_exists $MP
    assert [ -z $( ls -A $MP) ]

}

And this test does in fact fail:

root@atomfs:/home/ubuntu/atomfs# cd test
root@atomfs:/home/ubuntu/atomfs/test# bats priv-mount-meta.bats
priv-mount-meta.bats
   RO mount/umount/remount/umount of good image works                                                                                     1/1
MP is /tmp/bats-run-xKU0cN/test/1/testmountpoint
SHELL=/bin/bash
BATS_TEST_TMPDIR=/tmp/bats-run-xKU0cN/test/1
SUDO_GID=1000
MY_MNTNSNAME=4026531841
MP=/tmp/bats-run-xKU0cN/test/1/testmountpoint
BATS_SUITE_TMPDIR=/tmp/bats-run-xKU0cN/suite
BATS_ROOT_PID=30770
BATS_WARNING_FILE=/tmp/bats-run-xKU0cN/warnings.log
BATS_FILE_TMPDIR=/tmp/bats-run-xKU0cN/file/0
BATS_END_CODE_QUOTE='
SUDO_COMMAND=/usr/bin/bash
SUDO_USER=ubuntu
BATS_TEST_SOURCE=/tmp/bats-run-xKU0cN/bats.30793.src
BATS_TEST_NAME=test_RO_mount-2fumount-2fremount-2fumount_of_good_image_works
PWD=/tmp/bats-run-xKU0cN/suite
LOGNAME=root
BATS_TMPDIR=/tmp
HOME=/root
LANG=en_US.UTF-8
BATS_TEST_FILENAME=/home/ubuntu/atomfs/test/priv-mount-meta.bats
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wm ✗ RO mount/umount/remount/umount of good image works                                                                                         v=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:
BATS_RUN_TMPDIR=/tmp/bats-run-xKU0cN
BATS_VERSION=1.10.0
BATS_GUARANTEED_MINIMUM_VERSION=0.0.0
BATS_CWD=/home/ubuntu/atomfs/test
LESSCLOSE=/usr/bin/lesspipe %s %s
TERM=tmux-256color
BATS_LINE_REFERENCE_FORMAT=comma_line
LESSOPEN=| /usr/bin/lesspipe %s
USER=root
BATS_BEGIN_CODE_QUOTE=`
BATS_TEMPDIR_CLEANUP=1
SHLVL=4
BATS_TEST_FILTER=
BATS_TEST_RETRIES=0
BATS_RUNLOG_FILE=/dev/null
BATS_TEST_NUMBER=1
PATH=/home/ubuntu/atomfs/test/../tools/bin:/home/ubuntu/atomfs/test/../bin:/home/ubuntu/atomfs/test/../tools/bin:/home/ubuntu/atomfs/test/../bin:/usr/libexec/bats-core:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
SUDO_UID=1000
MAIL=/var/mail/root
BATS_LIB_PATH=/usr/lib/bats
BATS_LIBEXEC=/usr/libexec/bats-core
BATS_SUITE_TEST_NUMBER=1
BATS_ROOT=/usr
OLDPWD=/home/ubuntu/atomfs/test
BATS_SAVED_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
BASH_FUNC_bats_readlinkf%%=() {  readlink -f "$1"
}
_=/usr/bin/env
after first mount:
/tmp/bats-run-xKU0cN/test/1/testmountpoint
/tmp/bats-run-xKU0cN/test/1/testmountpoint/1.README.md
/tmp/bats-run-xKU0cN/test/1/testmountpoint/random.txt
after umount:
/tmp/bats-run-xKU0cN/test/1/testmountpoint
   (from function `assert_success' in file test_helper/bats-assert/src/assert_success.bash, line 45,
    in test file priv-mount-meta.bats, line 39)
     `assert_success' failed

   -- command failed --
   status : 1
   output (20 lines):
     warning: GOCOVERDIR not set, no coverage data emitted
     2025/07/04 21:53:54 debug -> ws.recurse             digest=sha256:b144017a316705091185f3acdc4f8950ed06f1f8ca9ff23a33bbd050b5e0dbb0
     2025/07/04 21:53:54 debug <- ws.recurse             digest=sha256:b144017a316705091185f3acdc4f8950ed06f1f8ca9ff23a33bbd050b5e0dbb0
     2025/07/04 21:53:54 debug casext.ResolveReference(test-squashfs) got these descriptors refs=[{[{application/vnd.oci.image.manifest.v1+json sha256:b144017a316705091185f3acdc4f8950ed06f1f8ca9ff23a33bbd050b5e0dbb0 1150 [] map[org.opencontainers.image.ref.name:test-squashfs] [] <nil> }]}]
     Error: "/run/atomfs/meta/4026531841/tmp-bats-run-xKU0cN-test-1-testmountpoint" exists: cowardly refusing to mess with it
     couldn't mount molecule at mntpt "/tmp/bats-run-xKU0cN/test/1/testmountpoint"
     main.doMount
        /home/ubuntu/atomfs/cmd/atomfs/mount.go:113
     github.com/urfave/cli.HandleAction
        /home/ubuntu/go/pkg/mod/github.com/urfave/[email protected]/app.go:524
     github.com/urfave/cli.Command.Run
        /home/ubuntu/go/pkg/mod/github.com/urfave/[email protected]/command.go:175
     github.com/urfave/cli.(*App).Run
        /home/ubuntu/go/pkg/mod/github.com/urfave/[email protected]/app.go:277
     main.main
        /home/ubuntu/atomfs/cmd/atomfs/main.go:38
     runtime.main
        /home/ubuntu/go/pkg/mod/golang.org/[email protected]/src/runtime/proc.go:272
     runtime.goexit
        /home/ubuntu/go/pkg/mod/golang.org/[email protected]/src/runtime/asm_amd64.s:1700
   --


1 test, 1 failure

root@atomfs:/home/ubuntu/atomfs/test#
exit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants