about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-04-05 19:56:31 -0700
committerEric Wong <normalperson@yhbt.net>2009-04-05 19:56:31 -0700
commitd39a7243be2925057e87372e3a01c3deda5b558d (patch)
tree8259ae24e26d0fde4845c257c2a8935eba32eadd
parent1501cd9ebb17a5178d9eaddc77fa4306614e869c (diff)
downloadunicorn-d39a7243be2925057e87372e3a01c3deda5b558d.tar.gz
-rw-r--r--TODO2
-rw-r--r--test/unit/test_server.rb38
2 files changed, 38 insertions, 2 deletions
diff --git a/TODO b/TODO
index 2241ff9..e572d0a 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,5 @@
 == 1.0.0
 
-  * tests for preload_app boolean
-
   * reexec_worker_processes config option:
     This is the number of worker processes to startup initially
     when being reexecuted.
diff --git a/test/unit/test_server.rb b/test/unit/test_server.rb
index eadeba4..3ab6b2d 100644
--- a/test/unit/test_server.rb
+++ b/test/unit/test_server.rb
@@ -35,6 +35,44 @@ class WebServerTest < Test::Unit::TestCase
     end
   end
 
+  def test_preload_app_config
+    teardown
+    port = unused_port
+    tmp = Tempfile.new('test_preload_app_config')
+    ObjectSpace.undefine_finalizer(tmp)
+    app = lambda { ||
+      tmp.sysseek(0)
+      tmp.truncate(0)
+      tmp.syswrite($$)
+      lambda { |env| [ 200, { 'Content-Type' => 'text/plain' }, [ "#$$\n" ] ] }
+    }
+    redirect_test_io do
+      @server = HttpServer.new(app, :listeners => [ "127.0.0.1:#{port}"] )
+      @server.start
+    end
+    results = hit(["http://localhost:#{port}/"])
+    worker_pid = results[0].to_i
+    tmp.sysseek(0)
+    loader_pid = tmp.sysread(4096).to_i
+    assert_equal worker_pid, loader_pid
+    teardown
+
+    port = unused_port
+    redirect_test_io do
+      @server = HttpServer.new(app, :listeners => [ "127.0.0.1:#{port}"],
+                               :preload_app => true)
+      @server.start
+    end
+    results = hit(["http://localhost:#{port}/"])
+    worker_pid = results[0].to_i
+    tmp.sysseek(0)
+    loader_pid = tmp.sysread(4096).to_i
+    assert_equal $$, loader_pid
+    assert worker_pid != loader_pid
+    ensure
+      tmp.close!
+  end
+
   def test_broken_app
     teardown
     port = unused_port