class SparseGen
Public Class Methods
sparse_dir(dirname, num_files = 1000, percent = 50, num_blocks = 1024, block_size = 1024)
click to toggle source
# File lib/sparse-gen.rb, line 28 def self.sparse_dir(dirname, num_files = 1000, percent = 50, num_blocks = 1024, block_size = 1024) FileUtils.mkdir_p dirname num_files.times do |file| sparse_gen_percent(File.join(dirname, "file_#{file}"), percent, num_blocks, block_size) end end
sparse_gen_percent(filename, percent = 50, num_blocks = 1024 * 1024, block_size = 1024)
click to toggle source
# File lib/sparse-gen.rb, line 4 def self.sparse_gen_percent(filename, percent = 50, num_blocks = 1024 * 1024, block_size = 1024) file = File.open(filename, 'wb') sparse_block = "\0" * block_size rand_string = rand(36**(block_size * 2)).to_s(36) puts rand_string (num_blocks * percent / 100).times do if percent <= 50 file.write(sparse_block) ((100 - percent) / percent).times do start = rand(0..block_size) file.write(rand_string[start..start+block_size-1]) end else start = rand(0..block_size) file.write(rand_string[start..start+block_size-1]) ((100 - percent) / percent).times do file.write(sparse_block) end end end file.close end