秋雨全線が活発化して毎日雨続きで梅雨より長いんじゃないか?!
秋雨開け宣言を是非欲しいと思っています。

さてServerspecでディスクの容量を確認しようと思っても設計書にはGB単位で記述されていることが多々あり、
結局は諦めざるをえないことがたまにあったりしませんか?

そんな時はディスク容量の範囲を指定してあげてテストをすると良いですね。

具体的には

require 'spec_helper'

#単位はMBを想定する。(/bootとかもテストしやすいため)
size = 100

t1size = (size * 0.98).round
t2size = (size * 1.01).round

context 'Disk Size(MB)' do
  describe command("a=`df -kP |grep / | awk '{printf (\"%4.0f\", $2/1024)}'`; test #{t1size} -le $a -a $a -le #{t2size} ; echo $?") do
    its(:stdout) { should match /0/ }
  end
end

commandリソースを利用しワンライナーで値を取得します。

a=`df -kP |grep / | awk '{printf (\"%4.0f\", $2/1024)}'`

これで変数aにdfで取得したルートパーテーションの結果をprintf文で整数で取得します。

test #{t1size} -le $a -a $a -le #{t2size} ; echo $?"

変数aの結果を基にtestコマンドで変数t1sizeとt2sizeに入っていれば0を返します。

its(:stdout) { should match /0/ }

標準出力の結果が0であればOKとなります。

これはメモリの容量テストにも応用ができるのでなかなか便利です。