filecluster 0.5.14 → 0.5.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,24 +6,24 @@ class DaemonTest < Test::Unit::TestCase
6
6
  class << self
7
7
  def startup
8
8
  @@debug = false # show stdout and sterr of fc-daemon
9
-
9
+
10
10
  dir = File.expand_path(File.dirname(__FILE__))
11
11
  db_config_file = "#{dir}/db_test.yml"
12
12
  daemon_bin = File.expand_path("#{dir}/../bin/fc-daemon")
13
-
13
+
14
14
  File.open(db_config_file, 'w') do |f|
15
15
  f.write(FC::DB.options.to_yaml)
16
16
  end
17
-
17
+
18
18
  @@errors_count = FC::Error.where.count
19
-
20
- FC::Var.set('daemon_cycle_time', 1)
21
- FC::Var.set('daemon_global_wait_time', 1)
19
+
20
+ FC::Var.set('daemon_cycle_time', 0)
21
+ FC::Var.set('daemon_global_wait_time', 0)
22
22
  FC::Var.set('daemon_global_error_items_storages_ttl', 2)
23
23
  FC::Var.set('daemon_global_error_items_ttl', 2)
24
24
  @stotage_checks = 0
25
25
  Thread.new do
26
- Open3.popen2e("#{daemon_bin} -c #{db_config_file} -l debug -h localhost") do |stdin, stdout, t|
26
+ Open3.popen2e("#{daemon_bin} -c #{db_config_file} -l debug -h #{ ssh_hostname} ") do |stdin, stdout, t|
27
27
  @@pid = t.pid
28
28
  while line = stdout.readline
29
29
  @stotage_checks += 1 if line =~ /Finish stotage check/i
@@ -31,11 +31,11 @@ class DaemonTest < Test::Unit::TestCase
31
31
  end
32
32
  end
33
33
  end
34
-
34
+
35
35
  # tmp fake storages dirs
36
36
  `rm -rf /tmp/host*-sd*`
37
37
  `mkdir -p /tmp/host1-sda/ /tmp/host1-sdb/ /tmp/host1-sdc/`
38
-
38
+
39
39
  # test files to copy
40
40
  @@test_file_path = '/tmp/fc_test_file'
41
41
  `dd if=/dev/urandom of=#{@@test_file_path} bs=1M count=1 2>&1`
@@ -43,48 +43,48 @@ class DaemonTest < Test::Unit::TestCase
43
43
  `mkdir -p #{@@test_dir_path}/aaa #{@@test_dir_path}/bbb`
44
44
  `cp #{@@test_file_path} #{@@test_dir_path}/aaa/test1`
45
45
  `cp #{@@test_file_path} #{@@test_dir_path}/bbb/test2`
46
-
46
+
47
47
  @@storages = []
48
48
  @@storages << FC::Storage.new(
49
49
  :name => 'host1-sda',
50
- :host => 'localhost',
50
+ :host => ssh_hostname,
51
51
  :path => '/tmp/host1-sda/',
52
- :copy_storages => 'host1-sdb,host1-sdc',
52
+ :copy_storages => 'host1-sdb,host1-sdc',
53
53
  :size_limit => 1_000_000_000
54
54
  )
55
55
  @@storages << FC::Storage.new(
56
56
  :name => 'host1-sdb',
57
- :host => 'localhost',
57
+ :host => ssh_hostname,
58
58
  :path => '/tmp/host1-sdb/',
59
- :copy_storages => 'host1-sda,host1-sdc',
59
+ :copy_storages => 'host1-sda,host1-sdc',
60
60
  :size_limit => 1_000_000_000
61
61
  )
62
62
  @@storages << FC::Storage.new(
63
63
  :name => 'host1-sdc',
64
- :host => 'localhost',
64
+ :host => ssh_hostname,
65
65
  :path => '/tmp/host1-sdc/',
66
66
  :copy_storages => 'host1-sda,host1-sdb',
67
67
  :size_limit => 1_000_000_000
68
68
  )
69
69
  @@storages.each(&:save)
70
-
70
+
71
71
  @@policy = FC::Policy.new(
72
- :create_storages => 'host1-sda,host1-sdb,host1-sdc',
73
- :copies => 2,
72
+ :create_storages => 'host1-sda,host1-sdb,host1-sdc',
73
+ :copies => 2,
74
74
  :name => 'policy 1',
75
- :delete_deferred_time => 7
75
+ :delete_deferred_time => 5
76
76
  )
77
77
  @@policy.save
78
-
78
+
79
79
  @@rule = FC::CopyRule.new(:copy_storages => 'host1-sdc', :rule => 'name == "bla/bla/test3"')
80
80
  @@rule.save
81
-
81
+
82
82
  # wait for running fc-daemon
83
83
  Timeout.timeout(5) do
84
84
  sleep 0.1 while @stotage_checks < @@storages.size
85
85
  end
86
86
  end
87
-
87
+
88
88
  def shutdown
89
89
  Process.kill('KILL', @@pid)
90
90
  FC::DB.query('DELETE FROM items_storages')
@@ -100,15 +100,15 @@ class DaemonTest < Test::Unit::TestCase
100
100
  should 'daemon_all' do
101
101
  puts 'Start' if @@debug
102
102
  @@storages.each(&:reload)
103
- assert @@storages[0].up?, "Storage #{@@storages[0].name} down"
103
+ assert @@storages[0].up?, "Storage #{@@storages[0].name} down"
104
104
  assert @@storages[1].up?, "Storage #{@@storages[1].name} down"
105
105
  assert @@storages[2].up?, "Storage #{@@storages[2].name} down"
106
-
106
+
107
107
  assert_nothing_raised { @item1 = make_file_item('bla/bla/test1', 'test1') }
108
108
  assert_nothing_raised { @item2 = make_file_item('bla/bla/test2', 'test2') }
109
109
  assert_nothing_raised { @item3 = make_dir_item('bla/bla/test3', 'test3') }
110
110
  assert_nothing_raised { @item4 = make_file_item('bla/bla/test4', 'test4') }
111
-
111
+
112
112
  @@policy.copies = 3
113
113
  @@policy.save
114
114
 
@@ -123,18 +123,31 @@ class DaemonTest < Test::Unit::TestCase
123
123
  end
124
124
  end
125
125
  assert_equal @@errors_count, FC::Error.where.count, 'new errors in errors table'
126
-
126
+
127
127
  @@policy.copies = 2
128
128
  @@policy.save
129
+
130
+ item_size = `du -sb #{@@test_file_path} 2>&1`.to_i
131
+ storage = FC::Storage.where('name = ?', 'host1-sdc').first
132
+ storage.write_weight = -1
133
+ storage.save
129
134
  item_storage = FC::ItemStorage.where('item_id = ? AND storage_name = ?', @item1.id, 'host1-sdc').first
130
135
  item_storage.status = 'delete'
131
136
  item_storage.save
132
-
137
+
138
+ sleep 2
139
+ puts 'Check no delete' if @@debug
140
+ assert_equal item_size, `du -sb /tmp/host1-sdc/bla/bla/test1 2>&1`.to_i
141
+
142
+ storage = FC::Storage.where('name = ?', 'host1-sdc').first
143
+ storage.write_weight = 0
144
+ storage.save
145
+
133
146
  sleep 2
134
147
  puts 'Check delete' if @@debug
135
148
  assert_equal 0, `du -sb /tmp/host1-sdc/bla/bla/test1 2>&1`.to_i
136
149
  assert_equal @@errors_count, FC::Error.where.count, 'new errors in errors table'
137
-
150
+
138
151
  @item1.immediate_delete
139
152
  @item4.mark_deleted
140
153
  @item2.get_item_storages.each do |ist|
@@ -143,8 +156,8 @@ class DaemonTest < Test::Unit::TestCase
143
156
  end
144
157
  @item3.status = 'error'
145
158
  @item3.save
146
-
147
- sleep 6
159
+
160
+ sleep 4
148
161
  puts 'Check immediate_delete' if @@debug
149
162
  assert_raise(RuntimeError, 'Item not deleted after mark_deleted') { @item1.reload }
150
163
  assert_equal 0, @item2.get_item_storages.count, "ItemStorages not deleted after status='error'"
@@ -154,7 +167,7 @@ class DaemonTest < Test::Unit::TestCase
154
167
  assert_equal 'deferred_delete', @item4.status, 'Item not deferred_delete after mark_deleted'
155
168
  assert_same_elements %w(ready ready ready), @item4.get_item_storages.map(&:status)
156
169
 
157
- sleep 6
170
+ sleep 4
158
171
  puts 'Check mark_deleted' if @@debug
159
172
  assert_raise(RuntimeError, 'Item not deleted after mark_deleted') { @item4.reload }
160
173
  end
@@ -13,19 +13,19 @@ class DbTest < Test::Unit::TestCase
13
13
  storages << FC::Storage.new(:name => 'rec2-sdc', :host => 'rec2')
14
14
  storages << FC::Storage.new(:name => 'rec2-sdd', :host => 'rec2')
15
15
  @@storages_ids = storages.map{|storage| storage.save; storage.id }
16
-
16
+
17
17
  policies = []
18
18
  policies << FC::Policy.new(:create_storages => 'rec1-sda,rec1-sdd', :copies => 2, :name => 'policy 1')
19
19
  policies << FC::Policy.new(:create_storages => 'rec1-sda,bla,rec2-sdd', :copies => 3, :name => 'policy 2')
20
20
  policies << FC::Policy.new(:create_storages => 'bla,rec1-sda,test', :copies => 4, :name => 'policy 3')
21
21
  @@policies_ids = policies.map{|policy| policy.save; policy.id }
22
-
22
+
23
23
  items = []
24
24
  items << FC::Item.new(:name => 'test1', :policy_id => policies.first.id, :size => 150)
25
25
  items << FC::Item.new(:name => 'test2', :policy_id => policies.first.id, :size => 200)
26
26
  items << FC::Item.new(:name => 'test3', :policy_id => policies.first.id, :size => 400)
27
27
  @@items_ids = items.map{|item| item.save; item.id }
28
-
28
+
29
29
  item_storages = []
30
30
  items.each do |item|
31
31
  item_storages << FC::ItemStorage.new(:item_id => item.id, :storage_name => 'rec1-sda')
@@ -54,7 +54,7 @@ class DbTest < Test::Unit::TestCase
54
54
 
55
55
  should 'sql logger' do
56
56
  FC::DB.logger = mock
57
- FC::DB.logger.expects(:debug).at_least_once
57
+ FC::DB.logger.expects(:debug).at_least_once
58
58
  FC::DB.query 'SELECT 1'
59
59
  FC::DB.logger = nil
60
60
  end
@@ -64,7 +64,7 @@ class DbTest < Test::Unit::TestCase
64
64
  File.open(db_config_file, 'w') do |f|
65
65
  f.write(FC::DB.options.to_yaml)
66
66
  end
67
-
67
+
68
68
  connect = FC::DB.connect
69
69
  FC::DB.close
70
70
  assert_false connect.ping, 'Mysql2 connect not closed after close call'
@@ -88,7 +88,7 @@ class DbTest < Test::Unit::TestCase
88
88
  FC::DB.connect!(:multi_threads => true)
89
89
  assert_true FC::DB.connect.ping, 'Not connected after lazy_connect with Mysql2'
90
90
  assert_true FC::DB.options[:multi_threads], 'Options from connect!(options) was not setted'
91
-
91
+
92
92
  FC::DB.close
93
93
  FC::DB.lazy_connect do
94
94
  FC::DB.connect_by_config(FC::DB.options)
@@ -111,13 +111,20 @@ class DbTest < Test::Unit::TestCase
111
111
  should 'mysql errors' do
112
112
  FC::DB.connect!(:reconnect => true)
113
113
  FC::DB.logger = mock
114
- FC::DB.logger.expects(:info).at_least_once
114
+ FC::DB.logger.expects(:info).at_least_once
115
115
  assert_raise(Mysql2::Error) { FC::DB.query('retertert') }
116
116
  assert_raise(RuntimeError) { FC::DB.query('select ewrwerwerwer()') }
117
117
  FC::DB.connect!(:reconnect => false)
118
118
  FC::DB.logger = nil
119
119
  end
120
-
120
+
121
+ should "item time update" do
122
+ item = FC::Item.new(:name => 'bla bla bla', :policy_id => @item.policy_id)
123
+ item.save
124
+ item.reload
125
+ assert((item.time - Time.new.to_i).abs <= 1)
126
+ end
127
+
121
128
  should "items" do
122
129
  assert @items.count > 0, 'Items not loaded'
123
130
  @items.each{|item| assert item.time > 0, "Item (id=#{item.id}) time = 0"}
@@ -131,25 +138,25 @@ class DbTest < Test::Unit::TestCase
131
138
  item2.save
132
139
  assert_equal 0, item2.id, "Item (id=#{item2.id}) successfull insert on uniq key"
133
140
  end
134
-
141
+
135
142
  should "storages" do
136
143
  assert @storages.count > 0, 'Storages not loaded'
137
144
  storage = FC::Storage.new(:name => 'rec1-sda', :host => 'rec1')
138
145
  storage.save
139
146
  assert_equal storage.id, 0, "Storage duplicate name"
140
147
  end
141
-
148
+
142
149
  should "policies and storages" do
143
150
  assert @policies.count > 0, 'Policies not loaded'
144
151
  assert_equal 'rec1-sda,rec1-sdd', @policies[0].create_storages, "Policy (id=#{@policies[0].id}) incorrect create_storages"
145
152
  assert_equal 'rec1-sda,rec2-sdd', @policies[1].create_storages, "Policy (id=#{@policies[0].id}) incorrect create_storages"
146
153
  assert_equal 'rec1-sda', @policies[2].create_storages, "Policy (id=#{@policies[0].id}) incorrect create_storages"
147
-
154
+
148
155
  FC::Policy.new(:create_storages => 'rec2-sda,rec2-sdd', :name => 'policy 1').save
149
156
  assert_equal 'rec1-sda,rec1-sdd', FC::Policy.where('name = ?', 'policy 1').first.create_storages, "Create policy with uniq name"
150
- FC::Policy.new(:create_storages => 'bla,test', :name => 'new policy').save
157
+ FC::Policy.new(:create_storages => 'bla,test', :name => 'new policy').save rescue nil # nil from mysql 5.6
151
158
  assert_nil FC::Policy.where('name = ?', 'new policy').first, "Create policy with incorrect create_storages"
152
-
159
+
153
160
  assert_raise(Mysql2::Error, 'Change storage name with linked polices') { @storages[0].name = 'blabla'; @storages[0].save }
154
161
  assert_raise(Mysql2::Error, 'Delete storage name with linked polices') { @storages[0].delete }
155
162
  assert_nothing_raised { @storages[6].name = 'rec2-sdc-new'; @storages[6].save }
@@ -169,13 +176,13 @@ class DbTest < Test::Unit::TestCase
169
176
  assert_equal 'rec2-sda,rec1-sda', @policies[0].create_storages, "Policy (id=#{@policies[0].id}) incorrect create_storages after change"
170
177
  assert_raise(Mysql2::Error, 'Save empty policy storage') { @policies[0].create_storages = 'blabla'; @policies[0].save }
171
178
  end
172
-
179
+
173
180
  should "item_storages doubles" do
174
181
  is = FC::ItemStorage.new(:item_id => @item_storage.item_id, :storage_name => @item_storage.storage_name)
175
182
  is.save
176
183
  assert_equal 0, is.id, 'Item_storages successfull insert on uniq key'
177
184
  end
178
-
185
+
179
186
  should "item_storages times" do
180
187
  assert @item_storages.count > 0, 'Item_storages not loaded'
181
188
  @item_storages.each{|is| assert is.time > 0, "Item_storage (id=#{is.id}) time = 0"}
@@ -189,17 +196,17 @@ class DbTest < Test::Unit::TestCase
189
196
  @item_storage.storage_name = storage_name
190
197
  @item_storage.save
191
198
  end
192
-
199
+
193
200
  should "item_storages references" do
194
201
  assert_raise(Mysql2::Error, "Delete item (id=#{@items[2].id} with references to item_storages") { @items[2].delete }
195
202
  assert_raise(Mysql2::Error, "Delete storage (id=#{@storages[4].id} with references to item_storages") { @storages[4].delete }
196
203
  end
197
-
204
+
198
205
  should "item_storages copies, statuses, size" do
199
206
  @items.each{|item| assert_equal 2, item.copies, "Item (id=#{item.id}) copies not inc after add item_storage"}
200
207
  size_sum = @items.inject(0){|sum, item| sum+item.size}
201
208
  assert_equal size_sum, @storage.size, "storage (id=#{@storage.id}) size <> ready not inc after item_storage.status='ready'"
202
-
209
+
203
210
  assert_equal 'new', @item.status, "Item (id=#{@item.id}) status <> 'new'"
204
211
  @item_storage.status = 'ready'
205
212
  @item_storage.save
@@ -216,7 +223,7 @@ class DbTest < Test::Unit::TestCase
216
223
  @item.reload
217
224
  assert_equal 'error', @item.status, "Item (id=#{@item.id}) status <> 'error' not changed after item_storage.status='error'"
218
225
  assert_equal 2, @item.copies, "Item (id=#{@item.id}) copies changed after item_storage.status='error'"
219
-
226
+
220
227
  @item_storage.status = 'ready'
221
228
  @item_storage.save
222
229
  @item.reload
@@ -226,7 +233,7 @@ class DbTest < Test::Unit::TestCase
226
233
  @item.reload
227
234
  assert_equal 'error', @item.status, "Item (id=#{@item.id}) status <> 'error' not changed after item_storage.status='delete'"
228
235
  assert_equal 1, @item.copies, "Item (id=#{@item.id}) copies not decreased after item_storage.status='delete'"
229
-
236
+
230
237
  @item_storage.status = 'ready'
231
238
  @item_storage.save
232
239
  @item_storage2.status = 'ready'
@@ -245,7 +252,7 @@ class DbTest < Test::Unit::TestCase
245
252
  @item.reload
246
253
  assert_equal 'error', @item.status, "Item (id=#{@item.id}) status <> 'error' not changed after delete all item_storage"
247
254
  end
248
-
255
+
249
256
  should "errors time" do
250
257
  error = FC::Error.new(:message => 'test error')
251
258
  error.save
@@ -2,14 +2,14 @@ require 'helper'
2
2
 
3
3
  class ErrorTest < Test::Unit::TestCase
4
4
  def setup
5
- FC::Storage.stubs(:curr_host).returns('localhost')
5
+ FC::Storage.stubs(:curr_host).returns(ssh_hostname)
6
6
  end
7
-
7
+
8
8
  should "get_storages" do
9
9
  assert_raise(RuntimeError) { FC::Error.raise 'error message', :item_id => 111 }
10
10
  assert error = FC::Error.where('1 ORDER BY id desc LIMIT 1').first
11
11
  assert_equal 'error message', error.message
12
- assert_equal 'localhost', error.host
12
+ assert_equal ssh_hostname, error.host
13
13
  assert_equal 111, error.item_id
14
14
  end
15
15
  end
@@ -1,12 +1,12 @@
1
1
  require 'helper'
2
2
 
3
- class FunctionalTest < Test::Unit::TestCase
3
+ class FunctionalTest < Test::Unit::TestCase
4
4
  class << self
5
5
  def startup
6
6
  # tmp fake storages dirs
7
7
  `rm -rf /tmp/host*-sd*`
8
8
  `mkdir -p /tmp/host1-sda/ /tmp/host2-sda/`
9
-
9
+
10
10
  # test file to copy
11
11
  @@test_file_path = '/tmp/fc test_file "~!@#$%^&*()_+|\';'
12
12
  `dd if=/dev/urandom of=#{@@test_file_path.shellescape} bs=100K count=1 2>&1`
@@ -14,7 +14,7 @@ class FunctionalTest < Test::Unit::TestCase
14
14
  `mkdir -p #{@@test_dir_path.shellescape}/aaa #{@@test_dir_path.shellescape}/bbb`
15
15
  `cp #{@@test_file_path.shellescape} #{@@test_dir_path.shellescape}/aaa/test1`
16
16
  `cp #{@@test_file_path.shellescape} #{@@test_dir_path.shellescape}/bbb/test2`
17
-
17
+
18
18
  @@storages = []
19
19
  @@storages << FC::Storage.new(:name => 'host1-sda', :host => 'host1', :path => '/tmp/host1-sda/', :size => 0, :size_limit => 1000000, :check_time => Time.new.to_i)
20
20
  @@storages << FC::Storage.new(:name => 'host1-sdb', :host => 'host1', :path => '/tmp/host1-sdb/', :size => 0, :size_limit => 1000000, :check_time => Time.new.to_i)
@@ -22,7 +22,7 @@ class FunctionalTest < Test::Unit::TestCase
22
22
  @@storages << FC::Storage.new(:name => 'host2-sdb', :host => 'host2', :path => '/tmp/host2-sdb/', :size => 10, :size_limit => 1000000, :check_time => Time.new.to_i)
23
23
  @@storages << FC::Storage.new(:name => 'host3-sda', :host => 'host3', :path => '/tmp/host3-sda/', :size => 100, :size_limit => 1000000)
24
24
  @@storages.each { |storage| storage.save}
25
-
25
+
26
26
  @@policies = []
27
27
  @@policies << FC::Policy.new(:create_storages => 'host1-sda,host2-sda', :copy_storages => 'host1-sdb', :copies => 2, :name => 'policy 1')
28
28
  @@policies << FC::Policy.new(:create_storages => 'host1-sdb,host2-sdb', :copy_storages => 'host1-sdb', :copies => 2, :name => 'policy 2')
@@ -40,10 +40,10 @@ class FunctionalTest < Test::Unit::TestCase
40
40
  #`rm -rf #{@@test_dir_path.shellescape}`
41
41
  end
42
42
  end
43
-
43
+
44
44
  def setup
45
- FC::Storage.any_instance.stubs(:host).returns('localhost')
46
- FC::Storage.stubs(:curr_host).returns('localhost')
45
+ FC::Storage.any_instance.stubs(:host).returns(ENV['SSH_HOST'] || 'localhost')
46
+ FC::Storage.stubs(:curr_host).returns(ENV['SSH_HOST'] || 'localhost')
47
47
  end
48
48
 
49
49
  def stub_method(obj, method, method_impl)
@@ -65,7 +65,7 @@ class FunctionalTest < Test::Unit::TestCase
65
65
  assert_equal 'ready', item_storage.status
66
66
  assert_equal 'host1-sda', item_storage.storage_name
67
67
  end
68
-
68
+
69
69
  should "item create_from_local dir successful" do
70
70
  assert_nothing_raised { @item = FC::Item.create_from_local(@@test_dir_path, '/bla/bla/test_dir', @@policies[0], {:tag => 'test_dir'}) }
71
71
  assert_kind_of FC::Item, @item
@@ -79,7 +79,7 @@ class FunctionalTest < Test::Unit::TestCase
79
79
  assert_equal 'ready', item_storage.status
80
80
  assert_equal 'host1-sda', item_storage.storage_name
81
81
  end
82
-
82
+
83
83
  should "item create_from_local replace" do
84
84
  @item = FC::Item.new(:name => 'test2', :policy_id => @@policies[3].id)
85
85
  @item.save
@@ -97,13 +97,13 @@ class FunctionalTest < Test::Unit::TestCase
97
97
  assert_equal 'delete', item_storages['host1-sdb'].status
98
98
  assert_equal 'ready', item_storages['host2-sda'].status
99
99
  end
100
-
100
+
101
101
  should "item create_from_local available storage" do
102
102
  errors_count = FC::Error.where.count
103
103
  assert_raise(RuntimeError, "available storage") { FC::Item.create_from_local(@@test_file_path, 'test3', @@policies[2], {:tag => 'test'}) }
104
104
  assert_equal errors_count+1, FC::Error.where.count, "Error not saved on available storage"
105
105
  end
106
-
106
+
107
107
  should "item create_from_local delete item_storage" do
108
108
  @item = FC::Item.new(:name => 'test4', :policy_id => @@policies[3].id)
109
109
  @item.save
@@ -115,7 +115,7 @@ class FunctionalTest < Test::Unit::TestCase
115
115
  assert_not_equal item_storage.id, item_storages.first.id
116
116
  assert_raise(RuntimeError) { item_storage.reload }
117
117
  end
118
-
118
+
119
119
  should "item create_from_local check md5" do
120
120
  errors_count = FC::Error.where.count
121
121
  @item = FC::Item.create_from_local(@@test_file_path, 'test5', @@policies[0], {:tag => 'test'})
@@ -197,14 +197,14 @@ class FunctionalTest < Test::Unit::TestCase
197
197
  `cp #{@@test_file_path.shellescape} #{tmp_file_path.shellescape}`
198
198
  assert_nothing_raised { FC::Item.create_from_local(tmp_file_path, 'inplace test', @@policies[0]) }
199
199
  end
200
-
200
+
201
201
  should "item create_from_local inplace for dir" do
202
202
  tmp_dir_path = "/tmp/host2-sda/inplace test dir/"
203
203
  `mkdir #{tmp_dir_path.shellescape}`
204
204
  `cp #{@@test_file_path.shellescape} #{tmp_dir_path.shellescape}`
205
205
  assert_nothing_raised { FC::Item.create_from_local(tmp_dir_path, '/inplace test dir/', @@policies[0]) }
206
206
  end
207
-
207
+
208
208
  should "item create_from_local with move and delete" do
209
209
  tmp_file_path = "/tmp/fc test file for delete"
210
210
  `cp #{@@test_file_path.shellescape} #{tmp_file_path.shellescape}`
@@ -218,22 +218,23 @@ class FunctionalTest < Test::Unit::TestCase
218
218
  end
219
219
 
220
220
  should 'item create_from_local with block for choose storage' do
221
- item = FC::Item.create_from_local(@@test_file_path,
222
- '/bla/bla/test7',
223
- @@policies[0],
221
+ item = FC::Item.create_from_local(@@test_file_path,
222
+ '/bla/bla/test7',
223
+ @@policies[0],
224
224
  :tag => 'test') do |storages|
225
225
  storages.select { |s| s.name == 'host2-sda' }
226
226
  end
227
227
  assert_kind_of FC::Item, item
228
+
228
229
  assert_equal `du -sb /tmp/host2-sda/bla/bla/test7 2>&1`.to_i, item.size
229
230
  assert_equal 'ready', item.status
230
231
  item_storages = item.get_item_storages
231
232
  assert_equal 1, item_storages.count
232
233
  assert_equal 'ready', item_storages.first.status
233
234
  assert_equal 'host2-sda', item_storages.first.storage_name
234
- item = FC::Item.create_from_local(@@test_file_path,
235
- '/bla/bla/test8',
236
- @@policies[0],
235
+ item = FC::Item.create_from_local(@@test_file_path,
236
+ '/bla/bla/test8',
237
+ @@policies[0],
237
238
  :tag => 'test') { [@@storages[4]] }
238
239
  assert_equal 'host3-sda', item.get_item_storages.first.storage_name
239
240
  end