Class: PseudoCleaner::RedisBasedRedisCleaner

Inherits:
RedisCleaner show all
Defined in:
lib/pseudo_cleaner/redis_based_redis_cleaner.rb

Constant Summary

Constants inherited from RedisCleaner

PseudoCleaner::RedisCleaner::ALL_COMMANDS, PseudoCleaner::RedisCleaner::COMMANDS, PseudoCleaner::RedisCleaner::FLUSH_COMMANDS, PseudoCleaner::RedisCleaner::NIL_FAIL_COMMANDS, PseudoCleaner::RedisCleaner::NUM_CHANGED_COMMANDS, PseudoCleaner::RedisCleaner::OVERRIDE_COMMANDS, PseudoCleaner::RedisCleaner::POP_COMMANDS, PseudoCleaner::RedisCleaner::READ_COMMANDS, PseudoCleaner::RedisCleaner::WRITE_COMMANDS

Instance Attribute Summary

Attributes inherited from RedisCleaner

#options

Instance Method Summary collapse

Methods inherited from RedisCleaner

#<=>, #extract_key, #extract_keys, #ignore_regexes, #initialize, #method_missing, #peek_values, #process_command, #redis, #redis_name, #report_dirty_values, #report_end_of_suite_state, #report_record, #reset_suite, #respond_to?, #respond_to_missing?, #review_rows, #self_respond_to?, #split_read_values, #start_monitor, #suite_start, #suspend_tracking, #synchronize_test_values, #test_end, #test_start, #track_reads, #track_reads=, #type

Constructor Details

This class inherits a constructor from PseudoCleaner::RedisCleaner

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class PseudoCleaner::RedisCleaner

Instance Method Details

#add_set_value(value_name, value) ⇒ Object



120
121
122
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 120

def add_set_value(value_name, value)
  settings_redis.sadd set_name(value_name), value
end

#add_set_values(value_name, *values) ⇒ Object



110
111
112
113
114
115
116
117
118
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 110

def add_set_values(value_name, *values)
  add_name = set_name(value_name)

  settings_redis.multi do
    values.each do |value|
      settings_redis.sadd add_name, value
    end
  end
end

#append_list_value_array(value_name, array_value) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 39

def append_list_value_array(value_name, array_value)
  list_len = settings_redis.llen list_name(value_name)

  sub_name = sub_list_name(value_name, list_len)

  settings_redis.multi do
    array_value.each do |value|
      if value.is_a?(Hash)
        settings_redis.rpush sub_name, "h#{value.to_json}"
      else
        settings_redis.rpush sub_name, "s#{value}"
      end
    end

    settings_redis.rpush list_name(value_name), sub_name
  end
end

#base_keyObject



6
7
8
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 6

def base_key
  "PseudoCleaner::RedisBasedRedisCleaner"
end

#bool_name(value_name) ⇒ Object



19
20
21
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 19

def bool_name(value_name)
  "#{base_key}::#{value_name}"
end

#clear_list_array(value_name) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 87

def clear_list_array(value_name)
  settings_redis.lrange(list_name(value_name), 0, -1).each do |sub_list_name|
    settings_redis.del sub_list_name
  end

  settings_redis.del list_name(value_name)
end

#clear_set(value_name, keys = nil) ⇒ Object



99
100
101
102
103
104
105
106
107
108
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 99

def clear_set(value_name, keys = nil)
  clear_name = set_name(value_name)
  settings_redis.del clear_name

  if keys
    keys.each do |key|
      settings_redis.sadd clear_name, key
    end
  end
end

#get_list_array(value_name) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 61

def get_list_array(value_name)
  list_len = settings_redis.llen list_name(value_name)

  list_array = []
  list_len.times do |index|
    sub_name = sub_list_name value_name, index

    value_array = []
    values      = settings_redis.lrange(sub_name, 0, -1)

    values.each do |value|
      if value [0] == "h"
        value = JSON.parse(value[1..-1])
      else
        value = value[1..-1]
      end

      value_array << value
    end

    list_array << value_array
  end

  list_array
end

#get_list_length(value_name) ⇒ Object



57
58
59
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 57

def get_list_length(value_name)
  settings_redis.llen list_name(value_name)
end

#get_set(value_name) ⇒ Object



132
133
134
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 132

def get_set(value_name)
  SortedSet.new(settings_redis.smembers(set_name(value_name)))
end

#get_value_bool(value_name) ⇒ Object



27
28
29
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 27

def get_value_bool(value_name)
  settings_redis.get(bool_name(value_name)) != "false"
end

#ignore_key(key) ⇒ Object



14
15
16
17
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 14

def ignore_key(key)
  key =~ /#{base_key}/ ||
      ignore_regexes.detect { |ignore_regex| key =~ ignore_regex }
end

#list_name(value_name) ⇒ Object



31
32
33
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 31

def list_name(value_name)
  "#{base_key}::#{value_name}"
end

#remove_set_value(value_name, value) ⇒ Object



124
125
126
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 124

def remove_set_value(value_name, value)
  settings_redis.srem set_name(value_name), value
end

#set_includes?(value_name, value) ⇒ Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 128

def set_includes?(value_name, value)
  settings_redis.sismember set_name(value_name), value
end

#set_name(value_name) ⇒ Object



95
96
97
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 95

def set_name(value_name)
  "#{base_key}::#{value_name}"
end

#set_value_bool(value_name, bool_value) ⇒ Object



23
24
25
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 23

def set_value_bool(value_name, bool_value)
  settings_redis.set bool_name(value_name), (!!bool_value).to_s
end

#settings_redisObject



10
11
12
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 10

def settings_redis
  @settings_redis ||= Redis.new(redis.client.options)
end

#sub_list_name(value_name, index) ⇒ Object



35
36
37
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 35

def sub_list_name(value_name, index)
  "#{list_name(value_name)}::#{index}"
end

#suite_end(test_strategy) ⇒ Object



136
137
138
139
140
141
142
# File 'lib/pseudo_cleaner/redis_based_redis_cleaner.rb', line 136

def suite_end test_strategy
  super test_strategy

  settings_redis.keys("#{base_key}*").each do |key|
    settings_redis.del key
  end
end