Class: Megatest::Queue

Inherits:
AbstractQueue show all
Includes:
ShardeableQueue
Defined in:
lib/megatest/queue.rb

Direct Known Subclasses

FileQueue, RedisQueue::RetryQueue

Defined Under Namespace

Classes: Summary

Instance Attribute Summary collapse

Attributes inherited from AbstractQueue

#size, #test_cases_index

Instance Method Summary collapse

Methods inherited from AbstractQueue

#cleanup, #populated?, #record_lost_test, #retrying?

Constructor Details

#initialize(config) ⇒ Queue

Returns a new instance of Queue.



171
172
173
174
175
176
177
178
179
# File 'lib/megatest/queue.rb', line 171

def initialize(config)
  super

  @queue = nil
  @summary = Summary.new
  @success = true
  @retries = Hash.new(0)
  @leases = {}
end

Instance Attribute Details

#summaryObject (readonly) Also known as: global_summary

Returns the value of attribute summary.



168
169
170
# File 'lib/megatest/queue.rb', line 168

def summary
  @summary
end

Instance Method Details

#distributed?Boolean

Returns:

  • (Boolean)


193
194
195
# File 'lib/megatest/queue.rb', line 193

def distributed?
  false
end

#empty?Boolean

Returns:

  • (Boolean)


205
206
207
# File 'lib/megatest/queue.rb', line 205

def empty?
  @queue.empty? && @leases.empty?
end

#initialize_dup(_other) ⇒ Object



181
182
183
184
185
186
187
# File 'lib/megatest/queue.rb', line 181

def initialize_dup(_other)
  super
  @queue = @queue.dup
  @summary = @summary.dup
  @retries = @retries.dup
  @leases = @leases.dup
end

#monitorObject



201
202
203
# File 'lib/megatest/queue.rb', line 201

def monitor
  nil
end

#pop_testObject



222
223
224
225
226
227
# File 'lib/megatest/queue.rb', line 222

def pop_test
  if test = @queue.pop
    @leases[test.id] = true
  end
  test
end

#populate(test_cases) ⇒ Object



209
210
211
212
# File 'lib/megatest/queue.rb', line 209

def populate(test_cases)
  super
  @queue = test_cases.reverse
end

#record_result(result) ⇒ Object



229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/megatest/queue.rb', line 229

def record_result(result)
  @leases.delete(result.test_id)
  if result.failed? && !result.skipped?
    if attempt_to_retry?(result)
      result = result.retry
    else
      @success &&= result.ok?
    end
  end
  @summary.record_result(result)
  result
end

#remaining_sizeObject



214
215
216
# File 'lib/megatest/queue.rb', line 214

def remaining_size
  @queue.size + @leases.size
end

#sharded?Boolean

Returns:

  • (Boolean)


197
198
199
# File 'lib/megatest/queue.rb', line 197

def sharded?
  @config.workers_count > 1
end

#success?Boolean

Returns:

  • (Boolean)


218
219
220
# File 'lib/megatest/queue.rb', line 218

def success?
  @success && @queue.empty?
end

#to_aObject



189
190
191
# File 'lib/megatest/queue.rb', line 189

def to_a
  @queue.reverse
end