afc845f31eed19f3eebb9fb0f1855a1f4083fedc
[ruby-mogilefs-client.git] / test / test_mysql.rb
blobafc845f31eed19f3eebb9fb0f1855a1f4083fedc
1 # -*- encoding: binary -*-
2 require './test/setup'
4 class MogileFS::Mysql
5   public :refresh_device
6   public :refresh_domain
7 end
9 class TestMogileFS__Mysql < Test::Unit::TestCase
11   def setup
12     @my = FakeMysql.new
13     @mg = MogileFS::Mysql.new(:mysql => @my)
14     super
15   end
17   def test_refresh_device
18     expect = {
19      1=>
20       {:hostip=>"10.0.0.1",
21        :http_get_port=>7600,
22        :http_port=>7500,
23        :readable=>true,
24        :altip=>"192.168.0.1"},
25      2=>
26       {:hostip=>"10.0.0.2",
27        :http_get_port=>7600,
28        :http_port=>7500,
29        :readable=>true,
30        :altip=>"192.168.0.2"},
31      3=>
32       {:hostip=>"10.0.0.3",
33        :http_get_port=>7500,
34        :http_port=>7500,
35        :readable=>true,
36        :altip=>"10.0.0.3"},
37      4=>
38       {:hostip=>"10.0.0.4",
39        :http_get_port=>7500,
40        :http_port=>7500,
41        :readable=>true,
42        :altip=>"10.0.0.4"},
43      5=>
44       {:hostip=>"10.0.0.5",
45        :http_get_port=>7500,
46        :http_port=>7500,
47        :readable=>false,
48        :altip=>"10.0.0.5"},
49      6=>
50       {:hostip=>"10.0.0.6",
51        :http_get_port=>7500,
52        :http_port=>7500,
53        :readable=>false,
54        :altip=>"10.0.0.6"}
55     }
56     assert_equal expect, @mg.refresh_device
57   end
59   def test_refresh_domain
60     expect = { 'test' => 1, 'foo' => 2 }
61     assert_equal expect, @mg.refresh_domain
62   end
64   def test_get_paths
65     @my.expect << [ [ 12 ] ] # fid
66     @my.expect << [ [ 1 ], [ 3 ] ] # devids
67     expect = [ "http://10.0.0.1:7600/dev1/0/000/000/0000000012.fid",
68                "http://10.0.0.3:7500/dev3/0/000/000/0000000012.fid" ]
69     assert_equal expect, @mg._get_paths(:domain => 'test', :key => 'fookey')
70   end
72   def test_get_paths_bad_device
73     @my.expect << [ [ 12 ] ] # fid
74     @my.expect << [ [ 1 ], [ 6 ] ] # devids
75     expect = [ "http://10.0.0.1:7600/dev1/0/000/000/0000000012.fid" ]
76     assert_equal expect, @mg._get_paths(:domain => 'test', :key => 'fookey')
77   end
79   def test_get_paths_bad_host
80     @my.expect << [ [ 12 ] ] # fid
81     @my.expect << [ [ 1 ], [ 5 ] ] # devids
82     expect = [ "http://10.0.0.1:7600/dev1/0/000/000/0000000012.fid" ]
83     assert_equal expect, @mg._get_paths(:domain => 'test', :key => 'fookey')
84   end
86   def test_get_paths_alt
87     @my.expect <<  [ [ 12 ] ] # fid
88     @my.expect << [ [ 1 ], [ 3 ] ] # devids
89     expect = [ "http://192.168.0.1:7600/dev1/0/000/000/0000000012.fid",
90                "http://10.0.0.3:7500/dev3/0/000/000/0000000012.fid"]
91     params = { :domain => 'test', :key => 'fookey', :zone => 'alt' }
92     assert_equal expect, @mg._get_paths(params)
93   end
95   def test_list_keys
96     expect_full = [ [ 'foo', 123, 2 ], [ 'bar', 456, 1 ] ]
97     result_full = eval(expect_full.inspect)
98     result_full.each { |x| (1..2).each { |i| x[i] = x[i].to_s } }
99     expect_keys = [ [ 'foo', 'bar' ], 'bar' ]
100     @my.expect << result_full
101     full = []
102     keys = @mg._list_keys('test') do |dkey,length,devcount|
103       full << [ dkey, length, devcount ]
104     end
105     assert_equal expect_keys, keys
106     assert_equal expect_full, full
107   end
109   def test_list_keys_empty
110     @my.expect << []
111     assert_nil @mg._list_keys('test')
112   end
114   def test_size
115     @my.expect << [ [ '123' ] ]
116     assert_equal 123, @mg._size('test', 'foo')
118     @my.expect << [ [ '456' ] ]
119     assert_equal 456, @mg._size('test', 'foo')
120   end
122   def test_sleep
123     assert_nothing_raised { assert_equal({}, @mg.sleep(:duration => 1)) }
124   end