Class: DTR::DrbTestRunnerClientServer

Inherits:
Object
  • Object
show all
Defined in:
lib/dtr/drb_dtr.rb

Instance Method Summary collapse

Constructor Details

#initialize(my_uri, server_uri) ⇒ DrbTestRunnerClientServer

Returns a new instance of DrbTestRunnerClientServer.



179
180
181
182
183
184
# File 'lib/dtr/drb_dtr.rb', line 179

def initialize(my_uri, server_uri)
  @my_uri = my_uri
  @server_uri = server_uri
  @run_setup_signature = nil
  @client_name = DTROPTIONS[:client_name]
end

Instance Method Details

#idle?Boolean

Returns:

  • (Boolean)


194
195
196
# File 'lib/dtr/drb_dtr.rb', line 194

def idle?
  queue.empty?
end

#nameObject



186
187
188
# File 'lib/dtr/drb_dtr.rb', line 186

def name
  @client_name
end

#queueObject



190
191
192
# File 'lib/dtr/drb_dtr.rb', line 190

def queue
  @queue ||= []
end

#run(runner_name, test_files, signature) ⇒ Object



203
204
205
206
207
208
209
# File 'lib/dtr/drb_dtr.rb', line 203

def run(runner_name, test_files, signature)
  unless test_files.nil? || test_files.empty?
    queue << [runner_name, test_files, signature]
  else
    logger.info { "Error: argument test_files is #{test_files.nil? ? 'nil' : 'empty'}!"}
  end
end

#server_signatureObject



211
212
213
# File 'lib/dtr/drb_dtr.rb', line 211

def server_signature
  drbServer.server_signature
end

#setup(signature) ⇒ Object



198
199
200
201
# File 'lib/dtr/drb_dtr.rb', line 198

def setup(signature)
  logger.info {"request setup"}
  @run_setup_signature = signature
end

#startObject



215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
# File 'lib/dtr/drb_dtr.rb', line 215

def start
  $SAFE = 1   # disable eval() and friends
  access_uris = [@server_uri]
  DRb.install_acl access_uris.to_acl
  logger.info { "Installed acl: #{access_uris.to_acl_list.join(', ')}" }
  DRb.start_service(@my_uri, self)
  
  begin
    logger.info { "=> DTR client started on #{@my_uri}"}
    logger.info { "=> OPTIONS: #{DTROPTIONS.to_yaml}"}
    logger.info { "=> Ctrl-C to shutdown; call with --help for options" }

    loop do
      if @run_setup_signature
        logger.info {"Setup"}
        begin
          result = dtrClient.setup(@run_setup_signature)
          if result[:exit_code] != 0
            logger.info { "SETUP FAILED: #{result.inspect}" }
            puts "SETUP FAILED: #{result.inspect}"
            break 
          end
        rescue Exception => e
          logger.error { e }
        end
        @run_setup_signature = nil
        logger.info {"Sleeping..."}
      end
      unless queue.empty?
        logger.info {"Working..."}
        logger.debug {queue.first.to_yaml}
        begin
          dtrClient.run(*queue.first.dup)
        rescue Exception => e
          logger.error { e }
        end
        queue.pop
        logger.info {"Sleeping..."}
      end
  
      begin
        sleep(1)
      rescue Interrupt => e
        break # Ctrl-C to shutdown
      end
    end
  ensure
    DRb.stop_service
  end
end