github.com/cilium/cilium@v1.16.2/pkg/mountinfo/mountinfo_privileged_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  //go:build linux
     5  
     6  package mountinfo
     7  
     8  import (
     9  	"os"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/require"
    13  	"golang.org/x/sys/unix"
    14  
    15  	"github.com/cilium/cilium/pkg/testutils"
    16  )
    17  
    18  // TestIsMountFSbyMount tests the public function IsMountFS by performing
    19  // an actual mount.
    20  func TestIsMountFSbyMount(t *testing.T) {
    21  	testutils.PrivilegedTest(t)
    22  
    23  	tmpDir, err := os.MkdirTemp("", "IsMountFS_")
    24  	require.Nil(t, err)
    25  	defer os.RemoveAll(tmpDir)
    26  
    27  	mounted, matched, err := IsMountFS(unix.TMPFS_MAGIC, tmpDir)
    28  	require.Nil(t, err)
    29  	require.Equal(t, false, mounted)
    30  	require.Equal(t, false, matched)
    31  
    32  	err = unix.Mount("tmpfs", tmpDir, "tmpfs", 0, "")
    33  	require.Nil(t, err)
    34  	defer unix.Unmount(tmpDir, unix.MNT_DETACH)
    35  
    36  	// deliberately check with wrong fstype
    37  	mounted, matched, err = IsMountFS(unix.PROC_SUPER_MAGIC, tmpDir)
    38  	require.Nil(t, err)
    39  	require.Equal(t, true, mounted)
    40  	require.Equal(t, false, matched)
    41  
    42  	// now check with proper fstype
    43  	mounted, matched, err = IsMountFS(unix.TMPFS_MAGIC, tmpDir)
    44  	require.Nil(t, err)
    45  	require.Equal(t, true, mounted)
    46  	require.Equal(t, true, matched)
    47  }