Class: RRRSpec::Trial

Inherits:
Object
  • Object
show all
Defined in:
lib/rrrspec/redis_models.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(trial_key) ⇒ Trial

Returns a new instance of Trial.



726
727
728
# File 'lib/rrrspec/redis_models.rb', line 726

def initialize(trial_key)
  @key = trial_key
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



724
725
726
# File 'lib/rrrspec/redis_models.rb', line 724

def key
  @key
end

Class Method Details

.create(task, slave) ⇒ Object

Public: Create a new trial. This method will call Task#add_trial and Slave#add_trial.



732
733
734
735
736
737
738
739
740
741
742
743
744
745
# File 'lib/rrrspec/redis_models.rb', line 732

def self.create(task, slave)
  trial_key = RRRSpec.make_key(
    task.key, 'trial', UUIDTools::UUID.timestamp_create
  )
  RRRSpec.redis.hmset(
    trial_key,
    'task', task.key,
    'slave', slave.key,
  )
  trial = new(trial_key)
  task.add_trial(trial)
  slave.add_trial(trial)
  return trial
end

Instance Method Details

#expire(sec) ⇒ Object

Persistence



860
861
862
# File 'lib/rrrspec/redis_models.rb', line 860

def expire(sec)
  RRRSpec.redis.expire(key, sec)
end

#failedObject

Public: Returns the failed examples



832
833
834
835
# File 'lib/rrrspec/redis_models.rb', line 832

def failed
  v = RRRSpec.redis.hget(key, 'failed')
  v.present? ? v.to_i : nil
end

#finish(status, stdout, stderr, passed, pending, failed) ⇒ Object

Public: Finish the trial status should be one of [“passed”, “pending”, “failed”, “error”]. stdout and stderr should be string or nil. passed, pending and failed is the count of examplegroups and should be either nil or numbers.



784
785
786
787
788
789
790
791
792
793
794
795
# File 'lib/rrrspec/redis_models.rb', line 784

def finish(status, stdout, stderr, passed, pending, failed)
  RRRSpec.redis.hmset(
    key,
    'finished_at', Time.zone.now.to_s,
    'status', status,
    'stdout', stdout,
    'stderr', stderr,
    'passed', passed,
    'pending', pending,
    'failed', failed
  )
end

#finished_atObject

Public: Returns the finished_at



804
805
806
807
# File 'lib/rrrspec/redis_models.rb', line 804

def finished_at
  v = RRRSpec.redis.hget(key, 'finished_at')
  v.present? ? Time.zone.parse(v) : nil
end

#passedObject

Public: Returns the passed examples



820
821
822
823
# File 'lib/rrrspec/redis_models.rb', line 820

def passed
  v = RRRSpec.redis.hget(key, 'passed')
  v.present? ? v.to_i : nil
end

#pendingObject

Public: Returns the pending examples



826
827
828
829
# File 'lib/rrrspec/redis_models.rb', line 826

def pending
  v = RRRSpec.redis.hget(key, 'pending')
  v.present? ? v.to_i : nil
end

#slaveObject

Public: The slave worked for this.

Returns a Slave



760
761
762
# File 'lib/rrrspec/redis_models.rb', line 760

def slave
  Slave.new(RRRSpec.redis.hget(key, 'slave'))
end

#startObject

Public: Set started_at time.



775
776
777
# File 'lib/rrrspec/redis_models.rb', line 775

def start
  RRRSpec.redis.hset(key, 'started_at', Time.zone.now.to_s)
end

#started_atObject

Public: Returns the started_at



798
799
800
801
# File 'lib/rrrspec/redis_models.rb', line 798

def started_at
  v = RRRSpec.redis.hget(key, 'started_at')
  v.present? ? Time.zone.parse(v) : nil
end

#statusObject

Public: Current status

Returns either nil, “passed”, “pending”, “failed” or “error”



770
771
772
# File 'lib/rrrspec/redis_models.rb', line 770

def status
  RRRSpec.redis.hget(key, 'status')
end

#stderrObject

Public: Returns the stderr



815
816
817
# File 'lib/rrrspec/redis_models.rb', line 815

def stderr
  RRRSpec.redis.hget(key, 'stderr')
end

#stdoutObject

Public: Returns the stdout



810
811
812
# File 'lib/rrrspec/redis_models.rb', line 810

def stdout
  RRRSpec.redis.hget(key, 'stdout')
end

#taskObject

Public: Tried task

Returns a Task



753
754
755
# File 'lib/rrrspec/redis_models.rb', line 753

def task
  Task.new(RRRSpec.redis.hget(key, 'task'))
end

#to_hObject

Serialize



840
841
842
843
844
845
846
847
848
849
850
851
# File 'lib/rrrspec/redis_models.rb', line 840

def to_h
  h = RRRSpec.redis.hgetall(key)
  h['key'] = key
  h['task'] = { 'key' => h['task'] }
  h['slave'] = { 'key' => h['slave'] }
  RRRSpec.convert_if_present(h, 'started_at') { |v| Time.zone.parse(v) }
  RRRSpec.convert_if_present(h, 'finished_at') { |v| Time.zone.parse(v) }
  RRRSpec.convert_if_present(h, 'passed') { |v| v.to_i }
  RRRSpec.convert_if_present(h, 'pending') { |v| v.to_i }
  RRRSpec.convert_if_present(h, 'failed') { |v| v.to_i }
  h
end

#to_json(options = nil) ⇒ Object



853
854
855
# File 'lib/rrrspec/redis_models.rb', line 853

def to_json(options=nil)
  to_h.to_json(options)
end