Class: DTR::DrbTestRunnerServer

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

Instance Method Summary collapse

Constructor Details

#initialize(my_uri, test_files, clients) ⇒ DrbTestRunnerServer

Returns a new instance of DrbTestRunnerServer.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/dtr/drb_dtr.rb', line 65

def initialize(my_uri, test_files, clients)
  logger.info {'Initializing DTR server...'}
  @server = Server.new(test_files)

  clients.each do |uri|
    @server.add_client DRbObjectWrapper.new(uri)
    logger.info {"Added DTR client at #{uri}"}
  end

  DRb.install_acl clients.to_acl
  logger.info { "Installed acl: #{clients.to_acl_list.join(', ')}" }

  @my_uri = my_uri
  @original_output_model = DTROPTIONS[:output_model] == :original

  @progress_bar = unless @original_output_model
    begin
      require 'rubygems'
      require 'progressbar'
      ProgressBar.new("Completed", test_files.size)
    rescue Exception => e
      logger.info { "Progressbar gem is not installed or could not be loaded. " }
      logger.info { e }
      @original_output_model = true
      original_output { "Progressbar gem is not installed or could not be loaded(got error: #{e.message}).\nTurn on original output model." }
      NullObj.new
    end
  else
    NullObj.new
  end

  @original_reports = @original_output_model ? OriginalTestReports.new : NullObj.new
end

Instance Method Details

#reportsObject



132
133
134
# File 'lib/dtr/drb_dtr.rb', line 132

def reports
  @server.reports
end

#server_signatureObject



136
137
138
# File 'lib/dtr/drb_dtr.rb', line 136

def server_signature
  @server.server_signature
end

#start(run_setup = false) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/dtr/drb_dtr.rb', line 99

def start(run_setup=false)
  $SAFE = 1   # disable eval() and friends
  logger.info {'Starting server...'}
  DRb.start_service(@my_uri, self)
  logger.info { "=> DTR server started on #{@my_uri}"}
  original_output { "Loaded suites: #{@server.test_files.join(', ')}\n" }
  output "Started\n"
  begin
    begin
      @server.run :setup => run_setup
    rescue Server::NoAliveClientsError => e
      logger.info { e }
    end

    logger.debug { reports.to_yaml }
    logger.info { '' }
    @server.latest_build_summary.split("\n").each do |msg|
      logger.info { msg }
    end

    logger.info { "Run tests completed #{succeeded? ? 'SUCCEEDED' : 'FAILED'}" }
    original_output { "\n" }
    original_output { "\n#{@original_reports.failures_and_errors}" }
    output "\n#{@server.latest_build_summary}\n"
  ensure
    DRb.stop_service
  end
end

#succeeded?Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/dtr/drb_dtr.rb', line 128

def succeeded?
  @server.succeeded?
end

#update(signature, report) ⇒ Object



149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/dtr/drb_dtr.rb', line 149

def update(signature, report)
  original_output {@original_reports.summary_of report}
  if report.succeeded?
    logger.debug {"updating report: #{report.to_yaml}"}
  else
    logger.info { report.to_yaml }
    
    output report.stdout unless @original_output_model
  end
  
  result = @server.update(signature, report)
  @progress_bar.set reports.size
  result
end

#update_setup_log(signature, report) ⇒ Object



140
141
142
143
144
145
146
147
# File 'lib/dtr/drb_dtr.rb', line 140

def update_setup_log(signature, report)
  if report[:exit_code] == 0
    logger.debug {"updating setup report: #{report.to_yaml}"}
  else
    logger.info { report.to_yaml }
  end
  @server.update_setup_log(signature, report)
end