Class: Borg::Server
- Inherits:
-
EM::Connection
- Object
- EM::Connection
- Borg::Server
- Includes:
- EM::P::ObjectProtocol
- Defined in:
- lib/borg/borg_server.rb
Constant Summary collapse
- @@workers =
{}
- @@requester =
{}
- @@status_count =
0
- @@status_reports =
[]
Instance Attribute Summary collapse
-
#client_type ⇒ Object
Returns the value of attribute client_type.
Instance Method Summary collapse
- #add_tests_to_redis ⇒ Object
- #check_for_workers ⇒ Object
- #collect_status_response(ruby_object) ⇒ Object
- #receive_object(ruby_object) ⇒ Object
- #send_error_to_requester(message) ⇒ Object
- #send_to_requester(ruby_object) ⇒ Object
- #start_build ⇒ Object
- #unbind ⇒ Object
Instance Attribute Details
#client_type ⇒ Object
Returns the value of attribute client_type.
9 10 11 |
# File 'lib/borg/borg_server.rb', line 9 def client_type @client_type end |
Instance Method Details
#add_tests_to_redis ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/borg/borg_server.rb', line 39 def add_tests_to_redis begin TestUnit.new().add_to_redis(@@workers.size * 3) CucumberRunner.new().add_to_redis(@@workers.size * 3) true rescue puts $!. puts $!.backtrace send_error_to_requester("Error adding files to redis") false end end |
#check_for_workers ⇒ Object
28 29 30 31 32 |
# File 'lib/borg/borg_server.rb', line 28 def check_for_workers return true unless @@workers.empty? send_error_to_requester("No worker found running") false end |
#collect_status_response(ruby_object) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/borg/borg_server.rb', line 52 def collect_status_response(ruby_object) @@status_reports << ruby_object @@status_count -= 1 puts "Status count is #{@@status_count}" if(@@status_count == 0) error_status = @@status_reports.any? {|x| x.exit_status != 0 } @@status_reports = [] if(error_status) send_to_requester(BuildStatus.new(1)) else send_to_requester(BuildStatus.new(0)) end end end |
#receive_object(ruby_object) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/borg/borg_server.rb', line 11 def receive_object(ruby_object) case ruby_object when BuildOutput send_to_requester(ruby_object) when BuildStatus puts "Received object #{ruby_object.inspect}" collect_status_response(ruby_object) when WorkerConnected @@workers[self.signature] = self @client_type = :worker when BuildRequester @@requester[self.signature] = self @client_type = :requestor check_for_workers && add_tests_to_redis && start_build end end |
#send_error_to_requester(message) ⇒ Object
34 35 36 37 |
# File 'lib/borg/borg_server.rb', line 34 def send_error_to_requester() send_to_requester(BuildOutput.new()) send_to_requester(BuildStatus.new(1)) end |
#send_to_requester(ruby_object) ⇒ Object
83 84 85 86 87 |
# File 'lib/borg/borg_server.rb', line 83 def send_to_requester(ruby_object) @@requester.each do |key,requester| requester.send_object(ruby_object) end end |
#start_build ⇒ Object
76 77 78 79 80 81 |
# File 'lib/borg/borg_server.rb', line 76 def start_build @@workers.each do |key,worker| @@status_count += 1 worker.send_object(StartBuild.new()) end end |
#unbind ⇒ Object
67 68 69 70 71 72 73 74 |
# File 'lib/borg/borg_server.rb', line 67 def unbind @@workers.delete(self.signature) @@requester.delete(self.signature) if(client_type == :requestor) @@status_count = 0 @@status_reports = [] end end |