1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
require 'support/config'
require 'phusion_passenger/abstract_server'
include PhusionPassenger
shared_examples_for "an AbstractServer" do
it "doesn't crash if it's started and stopped multiple times" do
3.times do
# Give the server some time to install the
# signal handlers. If we don't give it enough
# time, it will raise an ugly exception when
# we send it a signal.
sleep 0.1
@server.stop
@server.start
end
end
it "raises a ServerAlreadyStarted if the server is already started" do
lambda { @server.start }.should raise_error(AbstractServer::ServerAlreadyStarted)
end
end
describe AbstractServer do
before :each do
@server = AbstractServer.new
end
after :each do
@server.stop if @server.started?
end
it "reseeds the pseudo-random number generator after forking off a process" do
@server.send(:define_message_handler, :random_number, :handle_random_number)
@server.stub!(:handle_random_number).and_return do
@server.send(:client).write(rand.to_s)
end
@server.start
@server.send(:server).write("random_number")
first_num = @server.send(:server).read
@server.stop
@server.start
@server.send(:server).write("random_number")
second_num = @server.send(:server).read
first_num.should_not == second_num
end
end
|