Class: Megatest::Queue

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

Direct Known Subclasses

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.



166
167
168
169
170
171
172
173
174
# File 'lib/megatest/queue.rb', line 166

def initialize(config)
  super(config)

  @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.



163
164
165
# File 'lib/megatest/queue.rb', line 163

def summary
  @summary
end

Instance Method Details

#distributed?Boolean

Returns:

  • (Boolean)


176
177
178
# File 'lib/megatest/queue.rb', line 176

def distributed?
  false
end

#empty?Boolean

Returns:

  • (Boolean)


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

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

#monitorObject



184
185
186
# File 'lib/megatest/queue.rb', line 184

def monitor
  nil
end

#pop_testObject



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

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

#populate(test_cases) ⇒ Object



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

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

#record_result(result) ⇒ Object



212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/megatest/queue.rb', line 212

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

#remaining_sizeObject



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

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

#sharded?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'lib/megatest/queue.rb', line 180

def sharded?
  @config.workers_count > 1
end

#success?Boolean

Returns:

  • (Boolean)


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

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