github.com/cilium/cilium@v1.16.2/pkg/mountinfo/mountinfo_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  	"bytes"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/require"
    13  	"golang.org/x/sys/unix"
    14  )
    15  
    16  const (
    17  	mountInfoContent = `21 68 0:20 / /sys rw,nosuid,nodev,noexec,relatime shared:2 - sysfs sysfs rw
    18  22 68 0:4 / /proc rw,nosuid,nodev,noexec,relatime shared:23 - proc proc rw
    19  23 68 0:6 / /dev rw,nosuid shared:19 - devtmpfs devtmpfs rw,size=8023924k,nr_inodes=2005981,mode=755
    20  24 21 0:7 / /sys/kernel/security rw,nosuid,nodev,noexec,relatime shared:3 - securityfs securityfs rw
    21  25 23 0:21 / /dev/shm rw,nosuid,nodev shared:20 - tmpfs tmpfs rw
    22  26 23 0:22 / /dev/pts rw,nosuid,noexec,relatime shared:21 - devpts devpts rw,gid=5,mode=620,ptmxmode=000
    23  27 68 0:23 / /run rw,nosuid,nodev shared:22 - tmpfs tmpfs rw,mode=755
    24  28 21 0:24 / /sys/fs/cgroup ro,nosuid,nodev,noexec shared:4 - tmpfs tmpfs ro,mode=755
    25  29 28 0:25 / /sys/fs/cgroup/unified rw,nosuid,nodev,noexec,relatime shared:5 - cgroup2 cgroup rw,nsdelegate
    26  30 28 0:26 / /sys/fs/cgroup/systemd rw,nosuid,nodev,noexec,relatime shared:6 - cgroup cgroup rw,xattr,name=systemd
    27  31 21 0:27 / /sys/fs/pstore rw,nosuid,nodev,noexec,relatime shared:18 - pstore pstore rw
    28  32 28 0:28 / /sys/fs/cgroup/blkio rw,nosuid,nodev,noexec,relatime shared:7 - cgroup cgroup rw,blkio
    29  33 28 0:29 / /sys/fs/cgroup/pids rw,nosuid,nodev,noexec,relatime shared:8 - cgroup cgroup rw,pids
    30  34 28 0:30 / /sys/fs/cgroup/net_cls,net_prio rw,nosuid,nodev,noexec,relatime shared:9 - cgroup cgroup rw,net_cls,net_prio
    31  35 28 0:31 / /sys/fs/cgroup/freezer rw,nosuid,nodev,noexec,relatime shared:10 - cgroup cgroup rw,freezer
    32  36 28 0:32 / /sys/fs/cgroup/rdma rw,nosuid,nodev,noexec,relatime shared:11 - cgroup cgroup rw,rdma
    33  37 28 0:33 / /sys/fs/cgroup/cpu,cpuacct rw,nosuid,nodev,noexec,relatime shared:12 - cgroup cgroup rw,cpu,cpuacct
    34  38 28 0:34 / /sys/fs/cgroup/cpuset rw,nosuid,nodev,noexec,relatime shared:13 - cgroup cgroup rw,cpuset
    35  39 28 0:35 / /sys/fs/cgroup/hugetlb rw,nosuid,nodev,noexec,relatime shared:14 - cgroup cgroup rw,hugetlb
    36  40 28 0:36 / /sys/fs/cgroup/devices rw,nosuid,nodev,noexec,relatime shared:15 - cgroup cgroup rw,devices
    37  41 28 0:37 / /sys/fs/cgroup/perf_event rw,nosuid,nodev,noexec,relatime shared:16 - cgroup cgroup rw,perf_event
    38  42 28 0:38 / /sys/fs/cgroup/memory rw,nosuid,nodev,noexec,relatime shared:17 - cgroup cgroup rw,memory
    39  68 0 254:1 / / rw,relatime shared:1 - xfs /dev/mapper/system-root rw,attr2,inode64,noquota
    40  43 22 0:41 / /proc/sys/fs/binfmt_misc rw,relatime shared:24 - autofs systemd-1 rw,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16155
    41  44 23 0:42 / /dev/hugepages rw,relatime shared:25 - hugetlbfs hugetlbfs rw,pagesize=2M
    42  45 23 0:19 / /dev/mqueue rw,relatime shared:26 - mqueue mqueue rw
    43  46 21 0:8 / /sys/kernel/debug rw,relatime shared:27 - debugfs debugfs rw
    44  78 68 8:1 / /boot rw,relatime shared:28 - ext4 /dev/sda1 rw,stripe=4
    45  80 68 254:3 / /home rw,relatime shared:29 - xfs /dev/mapper/system-home rw,attr2,inode64,noquota
    46  382 27 0:47 / /run/user/463 rw,nosuid,nodev,relatime shared:294 - tmpfs tmpfs rw,size=1606744k,mode=700,uid=463,gid=463
    47  472 27 0:48 / /run/user/1000 rw,nosuid,nodev,relatime shared:380 - tmpfs tmpfs rw,size=1606744k,mode=700,uid=1000,gid=100
    48  485 21 0:49 / /sys/fs/fuse/connections rw,relatime shared:391 - fusectl fusectl rw
    49  497 472 0:50 / /run/user/1000/gvfs rw,nosuid,nodev,relatime shared:401 - fuse.gvfsd-fuse gvfsd-fuse rw,user_id=1000,group_id=100
    50  510 46 0:11 / /sys/kernel/debug/tracing rw,relatime shared:412 - tracefs tracefs rw
    51  225 472 0:45 / /run/user/1000/doc rw,nosuid,nodev,relatime shared:141 - fuse /dev/fuse rw,user_id=1000,group_id=100
    52  655 68 0:100 / /var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/merged rw,relatime shared:150 - overlay overlay rw,lowerdir=/var/lib/docker/overlay2/l/MX2FFSUOIXOBNUCHC33QEQNNX2:/var/lib/docker/overlay2/l/Q3SPWQ6QMC22TK7SPQOLSVHLUQ:/var/lib/docker/overlay2/l/SPVXNCJEV3EQJGMHEOQGTLNDRT:/var/lib/docker/overlay2/l/EFMD4SE3UNOSVMNMD7EOGIIL5I:/var/lib/docker/overlay2/l/SFK3LVVM7XUXJWRS6I75TSS2DI:/var/lib/docker/overlay2/l/GL3CZA4OB3YI7A6JKWOLVNESSL:/var/lib/docker/overlay2/l/L6OAE4YY2C6BKHH55W42V7T6Y7,upperdir=/var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/diff,workdir=/var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/work
    53  810 68 0:107 / /var/lib/docker/containers/178dc073e1eb58e137d562d28928a187bdc05905ff889b7658dd7a9b3488e494/mounts/shm rw,nosuid,nodev,noexec,relatime shared:159 - tmpfs shm rw,size=65536k
    54  1017 27 0:3 net:[4026532775] /run/docker/netns/85c40bc29e30 rw shared:168 - nsfs nsfs rw
    55  969 68 0:117 / /var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/merged rw,relatime shared:177 - overlay overlay rw,lowerdir=/var/lib/docker/overlay2/l/SRXSWY4NGUH5ZX5EHGZ3R72ZZZ:/var/lib/docker/overlay2/l/4MKSUFUR2WVKNR47LRVGQUHDIX:/var/lib/docker/overlay2/l/CGHCSEQRDDOB7LDRMW6DNKGYKF:/var/lib/docker/overlay2/l/KXCYX6NI6XSXSW3R6YRYOJIXJY:/var/lib/docker/overlay2/l/5SWRNPTBRYPDDHKFPKXBQJ3AGN:/var/lib/docker/overlay2/l/L6OAE4YY2C6BKHH55W42V7T6Y7,upperdir=/var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/diff,workdir=/var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/work
    56  990 68 0:118 / /var/lib/docker/containers/eb56406256443e41d885581f36a790155bfa7eab49753a3cbeef6c12226fb7eb/mounts/shm rw,nosuid,nodev,noexec,relatime shared:249 - tmpfs shm rw,size=65536k
    57  1110 27 0:3 net:[4026532846] /run/docker/netns/35b7f0885825 rw shared:258 - nsfs nsfs rw
    58  657 21 0:98 / /sys/fs/bpf rw,relatime shared:267 - bpf bpffs rw`
    59  )
    60  
    61  func TestParseMountInfoFile(t *testing.T) {
    62  	expectedLength := 42
    63  	expectedMountInfos := []*MountInfo{
    64  		{
    65  			MountID:        21,
    66  			ParentID:       68,
    67  			StDev:          "0:20",
    68  			Root:           "/",
    69  			MountPoint:     "/sys",
    70  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
    71  			OptionalFields: []string{"shared:2"},
    72  			FilesystemType: "sysfs",
    73  			MountSource:    "sysfs",
    74  			SuperOptions:   "rw",
    75  		},
    76  		{
    77  			MountID:        22,
    78  			ParentID:       68,
    79  			StDev:          "0:4",
    80  			Root:           "/",
    81  			MountPoint:     "/proc",
    82  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
    83  			OptionalFields: []string{"shared:23"},
    84  			FilesystemType: "proc",
    85  			MountSource:    "proc",
    86  			SuperOptions:   "rw",
    87  		},
    88  		{
    89  			MountID:        23,
    90  			ParentID:       68,
    91  			StDev:          "0:6",
    92  			Root:           "/",
    93  			MountPoint:     "/dev",
    94  			MountOptions:   "rw,nosuid",
    95  			OptionalFields: []string{"shared:19"},
    96  			FilesystemType: "devtmpfs",
    97  			MountSource:    "devtmpfs",
    98  			SuperOptions:   "rw,size=8023924k,nr_inodes=2005981,mode=755",
    99  		},
   100  		{
   101  			MountID:        24,
   102  			ParentID:       21,
   103  			StDev:          "0:7",
   104  			Root:           "/",
   105  			MountPoint:     "/sys/kernel/security",
   106  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   107  			OptionalFields: []string{"shared:3"},
   108  			FilesystemType: "securityfs",
   109  			MountSource:    "securityfs",
   110  			SuperOptions:   "rw",
   111  		},
   112  		{
   113  			MountID:        25,
   114  			ParentID:       23,
   115  			StDev:          "0:21",
   116  			Root:           "/",
   117  			MountPoint:     "/dev/shm",
   118  			MountOptions:   "rw,nosuid,nodev",
   119  			OptionalFields: []string{"shared:20"},
   120  			FilesystemType: "tmpfs",
   121  			MountSource:    "tmpfs",
   122  			SuperOptions:   "rw",
   123  		},
   124  		{
   125  			MountID:        26,
   126  			ParentID:       23,
   127  			StDev:          "0:22",
   128  			Root:           "/",
   129  			MountPoint:     "/dev/pts",
   130  			MountOptions:   "rw,nosuid,noexec,relatime",
   131  			OptionalFields: []string{"shared:21"},
   132  			FilesystemType: "devpts",
   133  			MountSource:    "devpts",
   134  			SuperOptions:   "rw,gid=5,mode=620,ptmxmode=000",
   135  		},
   136  		{
   137  			MountID:        27,
   138  			ParentID:       68,
   139  			StDev:          "0:23",
   140  			Root:           "/",
   141  			MountPoint:     "/run",
   142  			MountOptions:   "rw,nosuid,nodev",
   143  			OptionalFields: []string{"shared:22"},
   144  			FilesystemType: "tmpfs",
   145  			MountSource:    "tmpfs",
   146  			SuperOptions:   "rw,mode=755",
   147  		},
   148  		{
   149  			MountID:        28,
   150  			ParentID:       21,
   151  			StDev:          "0:24",
   152  			Root:           "/",
   153  			MountPoint:     "/sys/fs/cgroup",
   154  			MountOptions:   "ro,nosuid,nodev,noexec",
   155  			OptionalFields: []string{"shared:4"},
   156  			FilesystemType: "tmpfs",
   157  			MountSource:    "tmpfs",
   158  			SuperOptions:   "ro,mode=755",
   159  		},
   160  		{
   161  			MountID:        29,
   162  			ParentID:       28,
   163  			StDev:          "0:25",
   164  			Root:           "/",
   165  			MountPoint:     "/sys/fs/cgroup/unified",
   166  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   167  			OptionalFields: []string{"shared:5"},
   168  			FilesystemType: "cgroup2",
   169  			MountSource:    "cgroup",
   170  			SuperOptions:   "rw,nsdelegate",
   171  		},
   172  		{
   173  			MountID:        30,
   174  			ParentID:       28,
   175  			StDev:          "0:26",
   176  			Root:           "/",
   177  			MountPoint:     "/sys/fs/cgroup/systemd",
   178  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   179  			OptionalFields: []string{"shared:6"},
   180  			FilesystemType: "cgroup",
   181  			MountSource:    "cgroup",
   182  			SuperOptions:   "rw,xattr,name=systemd",
   183  		},
   184  		{
   185  			MountID:        31,
   186  			ParentID:       21,
   187  			StDev:          "0:27",
   188  			Root:           "/",
   189  			MountPoint:     "/sys/fs/pstore",
   190  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   191  			OptionalFields: []string{"shared:18"},
   192  			FilesystemType: "pstore",
   193  			MountSource:    "pstore",
   194  			SuperOptions:   "rw",
   195  		},
   196  		{
   197  			MountID:        32,
   198  			ParentID:       28,
   199  			StDev:          "0:28",
   200  			Root:           "/",
   201  			MountPoint:     "/sys/fs/cgroup/blkio",
   202  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   203  			OptionalFields: []string{"shared:7"},
   204  			FilesystemType: "cgroup",
   205  			MountSource:    "cgroup",
   206  			SuperOptions:   "rw,blkio",
   207  		},
   208  		{
   209  			MountID:        33,
   210  			ParentID:       28,
   211  			StDev:          "0:29",
   212  			Root:           "/",
   213  			MountPoint:     "/sys/fs/cgroup/pids",
   214  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   215  			OptionalFields: []string{"shared:8"},
   216  			FilesystemType: "cgroup",
   217  			MountSource:    "cgroup",
   218  			SuperOptions:   "rw,pids",
   219  		},
   220  		{
   221  			MountID:        34,
   222  			ParentID:       28,
   223  			StDev:          "0:30",
   224  			Root:           "/",
   225  			MountPoint:     "/sys/fs/cgroup/net_cls,net_prio",
   226  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   227  			OptionalFields: []string{"shared:9"},
   228  			FilesystemType: "cgroup",
   229  			MountSource:    "cgroup",
   230  			SuperOptions:   "rw,net_cls,net_prio",
   231  		},
   232  		{
   233  			MountID:        35,
   234  			ParentID:       28,
   235  			StDev:          "0:31",
   236  			Root:           "/",
   237  			MountPoint:     "/sys/fs/cgroup/freezer",
   238  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   239  			OptionalFields: []string{"shared:10"},
   240  			FilesystemType: "cgroup",
   241  			MountSource:    "cgroup",
   242  			SuperOptions:   "rw,freezer",
   243  		},
   244  		{
   245  			MountID:        36,
   246  			ParentID:       28,
   247  			StDev:          "0:32",
   248  			Root:           "/",
   249  			MountPoint:     "/sys/fs/cgroup/rdma",
   250  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   251  			OptionalFields: []string{"shared:11"},
   252  			FilesystemType: "cgroup",
   253  			MountSource:    "cgroup",
   254  			SuperOptions:   "rw,rdma",
   255  		},
   256  		{
   257  			MountID:        37,
   258  			ParentID:       28,
   259  			StDev:          "0:33",
   260  			Root:           "/",
   261  			MountPoint:     "/sys/fs/cgroup/cpu,cpuacct",
   262  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   263  			OptionalFields: []string{"shared:12"},
   264  			FilesystemType: "cgroup",
   265  			MountSource:    "cgroup",
   266  			SuperOptions:   "rw,cpu,cpuacct",
   267  		},
   268  		{
   269  			MountID:        38,
   270  			ParentID:       28,
   271  			StDev:          "0:34",
   272  			Root:           "/",
   273  			MountPoint:     "/sys/fs/cgroup/cpuset",
   274  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   275  			OptionalFields: []string{"shared:13"},
   276  			FilesystemType: "cgroup",
   277  			MountSource:    "cgroup",
   278  			SuperOptions:   "rw,cpuset",
   279  		},
   280  		{
   281  			MountID:        39,
   282  			ParentID:       28,
   283  			StDev:          "0:35",
   284  			Root:           "/",
   285  			MountPoint:     "/sys/fs/cgroup/hugetlb",
   286  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   287  			OptionalFields: []string{"shared:14"},
   288  			FilesystemType: "cgroup",
   289  			MountSource:    "cgroup",
   290  			SuperOptions:   "rw,hugetlb",
   291  		},
   292  		{
   293  			MountID:        40,
   294  			ParentID:       28,
   295  			StDev:          "0:36",
   296  			Root:           "/",
   297  			MountPoint:     "/sys/fs/cgroup/devices",
   298  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   299  			OptionalFields: []string{"shared:15"},
   300  			FilesystemType: "cgroup",
   301  			MountSource:    "cgroup",
   302  			SuperOptions:   "rw,devices",
   303  		},
   304  		{
   305  			MountID:        41,
   306  			ParentID:       28,
   307  			StDev:          "0:37",
   308  			Root:           "/",
   309  			MountPoint:     "/sys/fs/cgroup/perf_event",
   310  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   311  			OptionalFields: []string{"shared:16"},
   312  			FilesystemType: "cgroup",
   313  			MountSource:    "cgroup",
   314  			SuperOptions:   "rw,perf_event",
   315  		},
   316  		{
   317  			MountID:        42,
   318  			ParentID:       28,
   319  			StDev:          "0:38",
   320  			Root:           "/",
   321  			MountPoint:     "/sys/fs/cgroup/memory",
   322  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   323  			OptionalFields: []string{"shared:17"},
   324  			FilesystemType: "cgroup",
   325  			MountSource:    "cgroup",
   326  			SuperOptions:   "rw,memory",
   327  		},
   328  		{
   329  			MountID:        68,
   330  			ParentID:       0,
   331  			StDev:          "254:1",
   332  			Root:           "/",
   333  			MountPoint:     "/",
   334  			MountOptions:   "rw,relatime",
   335  			OptionalFields: []string{"shared:1"},
   336  			FilesystemType: "xfs",
   337  			MountSource:    "/dev/mapper/system-root",
   338  			SuperOptions:   "rw,attr2,inode64,noquota",
   339  		},
   340  		{
   341  			MountID:        43,
   342  			ParentID:       22,
   343  			StDev:          "0:41",
   344  			Root:           "/",
   345  			MountPoint:     "/proc/sys/fs/binfmt_misc",
   346  			MountOptions:   "rw,relatime",
   347  			OptionalFields: []string{"shared:24"},
   348  			FilesystemType: "autofs",
   349  			MountSource:    "systemd-1",
   350  			SuperOptions:   "rw,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=16155",
   351  		},
   352  		{
   353  			MountID:        44,
   354  			ParentID:       23,
   355  			StDev:          "0:42",
   356  			Root:           "/",
   357  			MountPoint:     "/dev/hugepages",
   358  			MountOptions:   "rw,relatime",
   359  			OptionalFields: []string{"shared:25"},
   360  			FilesystemType: "hugetlbfs",
   361  			MountSource:    "hugetlbfs",
   362  			SuperOptions:   "rw,pagesize=2M",
   363  		},
   364  		{
   365  			MountID:        45,
   366  			ParentID:       23,
   367  			StDev:          "0:19",
   368  			Root:           "/",
   369  			MountPoint:     "/dev/mqueue",
   370  			MountOptions:   "rw,relatime",
   371  			OptionalFields: []string{"shared:26"},
   372  			FilesystemType: "mqueue",
   373  			MountSource:    "mqueue",
   374  			SuperOptions:   "rw",
   375  		},
   376  		{
   377  			MountID:        46,
   378  			ParentID:       21,
   379  			StDev:          "0:8",
   380  			Root:           "/",
   381  			MountPoint:     "/sys/kernel/debug",
   382  			MountOptions:   "rw,relatime",
   383  			OptionalFields: []string{"shared:27"},
   384  			FilesystemType: "debugfs",
   385  			MountSource:    "debugfs",
   386  			SuperOptions:   "rw",
   387  		},
   388  		{
   389  			MountID:        78,
   390  			ParentID:       68,
   391  			StDev:          "8:1",
   392  			Root:           "/",
   393  			MountPoint:     "/boot",
   394  			MountOptions:   "rw,relatime",
   395  			OptionalFields: []string{"shared:28"},
   396  			FilesystemType: "ext4",
   397  			MountSource:    "/dev/sda1",
   398  			SuperOptions:   "rw,stripe=4",
   399  		},
   400  		{
   401  			MountID:        80,
   402  			ParentID:       68,
   403  			StDev:          "254:3",
   404  			Root:           "/",
   405  			MountPoint:     "/home",
   406  			MountOptions:   "rw,relatime",
   407  			OptionalFields: []string{"shared:29"},
   408  			FilesystemType: "xfs",
   409  			MountSource:    "/dev/mapper/system-home",
   410  			SuperOptions:   "rw,attr2,inode64,noquota",
   411  		},
   412  		{
   413  			MountID:        382,
   414  			ParentID:       27,
   415  			StDev:          "0:47",
   416  			Root:           "/",
   417  			MountPoint:     "/run/user/463",
   418  			MountOptions:   "rw,nosuid,nodev,relatime",
   419  			OptionalFields: []string{"shared:294"},
   420  			FilesystemType: "tmpfs",
   421  			MountSource:    "tmpfs",
   422  			SuperOptions:   "rw,size=1606744k,mode=700,uid=463,gid=463",
   423  		},
   424  		{
   425  			MountID:        472,
   426  			ParentID:       27,
   427  			StDev:          "0:48",
   428  			Root:           "/",
   429  			MountPoint:     "/run/user/1000",
   430  			MountOptions:   "rw,nosuid,nodev,relatime",
   431  			OptionalFields: []string{"shared:380"},
   432  			FilesystemType: "tmpfs",
   433  			MountSource:    "tmpfs",
   434  			SuperOptions:   "rw,size=1606744k,mode=700,uid=1000,gid=100",
   435  		},
   436  		{
   437  			MountID:        485,
   438  			ParentID:       21,
   439  			StDev:          "0:49",
   440  			Root:           "/",
   441  			MountPoint:     "/sys/fs/fuse/connections",
   442  			MountOptions:   "rw,relatime",
   443  			OptionalFields: []string{"shared:391"},
   444  			FilesystemType: "fusectl",
   445  			MountSource:    "fusectl",
   446  			SuperOptions:   "rw",
   447  		},
   448  		{
   449  			MountID:        497,
   450  			ParentID:       472,
   451  			StDev:          "0:50",
   452  			Root:           "/",
   453  			MountPoint:     "/run/user/1000/gvfs",
   454  			MountOptions:   "rw,nosuid,nodev,relatime",
   455  			OptionalFields: []string{"shared:401"},
   456  			FilesystemType: "fuse.gvfsd-fuse",
   457  			MountSource:    "gvfsd-fuse",
   458  			SuperOptions:   "rw,user_id=1000,group_id=100",
   459  		},
   460  		{
   461  			MountID:        510,
   462  			ParentID:       46,
   463  			StDev:          "0:11",
   464  			Root:           "/",
   465  			MountPoint:     "/sys/kernel/debug/tracing",
   466  			MountOptions:   "rw,relatime",
   467  			OptionalFields: []string{"shared:412"},
   468  			FilesystemType: "tracefs",
   469  			MountSource:    "tracefs",
   470  			SuperOptions:   "rw",
   471  		},
   472  		{
   473  			MountID:        225,
   474  			ParentID:       472,
   475  			StDev:          "0:45",
   476  			Root:           "/",
   477  			MountPoint:     "/run/user/1000/doc",
   478  			MountOptions:   "rw,nosuid,nodev,relatime",
   479  			OptionalFields: []string{"shared:141"},
   480  			FilesystemType: "fuse",
   481  			MountSource:    "/dev/fuse",
   482  			SuperOptions:   "rw,user_id=1000,group_id=100",
   483  		},
   484  		{
   485  			MountID:        655,
   486  			ParentID:       68,
   487  			StDev:          "0:100",
   488  			Root:           "/",
   489  			MountPoint:     "/var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/merged",
   490  			MountOptions:   "rw,relatime",
   491  			OptionalFields: []string{"shared:150"},
   492  			FilesystemType: "overlay",
   493  			MountSource:    "overlay",
   494  			SuperOptions:   "rw,lowerdir=/var/lib/docker/overlay2/l/MX2FFSUOIXOBNUCHC33QEQNNX2:/var/lib/docker/overlay2/l/Q3SPWQ6QMC22TK7SPQOLSVHLUQ:/var/lib/docker/overlay2/l/SPVXNCJEV3EQJGMHEOQGTLNDRT:/var/lib/docker/overlay2/l/EFMD4SE3UNOSVMNMD7EOGIIL5I:/var/lib/docker/overlay2/l/SFK3LVVM7XUXJWRS6I75TSS2DI:/var/lib/docker/overlay2/l/GL3CZA4OB3YI7A6JKWOLVNESSL:/var/lib/docker/overlay2/l/L6OAE4YY2C6BKHH55W42V7T6Y7,upperdir=/var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/diff,workdir=/var/lib/docker/overlay2/209d7aafdafc7ebde84cb9f993c1e34cf0376f4f15dae4ddd2dd260b8d987d4d/work",
   495  		},
   496  		{
   497  			MountID:        810,
   498  			ParentID:       68,
   499  			StDev:          "0:107",
   500  			Root:           "/",
   501  			MountPoint:     "/var/lib/docker/containers/178dc073e1eb58e137d562d28928a187bdc05905ff889b7658dd7a9b3488e494/mounts/shm",
   502  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   503  			OptionalFields: []string{"shared:159"},
   504  			FilesystemType: "tmpfs",
   505  			MountSource:    "shm",
   506  			SuperOptions:   "rw,size=65536k",
   507  		},
   508  		{
   509  			MountID:        1017,
   510  			ParentID:       27,
   511  			StDev:          "0:3",
   512  			Root:           "net:[4026532775]",
   513  			MountPoint:     "/run/docker/netns/85c40bc29e30",
   514  			MountOptions:   "rw",
   515  			OptionalFields: []string{"shared:168"},
   516  			FilesystemType: "nsfs",
   517  			MountSource:    "nsfs",
   518  			SuperOptions:   "rw",
   519  		},
   520  		{
   521  			MountID:        969,
   522  			ParentID:       68,
   523  			StDev:          "0:117",
   524  			Root:           "/",
   525  			MountPoint:     "/var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/merged",
   526  			MountOptions:   "rw,relatime",
   527  			OptionalFields: []string{"shared:177"},
   528  			FilesystemType: "overlay",
   529  			MountSource:    "overlay",
   530  			SuperOptions:   "rw,lowerdir=/var/lib/docker/overlay2/l/SRXSWY4NGUH5ZX5EHGZ3R72ZZZ:/var/lib/docker/overlay2/l/4MKSUFUR2WVKNR47LRVGQUHDIX:/var/lib/docker/overlay2/l/CGHCSEQRDDOB7LDRMW6DNKGYKF:/var/lib/docker/overlay2/l/KXCYX6NI6XSXSW3R6YRYOJIXJY:/var/lib/docker/overlay2/l/5SWRNPTBRYPDDHKFPKXBQJ3AGN:/var/lib/docker/overlay2/l/L6OAE4YY2C6BKHH55W42V7T6Y7,upperdir=/var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/diff,workdir=/var/lib/docker/overlay2/e35eafd51f5f1e5a1f055de47bfccae6bb47c57317628507bb00b0981d33d717/work",
   531  		},
   532  		{
   533  			MountID:        990,
   534  			ParentID:       68,
   535  			StDev:          "0:118",
   536  			Root:           "/",
   537  			MountPoint:     "/var/lib/docker/containers/eb56406256443e41d885581f36a790155bfa7eab49753a3cbeef6c12226fb7eb/mounts/shm",
   538  			MountOptions:   "rw,nosuid,nodev,noexec,relatime",
   539  			OptionalFields: []string{"shared:249"},
   540  			FilesystemType: "tmpfs",
   541  			MountSource:    "shm",
   542  			SuperOptions:   "rw,size=65536k",
   543  		},
   544  		{
   545  			MountID:        1110,
   546  			ParentID:       27,
   547  			StDev:          "0:3",
   548  			Root:           "net:[4026532846]",
   549  			MountPoint:     "/run/docker/netns/35b7f0885825",
   550  			MountOptions:   "rw",
   551  			OptionalFields: []string{"shared:258"},
   552  			FilesystemType: "nsfs",
   553  			MountSource:    "nsfs",
   554  			SuperOptions:   "rw",
   555  		},
   556  		{
   557  			MountID:        657,
   558  			ParentID:       21,
   559  			StDev:          "0:98",
   560  			Root:           "/",
   561  			MountPoint:     "/sys/fs/bpf",
   562  			MountOptions:   "rw,relatime",
   563  			OptionalFields: []string{"shared:267"},
   564  			FilesystemType: "bpf",
   565  			MountSource:    "bpffs",
   566  			SuperOptions:   "rw",
   567  		},
   568  	}
   569  
   570  	r := bytes.NewBuffer([]byte(mountInfoContent))
   571  	mountInfos, err := parseMountInfoFile(r)
   572  	require.Nil(t, err)
   573  	require.Len(t, mountInfos, expectedLength)
   574  	require.EqualValues(t, expectedMountInfos, mountInfos)
   575  }
   576  
   577  func TestGetMountInfo(t *testing.T) {
   578  	_, err := GetMountInfo()
   579  	require.Nil(t, err)
   580  }
   581  
   582  // TestIsMountFS tests the public function IsMountFS. We cannot expect every
   583  // system and machine to have any predictable mounts, but let's try a couple
   584  // of very well known paths.
   585  func TestIsMountFS(t *testing.T) {
   586  	mounted, matched, err := IsMountFS(unix.PROC_SUPER_MAGIC, "/proc")
   587  	require.Nil(t, err)
   588  	require.Equal(t, true, mounted)
   589  	require.Equal(t, true, matched)
   590  
   591  	mounted, matched, err = IsMountFS(FilesystemTypeBPFFS, "/sys/fs/bpf")
   592  	require.Nil(t, err)
   593  	// We can't expect /sys/fs/bpf is mounted, so only check fstype
   594  	// if it is mounted. IOW, if /sys/fs/bpf is a mount point,
   595  	// we expect it to be bpffs.
   596  	if mounted {
   597  		require.Equal(t, true, matched)
   598  	}
   599  }