Class: Coverband::Adapters::MemcachedStore

Inherits:
Base
  • Object
show all
Defined in:
lib/coverband/adapters/memcached_store.rb

Constant Summary collapse

STORAGE_FORMAT_VERSION =
"coverband_3_2"

Constants inherited from Base

Base::ABSTRACT_KEY, Base::DATA_KEY, Base::FILE_HASH, Base::FIRST_UPDATED_KEY, Base::LAST_UPDATED_KEY

Instance Attribute Summary collapse

Attributes inherited from Base

#type

Instance Method Summary collapse

Methods inherited from Base

#covered_files, #get_coverage_report, #size_in_mib

Constructor Details

#initialize(memcached, opts = {}) ⇒ MemcachedStore

Returns a new instance of MemcachedStore.



10
11
12
13
14
15
16
17
18
19
# File 'lib/coverband/adapters/memcached_store.rb', line 10

def initialize(memcached, opts = {})
  super()
  @memcached = memcached
  @memcached_namespace = opts[:memcached_namespace]
  @format_version = STORAGE_FORMAT_VERSION
  @keys = {}
  Coverband::TYPES.each do |type|
    @keys[type] = [@format_version, @memcached_namespace, type].compact.join(".")
  end
end

Instance Attribute Details

#memcachedObject (readonly)

Returns the value of attribute memcached.



62
63
64
# File 'lib/coverband/adapters/memcached_store.rb', line 62

def memcached
  @memcached
end

#memcached_namespaceObject (readonly)

Returns the value of attribute memcached_namespace.



8
9
10
# File 'lib/coverband/adapters/memcached_store.rb', line 8

def memcached_namespace
  @memcached_namespace
end

Instance Method Details

#clear!Object



21
22
23
24
25
# File 'lib/coverband/adapters/memcached_store.rb', line 21

def clear!
  Coverband::TYPES.each do |type|
    @memcached.delete(type_base_key(type))
  end
end

#clear_file!(filename) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/coverband/adapters/memcached_store.rb', line 27

def clear_file!(filename)
  Coverband::TYPES.each do |type|
    data = coverage(type)
    data.delete(filename)
    save_coverage(data, type)
  end
end

#coverage(local_type = nil, opts = {}) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/coverband/adapters/memcached_store.rb', line 44

def coverage(local_type = nil, opts = {})
  local_type ||= opts.key?(:override_type) ? opts[:override_type] : type
  data = memcached.read(type_base_key(local_type))
  data = data ? JSON.parse(data) : {}
  data.delete_if { |file_path, file_data| file_hash(file_path) != file_data["file_hash"] } unless opts[:skip_hash_check]
  data
end

#raw_storeObject

Raises:

  • (NotImplementedError)


58
59
60
# File 'lib/coverband/adapters/memcached_store.rb', line 58

def raw_store
  raise NotImplementedError, "MemcachedStore doesn't support raw_store"
end

#save_report(report) ⇒ Object



52
53
54
55
56
# File 'lib/coverband/adapters/memcached_store.rb', line 52

def save_report(report)
  data = report.dup
  data = merge_reports(data, coverage(nil, skip_hash_check: true))
  save_coverage(data)
end

#sizeObject



35
36
37
# File 'lib/coverband/adapters/memcached_store.rb', line 35

def size
  @memcached.read(base_key) ? @memcached.read(base_key).bytesize : "N/A"
end

#type=(type) ⇒ Object



39
40
41
42
# File 'lib/coverband/adapters/memcached_store.rb', line 39

def type=(type)
  super
  reset_base_key
end