Class: FileGenerator::FileGenerator
- Inherits:
-
Object
- Object
- FileGenerator::FileGenerator
- Defined in:
- lib/file_utils/file_generator/file_generator.rb
Overview
Generates files with random content with random file size according to the given Params
Constant Summary collapse
- FILE_EXT =
'txt'
Instance Attribute Summary collapse
-
#one_bytes_string ⇒ Object
readonly
Gets one MB string.
Instance Method Summary collapse
-
#get_file_bytes_size ⇒ Object
Gets the required file size im MB.
-
#get_new_directory_name ⇒ Object
Gets the new directory name.
-
#get_new_file_name ⇒ Object
Gets the new file name.
-
#get_random_letter ⇒ Object
Gets the random letter.
-
#get_small_rand_unique_str ⇒ Object
Gets the some random string.
-
#get_unique_name ⇒ Object
Gets the unique name according to current time and random string.
-
#is_generate_dir(dir_counter, total_file_counter) ⇒ Object
Determines whether to generate new directory or not.
-
#is_generate_file(file_counter, total_file_counter) ⇒ Object
Determines whether to generate new file or not.
-
#prepare_one_bytes_string ⇒ Object
Generates one MB string with random content.
-
#run ⇒ Object
Generates files with random content with random file size according to the given Params.
Instance Attribute Details
#one_bytes_string ⇒ Object (readonly)
Gets one MB string
43 44 45 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 43 def one_bytes_string @one_bytes_string end |
Instance Method Details
#get_file_bytes_size ⇒ Object
Gets the required file size im MB
73 74 75 76 77 78 79 80 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 73 def get_file_bytes_size if Params['is_use_random_size'] rand(Params['upper_size_in_bytes'] - Params['down_size_in_bytes']) + Params['down_size_in_bytes'] else Params['file_size_in_bytes'] end end |
#get_new_directory_name ⇒ Object
Gets the new directory name
63 64 65 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 63 def get_new_directory_name "#{Params['dir_name_prefix']}_#{get_unique_name}" end |
#get_new_file_name ⇒ Object
Gets the new file name
68 69 70 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 68 def get_new_file_name "#{Params['file_name_prefix']}_#{get_unique_name}.#{FILE_EXT}" end |
#get_random_letter ⇒ Object
Gets the random letter
58 59 60 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 58 def get_random_letter (rand(122-97) + 97).chr end |
#get_small_rand_unique_str ⇒ Object
Gets the some random string
48 49 50 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 48 def get_small_rand_unique_str rand(36**8).to_s(36) end |
#get_unique_name ⇒ Object
Gets the unique name according to current time and random string
53 54 55 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 53 def get_unique_name "#{Time.new.to_i}_#{get_small_rand_unique_str}" end |
#is_generate_dir(dir_counter, total_file_counter) ⇒ Object
Determines whether to generate new directory or not
88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 88 def is_generate_dir(dir_counter, total_file_counter) if Params['max_total_files'] > 0 && total_file_counter > Params['max_total_files'] return false end if Params['total_created_directories'] < 1 || #Any negative value or zero will be indication for Infinity dir_counter < Params['total_created_directories'] then return true else return false end end |
#is_generate_file(file_counter, total_file_counter) ⇒ Object
Determines whether to generate new file or not
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 102 def is_generate_file(file_counter, total_file_counter) if Params['max_total_files'] > 0 && total_file_counter > Params['max_total_files'] return false end total_files_in_dir = Params['total_files_in_dir'] if file_counter == 0 && Params['is_tot_files_in_dir_random'] then total_files_in_dir = rand(Params['upper_limit_4_files_in_dir'] - Params['lower_limit_4_files_in_dir']) + Params['lower_limit_4_files_in_dir'] end #When total_files_in_dir < 1 it will be treated as unlimited files creation in directory if total_files_in_dir < 1 || file_counter < total_files_in_dir then return true else return false end end |
#prepare_one_bytes_string ⇒ Object
Generates one MB string with random content
83 84 85 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 83 def prepare_one_bytes_string get_random_letter end |
#run ⇒ Object
Generates files with random content with random file size according to the given Params
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/file_utils/file_generator/file_generator.rb', line 125 def run dir_counter = 0 total_file_count = 0 if Params['is_clear_target_path'] target_path_all_regexp = File.(File.join(Params['target_path'], '*')) Dir[target_path_all_regexp].each {|file| FileUtils.rm_rf file} end while is_generate_dir dir_counter, total_file_count new_dir_name = File.(File.join Params['target_path'], get_new_directory_name) ::FileUtils.mkdir_p new_dir_name unless File.directory?(new_dir_name) dir_counter += 1 file_counter = 0 while is_generate_file file_counter, total_file_count new_file_name = get_new_file_name File.open(File.join(new_dir_name, new_file_name), "w") do |f| get_file_bytes_size.to_i.times { f.write(get_random_letter) } end file_counter += 1 total_file_count += 1 sleep Params['sleep_time_in_seconds'] if Params['sleep_time_in_seconds'] > 0 end end end |