class Soar::Registry::Directory::Test::Provider::DynamoDb
Public Class Methods
new()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 12 def initialize @retries = 5 @configuration = YAML.load_file("config/#{ENV['CONFIG_FILE']}") @table = @configuration['provider']['config']['table'] @index = @table['index'] @entries = JSON.parse(File.read("lib/soar/registry/directory/test/fixtures/entries.json")) @connection_retries = 6 end
Public Instance Methods
duplicate_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 89 def duplicate_entry? @error.is_a?(Soar::Registry::Directory::Error::DuplicateEntryError) end
fetch_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 78 def fetch_entry begin @result = @directory.fetch({ @index.keys[0] => @entries[0]['partition_key'], @index.keys[1] => @entries[0]['sort_key'] }) rescue Soar::Registry::Directory::Error::NoEntriesFoundError, Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
given_configured_directory()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 21 def given_configured_directory begin provider = Soar::Registry::Directory::Provider::DynamoDb.new(@configuration['provider']['config'].map { |k, v| [k.to_sym, v] }.to_h) @directory = Soar::Registry::Directory.new(provider) @directory.provider.recreate_table({ name: @table['name'], structure: JSON.parse(File.read("lib/soar/registry/directory/test/fixtures/table_structure.json")) }) rescue Soar::Registry::Directory::Error::NetworkingError => e raise if @connection_retries == 0 sleep 10 @connection_retries -= 1 given_configured_directory end end
given_existing_data()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 37 def given_existing_data @entries.each{ |entry| @directory.put(entry) } end
index?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 104 def index? @index == { "partition_key" => @index['partition_key'], "sort_key" => @index['sort_key'], "global_secondary_index" => @index['global_secondary_index'] } end
networking_error?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 120 def networking_error? @error.is_a?(Soar::Registry::Directory::Error::NetworkingError) end
no_entries_found?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 116 def no_entries_found? @error.is_a?(Soar::Registry::Directory::Error::NoEntriesFoundError) end
no_matching_entries?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 124 def no_matching_entries? @result == [] end
persisted?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 93 def persisted? @entries[0] == @directory.fetch({ @index.keys[0] => @entries[0]['partition_key'], @index.keys[1] => @entries[0]['sort_key'] }) end
put_duplicate_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 48 def put_duplicate_entry put_entry end
put_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 52 def put_entry begin @directory.put(@entries[0]) rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e rescue Soar::Registry::Directory::Error::DuplicateEntryError => e @error = e end end
request_index()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 70 def request_index begin @result = @directory.index rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
returned?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 100 def returned? @result == [@entries[0]] end
sabotage_network()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 43 def sabotage_network @configuration['provider']['config']['configuration']['endpoint'] = 'http://does-not-exist' @directory.provider.client = Aws::DynamoDB::Client.new(@configuration['provider']['config']['configuration'].map { |k, v| [k.to_sym, v] }.to_h) end
search_for_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 62 def search_for_entry begin @result = @directory.search("global_secondary_index1", @entries[0]['global_secondary_index1']) rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
single_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/dynamo_db.rb, line 112 def single_entry? @result == @entries[0] end