class Soar::Registry::Directory::Test::Provider::Mysql
Constants
- PATH_TO_DATABASE_STRUCTURE_DUMP
Public Class Methods
new()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 13 def initialize @configuration = YAML.load_file("config/#{ENV['CONFIG_FILE']}") @index = @configuration['provider']['config']['index'] @attributes = @configuration['provider']['config']['attributes'] @entries = [{ "ID" => 1, "Client_Number" => "C123456789", "Notifyemail_Invoice" => "johnconner@example.com", "First_Name" => 'John', "Surname" => 'Connor' }, { "ID" => 2, "First_Name" => 'Sarah', "Surname" => 'Connor', "Client_Number" => "C101112134", "Notifyemail_Invoice" => "sarahconnor@example.com" }] @connection_retries = 6 end
Public Instance Methods
duplicate_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 110 def duplicate_entry? !!(@error =~ /\ADuplicate entry .+\z/) end
fetch_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 90 def fetch_entry begin @result = @directory.fetch(@entries[0]['ID']) rescue Soar::Registry::Directory::Error::NoEntriesFoundError, Soar::Registry::Directory::Error::NetworkingError => e @error = e.message end end
given_configured_directory()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 33 def given_configured_directory begin provider_class = Object.const_get(@configuration['provider']['class']) provider = provider_class.new(@configuration['provider']['config'].map { |k,v| [k.to_sym, v]}.to_h ) provider.client.query("DROP TABLE IF EXISTS `Client`") provider.client.query("CREATE TABLE Client ( ID int(11) NOT NULL AUTO_INCREMENT, Client_Number varchar(15) NOT NULL DEFAULT '', First_Name varchar(70) DEFAULT NULL, Surname varchar(70) DEFAULT NULL, Notifyemail_Invoice text, PRIMARY KEY (ID), KEY Notifyemail_Invoice (Notifyemail_Invoice(20)), KEY Client_Number (Client_Number))") @directory = Soar::Registry::Directory.new(provider) 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
Adds @entries to datastore using ldap protocol Adds entryuuid to @entries
# File lib/soar/registry/directory/test/provider/mysql.rb, line 52 def given_existing_data @entries.each{ |entry| @directory.put(entry) } end
index?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 106 def index? @result == @index end
networking_error?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 126 def networking_error? patterns = [ /\Aquery: not connected.*\z/, /\AMySQL server has gone away\z/, /\ACan't connect to local MySQL server through socket.*\z/, /\AERROR 2003 (HY000): Can't connect to MySQL server on.*\z/, /\ALost connection to MySQL server.*\z/ ] patterns.any? { |pattern| break true if !!(@error =~ pattern) } end
no_entries_found?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 118 def no_entries_found? !!(@error =~ /\ANo entries found for .+\z/) end
no_matching_entries?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 122 def no_matching_entries? @result == [] end
persisted?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 98 def persisted? @directory.fetch(@entries[0]['ID']) == @entries[0] end
put_duplicate_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 62 def put_duplicate_entry put_entry end
put_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 66 def put_entry begin result = @directory.put(@entries[0]) rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e.message end end
request_index()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 82 def request_index begin @result = @directory.index rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e.message end end
returned?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 102 def returned? @result == [@entries[0]] end
sabotage_network()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 58 def sabotage_network @directory.provider.client.close end
search_for_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 74 def search_for_entry begin @result = @directory.search("Notifyemail_Invoice", @entries[0]['Notifyemail_Invoice']) rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e.message end end
single_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/mysql.rb, line 114 def single_entry? @result == @entries[0] end