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