Branching mogilefs-client to version 1.2.1
[ruby-mogilefs-client.git] / test / test_mogilefs.rb
blob0850d34747bf8580727a2ea004f981dbbc9f7ce8
1 require 'test/setup'
3 class URI::HTTP
5   class << self
6     attr_accessor :read_data
7   end
9   def read
10     self.class.read_data.shift
11   end
13 end
15 class TestMogileFS__MogileFS < TestMogileFS
17   def setup
18     @klass = MogileFS::MogileFS
19     super
20   end
22   def test_initialize
23     assert_equal 'test', @client.domain
24     assert_equal '/mogilefs/test', @client.root
26     assert_raises ArgumentError do
27       MogileFS::MogileFS.new :hosts => ['kaa:6001'], :root => '/mogilefs/test'
28     end
29   end
31   def test_get_file_data_http
32     URI::HTTP.read_data = %w[data!]
34     path1 = 'http://rur-1/dev1/0/000/000/0000000062.fid'
35     path2 = 'http://rur-2/dev2/0/000/000/0000000062.fid'
37     @backend.get_paths = { 'paths' => 2, 'path1' => path1, 'path2' => path2 }
39     assert_equal 'data!', @client.get_file_data('key')
40   end
42   def test_get_paths
43     path1 = 'rur-1/dev1/0/000/000/0000000062.fid'
44     path2 = 'rur-2/dev2/0/000/000/0000000062.fid'
46     @backend.get_paths = { 'paths' => 2, 'path1' => path1, 'path2' => path2 }
48     expected = ["#{@root}/#{path1}", "#{@root}/#{path2}"]
50     assert_equal expected, @client.get_paths('key').sort
51   end
53   def test_get_paths_unknown_key
54     @backend.get_paths = ['unknown_key', '']
56     assert_equal nil, @client.get_paths('key')
57   end
59   def test_delete_existing
60     @backend.delete = { }
61     assert_nothing_raised do
62       @client.delete 'no_such_key'
63     end
64   end
66   def test_delete_nonexisting
67     @backend.delete = 'unknown_key', ''
68     assert_nothing_raised do
69       assert_equal nil, @client.delete('no_such_key')
70     end
71   end
73   def test_delete_readonly
74     @client.readonly = true
75     assert_raises RuntimeError do
76       @client.delete 'no_such_key'
77     end
78   end
80   def test_each_key
81     @backend.list_keys = { 'key_count' => 2, 'next_after' => 'new_key_2',
82                            'key_1' => 'new_key_1', 'key_2' => 'new_key_2' }
83     @backend.list_keys = { 'key_count' => 2, 'next_after' => 'new_key_4',
84                            'key_1' => 'new_key_3', 'key_2' => 'new_key_4' }
85     @backend.list_keys = { 'key_count' => 0, 'next_after' => 'new_key_4' }
86     keys = []
87     @client.each_key 'new' do |key|
88       keys << key
89     end
91     assert_equal %w[new_key_1 new_key_2 new_key_3 new_key_4], keys
92   end
94   def test_list_keys
95     @backend.list_keys = { 'key_count' => 2, 'next_after' => 'new_key_2',
96                            'key_1' => 'new_key_1', 'key_2' => 'new_key_2' }
98     keys, next_after = @client.list_keys 'new'
99     assert_equal ['new_key_1', 'new_key_2'], keys.sort
100     assert_equal 'new_key_2', next_after
101   end
103   def test_new_file_http
104     @client.readonly = true
105     assert_raises RuntimeError do
106       @client.new_file 'new_key', 'test'
107     end
108   end
110   def test_new_file_readonly
111     @client.readonly = true
112     assert_raises RuntimeError do
113       @client.new_file 'new_key', 'test'
114     end
115   end
117   def test_store_content_readonly
118     @client.readonly = true
119     assert_raises RuntimeError do
120       @client.store_content 'new_key', 'test', nil
121     end
122   end
124   def test_store_file_readonly
125     @client.readonly = true
126     assert_raises RuntimeError do
127       @client.store_file 'new_key', 'test', nil
128     end
129   end
131   def test_rename_existing
132     @backend.rename = {}
133     assert_nothing_raised do
134       assert_equal(nil, @client.rename('from_key', 'to_key'))
135     end
136   end
138   def test_rename_nonexisting
139     @backend.rename = 'unknown_key', ''
140     assert_nothing_raised do
141       assert_equal(nil, @client.rename('from_key', 'to_key'))
142     end
143   end
145   def test_rename_readonly
146     @client.readonly = true
147     assert_raises RuntimeError do
148       @client.rename 'new_key', 'test'
149     end
150   end
152   def test_sleep
153     @backend.sleep = {}
154     assert_nothing_raised do
155       assert_equal({}, @client.sleep(2))
156     end
157   end