about summary refs log tree commit homepage
path: root/test/setup.rb
diff options
context:
space:
mode:
authorzenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>2008-03-21 22:22:00 +0000
committerzenspider <zenspider@d2e05cf2-00e0-46e5-a3de-bbee4d6b9404>2008-03-21 22:22:00 +0000
commit5432c0e4d6b05bcc49c3a7c48eeff11f657beeca (patch)
treea766b2c741d6e9d3b2ecf1e619c2619694adeedb /test/setup.rb
parente20f64cd7ba2deb249b9b51ce9154ba5337ddf08 (diff)
downloadmogilefs-client-5432c0e4d6b05bcc49c3a7c48eeff11f657beeca.tar.gz
Removed infinite loop in MogileFS::HTTPFile#store_file.
Made MogileFS#get_file_data timeout configurable.
Add MogileFS#size.

From p4 revision #3627

git-svn-id: http://seattlerb.rubyforge.org/svn/mogilefs-client/dev@433 d2e05cf2-00e0-46e5-a3de-bbee4d6b9404
Diffstat (limited to 'test/setup.rb')
-rw-r--r--test/setup.rb84
1 files changed, 81 insertions, 3 deletions
diff --git a/test/setup.rb b/test/setup.rb
index 86f0f28..2acc111 100644
--- a/test/setup.rb
+++ b/test/setup.rb
@@ -1,5 +1,12 @@
 require 'test/unit'
 
+require 'fileutils'
+require 'tmpdir'
+require 'stringio'
+
+require 'rubygems'
+require 'test/zentest_assertions'
+
 $TESTING = true
 
 require 'mogilefs'
@@ -32,22 +39,93 @@ class FakeBackend
 
 end
 
+class FakeSocket
+
+  attr_reader :read_s
+  attr_reader :write_s
+
+  def initialize(read = '')
+    @read_s = StringIO.new read
+    @write_s = StringIO.new
+    @closed = false
+  end
+
+  def closed?
+    @closed
+  end
+
+  def close
+    @closed = true
+    return nil
+  end
+
+  def gets
+    @read_s.gets
+  end
+
+  def peeraddr
+    ['AF_INET', 6001, 'localhost', '127.0.0.1']
+  end
+
+  def read(bytes)
+    @read_s.read bytes
+  end
+
+  def sysread(bytes)
+    @read_s.sysread bytes
+  end
+
+  def write(data)
+    @write_s.write data
+  end
+
+end
+
 class MogileFS::Client
   attr_writer :readonly
 end
 
+class TCPSocket
+
+  class << self
+
+    attr_accessor :connections
+    attr_accessor :sockets
+
+    alias old_new new
+
+    def new(host, port)
+      raise Errno::ECONNREFUSED if @sockets.empty?
+      @connections << [host, port]
+      @sockets.pop
+    end
+
+    alias open new
+
+  end
+
+end
+
 class TestMogileFS < Test::Unit::TestCase
 
+  undef_method :default_test
+
   def setup
-    return if self.class == TestMogileFS
-    @root = '/mogilefs/test'
+    @tempdir = File.join Dir.tmpdir, "test_mogilefs_#{$$}"
+    @root = File.join @tempdir, 'root'
+    FileUtils.mkdir_p @root
+
     @client = @klass.new :hosts => ['kaa:6001'], :domain => 'test',
                                   :root => @root
     @backend = FakeBackend.new
     @client.instance_variable_set '@backend', @backend
+
+    TCPSocket.sockets = []
+    TCPSocket.connections = []
   end
 
-  def test_nothing
+  def teardown
+    FileUtils.rm_rf @tempdir
   end
 
 end