Class: RRRSpec::WorkerLog

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(worker_log_key) ⇒ WorkerLog

Returns a new instance of WorkerLog.



476
477
478
# File 'lib/rrrspec/redis_models.rb', line 476

def initialize(worker_log_key)
  @key = worker_log_key
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



474
475
476
# File 'lib/rrrspec/redis_models.rb', line 474

def key
  @key
end

Class Method Details

.create(worker, taskset) ⇒ Object

Public: Create a new worker_log. This method will call Taskset#add_worker_log



482
483
484
485
486
487
488
489
490
491
492
493
# File 'lib/rrrspec/redis_models.rb', line 482

def self.create(worker, taskset)
  worker_log_key = RRRSpec.make_key(taskset.key, worker.key)
  RRRSpec.redis.hmset(
    worker_log_key,
    'worker', worker.key,
    'taskset', taskset.key,
    'started_at', Time.zone.now.to_s,
  )
  worker_log = new(worker_log_key)
  taskset.add_worker_log(worker_log)
  return worker_log
end

Instance Method Details

#append_log(string) ⇒ Object

Public: Append a line to the log



546
547
548
# File 'lib/rrrspec/redis_models.rb', line 546

def append_log(string)
  RRRSpec.redis.append(RRRSpec.make_key(key, 'log'), string)
end

#expire(sec) ⇒ Object

Persistence



573
574
575
576
# File 'lib/rrrspec/redis_models.rb', line 573

def expire(sec)
  RRRSpec.redis.expire(key, sec)
  RRRSpec.redis.expire(RRRSpec.make_key(key, 'log'), sec)
end

#finished_atObject

Public: Returns the finished_at



530
531
532
533
# File 'lib/rrrspec/redis_models.rb', line 530

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

#logObject

Public: Logs happend in worker



541
542
543
# File 'lib/rrrspec/redis_models.rb', line 541

def log
  RRRSpec.redis.get(RRRSpec.make_key(key, 'log')) || ""
end

#rsync_finished_atObject

Public: Returns the rsync_finished_at



508
509
510
511
# File 'lib/rrrspec/redis_models.rb', line 508

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

#set_finished_timeObject

Public: Set finished_at time if it is empty



536
537
538
# File 'lib/rrrspec/redis_models.rb', line 536

def set_finished_time
  RRRSpec.redis.hsetnx(key, 'finished_at', Time.zone.now.to_s)
end

#set_rsync_finished_timeObject

Public: Set rsync_finished_at time



514
515
516
# File 'lib/rrrspec/redis_models.rb', line 514

def set_rsync_finished_time
  RRRSpec.redis.hset(key, 'rsync_finished_at', Time.zone.now.to_s)
end

#set_setup_finished_timeObject

Public: Set setup_finished_at time



525
526
527
# File 'lib/rrrspec/redis_models.rb', line 525

def set_setup_finished_time
  RRRSpec.redis.hset(key, 'setup_finished_at', Time.zone.now.to_s)
end

#setup_finished_atObject

Public: Returns the setup_finished_at



519
520
521
522
# File 'lib/rrrspec/redis_models.rb', line 519

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

#started_atObject

Public: Returns the started_at



499
500
501
502
# File 'lib/rrrspec/redis_models.rb', line 499

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

#to_hObject

Serialize



553
554
555
556
557
558
559
560
561
562
563
564
# File 'lib/rrrspec/redis_models.rb', line 553

def to_h
  h = RRRSpec.redis.hgetall(key)
  h['key'] = key
  h['log'] = log
  h['worker'] = { 'key' => h['worker'] }
  h['taskset'] = { 'key' => h['taskset'] }
  RRRSpec.convert_if_present(h, 'started_at') { |v| Time.zone.parse(v) }
  RRRSpec.convert_if_present(h, 'rsync_finished_at') { |v| Time.zone.parse(v) }
  RRRSpec.convert_if_present(h, 'setup_finished_at') { |v| Time.zone.parse(v) }
  RRRSpec.convert_if_present(h, 'finished_at') { |v| Time.zone.parse(v) }
  h
end

#to_json(options = nil) ⇒ Object



566
567
568
# File 'lib/rrrspec/redis_models.rb', line 566

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