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.



694
695
696
# File 'lib/rrrspec/redis_models.rb', line 694

def initialize(trial_key)
  @key = trial_key
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



692
693
694
# File 'lib/rrrspec/redis_models.rb', line 692

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.



700
701
702
703
704
705
706
707
708
709
710
711
712
713
# File 'lib/rrrspec/redis_models.rb', line 700

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



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

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

#failedObject

Public: Returns the failed examples



800
801
802
803
# File 'lib/rrrspec/redis_models.rb', line 800

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.



752
753
754
755
756
757
758
759
760
761
762
763
# File 'lib/rrrspec/redis_models.rb', line 752

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



772
773
774
775
# File 'lib/rrrspec/redis_models.rb', line 772

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

#passedObject

Public: Returns the passed examples



788
789
790
791
# File 'lib/rrrspec/redis_models.rb', line 788

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

#pendingObject

Public: Returns the pending examples



794
795
796
797
# File 'lib/rrrspec/redis_models.rb', line 794

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



728
729
730
# File 'lib/rrrspec/redis_models.rb', line 728

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

#startObject

Public: Set started_at time.



743
744
745
# File 'lib/rrrspec/redis_models.rb', line 743

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

#started_atObject

Public: Returns the started_at



766
767
768
769
# File 'lib/rrrspec/redis_models.rb', line 766

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”



738
739
740
# File 'lib/rrrspec/redis_models.rb', line 738

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

#stderrObject

Public: Returns the stderr



783
784
785
# File 'lib/rrrspec/redis_models.rb', line 783

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

#stdoutObject

Public: Returns the stdout



778
779
780
# File 'lib/rrrspec/redis_models.rb', line 778

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

#taskObject

Public: Tried task

Returns a Task



721
722
723
# File 'lib/rrrspec/redis_models.rb', line 721

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

#to_hObject

Serialize



808
809
810
811
812
813
814
815
816
817
818
819
# File 'lib/rrrspec/redis_models.rb', line 808

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



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

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