spec/unit/plugins/linux/filesystem_spec.rb in ohai-6.24.0.rc.0 vs spec/unit/plugins/linux/filesystem_spec.rb in ohai-6.24.0

- old
+ new

@@ -40,14 +40,19 @@ :timeout => 120, } @ohai.stub!(:run_command).with(@df_cmd).and_return([0,stdout,stderr]) @ohai.stub!(:run_command).with(@mount_cmd).and_return([0,stdout,stderr]) + File.stub!(:exists?).with("/bin/lsblk").and_return(false) @ohai.stub!(:popen4).with("blkid -s TYPE").and_return(false) @ohai.stub!(:popen4).with("blkid -s UUID").and_return(false) @ohai.stub!(:popen4).with("blkid -s LABEL").and_return(false) + @ohai.stub!(:popen4).with("lsblk -r -o NAME,FSTYPE -n").and_return(false) + @ohai.stub!(:popen4).with("lsblk -r -o NAME,UUID -n").and_return(false) + @ohai.stub!(:popen4).with("lsblk -r -o NAME,LABEL -n").and_return(false) + File.stub!(:exists?).with("/proc/mounts").and_return(false) end describe "when gathering filesystem usage data from df" do before(:each) do @@ -190,10 +195,41 @@ @ohai._require_plugin("linux::filesystem") @ohai[:filesystem]["/dev/md1"][:fs_type].should be == "LVM2_member" end end + describe "when gathering filesystem type data from lsblk" do + before(:each) do + File.stub!(:exists?).with('/bin/lsblk').and_return(true) + @stdin = mock("STDIN", { :close => true }) + @pid = 10 + @stderr = mock("STDERR") + @stdout = mock("STDOUT") + @status = 0 + + @stdout.stub!(:each). + and_yield("/dev/sdb1 linux_raid_member"). + and_yield("/dev/sdb2 linux_raid_member"). + and_yield("/dev/sda1 linux_raid_member"). + and_yield("/dev/sda2 linux_raid_member"). + and_yield("/dev/md0 ext3"). + and_yield("/dev/md1 LVM2_member"). + and_yield("/dev/mapper/sys.vg-root.lv ext4"). + and_yield("/dev/mapper/sys.vg-swap.lv swap"). + and_yield("/dev/mapper/sys.vg-tmp.lv ext4"). + and_yield("/dev/mapper/sys.vg-usr.lv ext4"). + and_yield("/dev/mapper/sys.vg-var.lv ext4"). + and_yield("/dev/mapper/sys.vg-home.lv xfs") + end + + it "should run lsblk -r -o NAME,FSTYPE -n" do + @ohai.should_receive(:popen4).with("lsblk -r -o NAME,FSTYPE -n"). + and_return(true) + @ohai._require_plugin("linux::filesystem") + end + end + describe "when gathering filesystem uuid data from blkid" do before(:each) do @stdin = mock("STDIN", { :close => true }) @pid = 10 @stderr = mock("STDERR") @@ -225,10 +261,48 @@ @ohai._require_plugin("linux::filesystem") @ohai[:filesystem]["/dev/sda2"][:uuid].should be == "e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa" end end + describe "when gathering filesystem uuid data from lsblk" do + before(:each) do + File.stub!(:exists?).with('/bin/lsblk').and_return(true) + @stdin = mock("STDIN", { :close => true }) + @pid = 10 + @stderr = mock("STDERR") + @stdout = mock("STDOUT") + @status = 0 + + @stdout.stub!(:each). + and_yield("/dev/sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5"). + and_yield("/dev/sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa"). + and_yield("/dev/sda1 bd1197e0-6997-1f3a-e27e-7801388308b5"). + and_yield("/dev/sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa"). + and_yield("/dev/md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32"). + and_yield("/dev/md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK"). + and_yield("/dev/mapper/sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea"). + and_yield("/dev/mapper/sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96"). + and_yield("/dev/mapper/sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5"). + and_yield("/dev/mapper/sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc"). + and_yield("/dev/mapper/sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3"). + and_yield("/dev/mapper/sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e") + end + + it "should run lsblk -r -o NAME,UUID -n" do + @ohai.should_receive(:popen4).with("lsblk -r -o NAME,UUID -n"). + and_return(true) + @ohai._require_plugin("linux::filesystem") + end + + it "should set kb_size to value from lsblk -r -o NAME,UUID -n" do + @ohai.stub!(:popen4).with("lsblk -r -o NAME,UUID -n"). + and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + @ohai._require_plugin("linux::filesystem") + @ohai[:filesystem]["/dev/sda2"][:uuid].should be == "e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa" + end + end + describe "when gathering filesystem label data from blkid" do before(:each) do @stdin = mock("STDIN", { :close => true }) @pid = 10 @stderr = mock("STDERR") @@ -258,32 +332,77 @@ @ohai._require_plugin("linux::filesystem") @ohai[:filesystem]["/dev/md0"][:label].should be == "/boot" end end + describe "when gathering filesystem label data from lsblk" do + before(:each) do + File.stub!(:exists?).with('/bin/lsblk').and_return(true) + @stdin = mock("STDIN", { :close => true }) + @pid = 10 + @stderr = mock("STDERR") + @stdout = mock("STDOUT") + @status = 0 + + @stdout.stub!(:each). + and_yield("/dev/sda1 fuego:0"). + and_yield("/dev/sda2 fuego:1"). + and_yield("/dev/sdb1 fuego:0"). + and_yield("/dev/sdb2 fuego:1"). + and_yield("/dev/md0 /boot"). + and_yield("/dev/mapper/sys.vg-root.lv /"). + and_yield("/dev/mapper/sys.vg-tmp.lv /tmp"). + and_yield("/dev/mapper/sys.vg-usr.lv /usr"). + and_yield("/dev/mapper/sys.vg-var.lv /var"). + and_yield("/dev/mapper/sys.vg-home.lv /home") + end + + it "should run lsblk -r -o NAME,LABEL -n" do + @ohai.should_receive(:popen4).with("lsblk -r -o NAME,LABEL -n"). + and_return(true) + @ohai._require_plugin("linux::filesystem") + end + + it "should set kb_size to value from lsblk -r -o NAME,LABEL -n" do + @ohai.stub!(:popen4).with("lsblk -r -o NAME,LABEL -n"). + and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + @ohai._require_plugin("linux::filesystem") + @ohai[:filesystem]["/dev/md0"][:label].should be == "/boot" + end + end + + describe "when gathering data from /proc/mounts" do before(:each) do File.stub!(:exists?).with("/proc/mounts").and_return(true) @mock_file = mock("/proc/mounts") @mock_file.stub!(:read_nonblock).and_return(@mock_file) - @mock_file.stub!(:each_line). - and_yield("rootfs / rootfs rw 0 0"). - and_yield("none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0"). - and_yield("none /proc proc rw,nosuid,nodev,noexec,relatime 0 0"). - and_yield("none /dev devtmpfs rw,relatime,size=2025576k,nr_inodes=506394,mode=755 0 0"). - and_yield("none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0"). - and_yield("/dev/mapper/sys.vg-root.lv / ext4 rw,noatime,errors=remount-ro,barrier=1,data=ordered 0 0"). - and_yield("tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0"). - and_yield("tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0"). - and_yield("/dev/mapper/sys.vg-home.lv /home xfs rw,noatime,attr2,noquota 0 0"). - and_yield("/dev/mapper/sys.vg-special.lv /special xfs ro,noatime,attr2,noquota 0 0"). - and_yield("/dev/mapper/sys.vg-tmp.lv /tmp ext4 rw,noatime,barrier=1,data=ordered 0 0"). - and_yield("/dev/mapper/sys.vg-usr.lv /usr ext4 rw,noatime,barrier=1,data=ordered 0 0"). - and_yield("/dev/mapper/sys.vg-var.lv /var ext4 rw,noatime,barrier=1,data=ordered 0 0"). - and_yield("/dev/md0 /boot ext3 rw,noatime,errors=remount-ro,data=ordered 0 0"). - and_yield("fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0"). - and_yield("binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0") + @mounts = <<-MOUNTS +rootfs / rootfs rw 0 0 +none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 +none /proc proc rw,nosuid,nodev,noexec,relatime 0 0 +none /dev devtmpfs rw,relatime,size=2025576k,nr_inodes=506394,mode=755 0 0 +none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 +/dev/mapper/sys.vg-root.lv / ext4 rw,noatime,errors=remount-ro,barrier=1,data=ordered 0 0 +tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0 +tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0 +/dev/mapper/sys.vg-home.lv /home xfs rw,noatime,attr2,noquota 0 0 +/dev/mapper/sys.vg-special.lv /special xfs ro,noatime,attr2,noquota 0 0 +/dev/mapper/sys.vg-tmp.lv /tmp ext4 rw,noatime,barrier=1,data=ordered 0 0 +/dev/mapper/sys.vg-usr.lv /usr ext4 rw,noatime,barrier=1,data=ordered 0 0 +/dev/mapper/sys.vg-var.lv /var ext4 rw,noatime,barrier=1,data=ordered 0 0 +/dev/md0 /boot ext3 rw,noatime,errors=remount-ro,data=ordered 0 0 +fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 +binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0 +MOUNTS + @counter = 0 + @mock_file.stub(:read_nonblock) do + @counter += 1 + raise EOFError if @counter == 2 + @mounts + end + @mock_file.stub(:close) File.stub!(:open).with("/proc/mounts").and_return(@mock_file) end it "should set mount to value from /proc/mounts" do @ohai._require_plugin("linux::filesystem") @@ -298,7 +417,6 @@ it "should set mount_options to an array of values from /proc/mounts" do @ohai._require_plugin("linux::filesystem") @ohai[:filesystem]["/dev/mapper/sys.vg-special.lv"][:mount_options].should be == [ "ro", "noatime", "attr2", "noquota" ] end end - end