55 lines
1.7 KiB
Ruby
55 lines
1.7 KiB
Ruby
module SpecHelperHelpers
|
|
def clean_redis_databases
|
|
$tables_metadata.flushdb
|
|
$api_credentials.flushdb
|
|
$users_metadata.flushdb
|
|
end
|
|
|
|
def clean_metadata_database
|
|
if ENV['STELLAR'].present?
|
|
SequelRails.connection.disconnect
|
|
system "#{ENV['STELLAR']} restore"
|
|
else
|
|
protected_tables = [:schema_migrations, :spatial_ref_sys]
|
|
SequelRails.connection.tables.each do |t|
|
|
if !protected_tables.include?(t)
|
|
begin
|
|
SequelRails.connection.run("TRUNCATE TABLE \"#{t}\" CASCADE")
|
|
rescue Sequel::DatabaseError => e
|
|
raise e unless e.message =~ /PG::Error: ERROR: relation ".*" does not exist/
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def close_pool_connections
|
|
# To avoid Travis and connection leaks
|
|
$pool.close_connections!
|
|
end
|
|
|
|
def drop_leaked_test_user_databases
|
|
user_database_names = SequelRails.connection[
|
|
"SELECT datname FROM pg_database WHERE datistemplate IS FALSE AND datallowconn IS TRUE AND datname like 'cartodb_test_user_%'"
|
|
]
|
|
|
|
user_database_names.map(:datname).each do |user_database_name|
|
|
puts "Dropping leaked test database #{user_database_name}"
|
|
CartoDB::UserModule::DBService.terminate_database_connections(
|
|
user_database_name, ::SequelRails.configuration.environment_for(Rails.env)['host']
|
|
)
|
|
SequelRails.connection.run("drop database \"#{user_database_name}\"")
|
|
end
|
|
end
|
|
|
|
def delete_database_test_users
|
|
usernames = SequelRails.connection['SELECT u.usename FROM pg_catalog.pg_user u'].map do |r|
|
|
r.values.first
|
|
end
|
|
|
|
usernames.each do |username|
|
|
SequelRails.connection.run("drop user \"#{username}\"") if username =~ /^test_cartodb_user_/
|
|
end
|
|
end
|
|
end
|