about summary refs log tree commit homepage
path: root/test/unit/test_threading.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/test_threading.rb')
-rw-r--r--test/unit/test_threading.rb74
1 files changed, 0 insertions, 74 deletions
diff --git a/test/unit/test_threading.rb b/test/unit/test_threading.rb
deleted file mode 100644
index 5551b53..0000000
--- a/test/unit/test_threading.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-root_dir = File.join(File.dirname(__FILE__), "../..")
-require File.join(root_dir, "test/test_helper")
-
-include Unicorn
-
-class FakeHandler
-  @@concurrent_threads = 0
-  @@threads = 0
-  
-  def self.max_concurrent_threads
-    @@threads ||= 0
-  end
-  
-  def initialize
-    super
-    @@mutex = Mutex.new
-  end
-  
-  def call(env)
-    @@mutex.synchronize do
-      @@concurrent_threads += 1 # !!! same for += and -=
-      @@threads = [@@concurrent_threads, @@threads].max
-    end
-    
-    sleep(0.1)
-    [200, {'Content-Type' => 'text/plain'}, ['hello!']]
-  ensure
-    @@mutex.synchronize { @@concurrent_threads -= 1 }
-  end
-end
-
-class ThreadingTest < Test::Unit::TestCase
-  def setup
-    @valid_request = "GET / HTTP/1.1\r\nHost: www.google.com\r\nContent-Type: text/plain\r\n\r\n"
-    @port = process_based_port
-    @app = Rack::URLMap.new('/test' => FakeHandler.new)
-    @threads = 4
-    redirect_test_io { @server = HttpServer.new(@app, :Host => "127.0.0.1", :Port => @port, :Max_concurrent_threads => @threads) }    
-    redirect_test_io { @server.start }
-  end
-
-  def teardown
-    redirect_test_io { @server.stop(true) }
-  end
-
-  def test_server_respects_max_concurrent_threads_option
-    threads = []
-    (@threads * 3).times do
-      threads << Thread.new do
-        send_data_over_socket("GET /test HTTP/1.1\r\nHost: localhost\r\nContent-Type: text/plain\r\n\r\n")
-      end
-    end
-    while threads.any? { |thread| thread.alive? }
-      sleep(0)
-    end
-    assert_equal @threads, FakeHandler.max_concurrent_threads
-  end
-  
-  private
-  
-  def send_data_over_socket(string)
-    socket = TCPSocket.new("127.0.0.1", @port)
-    request = StringIO.new(string)
-
-    while data = request.read(8)
-      socket.write(data)
-      socket.flush
-      sleep(0)
-    end
-    sleep(0)
-    socket.write(" ") # Some platforms only raise the exception on attempted write
-    socket.flush
-  end
-end