This repository was archived by the owner on Jun 2, 2021. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ require 'socket'
2+
13class BackgroundJobEnvironment
4+ attr_reader :readiness_server
5+
26 def initialize ( config )
37 @config = config
48 @log_counter = Steno ::Sink ::Counter . new
@@ -16,21 +20,26 @@ def setup_environment(readiness_port=nil)
1620 @config . configure_components
1721
1822 if readiness_port && readiness_port > 0
19- open_readiness_port ( readiness_port )
23+ listen_on_readiness_port ( readiness_port )
2024 end
2125
2226 yield if block_given?
2327 end
2428
2529 private
2630
27- def open_readiness_port ( port )
28- # rubocop:disable Style/GlobalVars
29- $socket = Socket . new ( Socket ::AF_INET , Socket ::SOCK_STREAM )
30- sockaddr = Socket . pack_sockaddr_in ( port , '127.0.0.1' )
31- $socket. bind ( sockaddr )
32-
33- $socket. listen ( READINESS_SOCKET_QUEUE_DEPTH )
34- # rubocop:enable Style/GlobalVars
31+ def listen_on_readiness_port ( port )
32+ @readiness_server = TCPServer . open ( '0.0.0.0' , port )
33+
34+ Thread . new do
35+ loop do
36+ Thread . start ( @readiness_server . accept ) do |c |
37+ c . puts 'ok'
38+ c . close
39+ end
40+ end
41+ rescue Errno ::EBADF
42+ Thread . exit
43+ end
3544 end
3645end
Original file line number Diff line number Diff line change 1616 describe '#setup_environment' do
1717 before do
1818 allow ( VCAP ::CloudController ::DB ) . to receive ( :load_models )
19- allow ( Thread ) . to receive ( :new ) . and_yield
2019 allow ( EM ) . to receive ( :run ) . and_yield
2120 allow ( VCAP ::CloudController ::ResourcePool ) . to receive ( :new )
2221 end
@@ -55,7 +54,7 @@ def open_port_count
5554 expect {
5655 background_job_environment . setup_environment ( 9999 )
5756 } . to change { open_port_count } . by ( 1 )
58- expect { TCPSocket . new ( '127.0.0.1' , 9999 ) . close } . not_to raise_error
57+ expect { background_job_environment . readiness_server . close } . not_to raise_error
5958 end
6059 end
6160 end
You can’t perform that action at this time.
0 commit comments