module PGConnectionGeneralLogTest
Public Instance Methods
db_init()
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 24 def db_init @client.exec('DROP TABLE IF EXISTS users') @client.exec(<<~SQL) CREATE TABLE users ( id SERIAL NOT NULL PRIMARY KEY, name varchar(255) NOT NULL UNIQUE, password varchar(255) NOT NULL ); SQL @client.exec(<<~SQL) INSERT INTO users (name, password) VALUES ('hoge', 'cheap-pass'), ('foo', 'fooo'), ('bar', 'barr') ; SQL PG::Connection::GeneralLog.general_log.clear end
example_general_log()
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 155 def example_general_log db_init @client.exec("SELECT * FROM users WHERE name = '#{'hoge'}'") @client.exec_params('SELECT * FROM users WHERE name = $1', ['hoge']) @client.prepare('select2', 'SELECT * FROM users WHERE name = $1') @client.exec_prepared('select2', ['bar']) @client.exec_prepared('select2', ['foo']) puts PG::Connection::GeneralLog.general_log.map { |log| [log.sql, log.args.to_s, log.backtrace.find{|c| %r{/gems/} !~ c.to_s}.to_s.gsub(/.*?:/, '')].join(' ') } # Output: # SELECT * FROM users WHERE name = 'hoge' [] in `example_general_log' # SELECT * FROM users WHERE name = $1 ["hoge"] in `example_general_log' # SELECT * FROM users WHERE name = $1 ["bar"] in `example_general_log' # SELECT * FROM users WHERE name = $1 ["foo"] in `example_general_log' end
test_async_values(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 125 def test_async_values(t) db_init ret = @client.async_exec("SELECT * FROM users WHERE name = '#{'hoge'}'").first @client.async_exec("SELECT * FROM users WHERE name = '#{'bar'}'") @client.async_exec("SELECT * FROM users WHERE name = '#{'foo'}'") if PG::Connection::GeneralLog.general_log.length != 3 t.error("expect log length 3 got #{PG::Connection::GeneralLog.general_log.length}") end if PG::Connection::GeneralLog.general_log.any?{|log| !log.is_a?(PG::Connection::GeneralLog::Log)} t.error("expect all collection item is instance of PG::Connection::GeneralLog::Log got #{PG::Connection::GeneralLog.general_log.map(&:class).uniq}") end expect = { 'id' => '1', 'name' => 'hoge', 'password' => 'cheap-pass' } if ret != expect t.error("expect exec output not change from #{expect} got #{ret}") end unless PG::Connection::GeneralLog.general_log.first.format =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = 'hoge'\t\[\]$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format}`") end unless PG::Connection::GeneralLog.general_log.first.format(true) =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = 'hoge'\t\[\].+in `test_async_values'$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format(true)}`") end end
test_init(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 43 def test_init(t) unless PG::Connection::GeneralLog.general_log.is_a?(Array) t.error("initial value expect Array class got #{PG::Connection::GeneralLog.general_log.class}") end unless PG::Connection::GeneralLog.general_log.empty? t.error("initial value expect [] got #{PG::Connection::GeneralLog.general_log}") end end
test_log_class(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 149 def test_log_class(t) if PG::Connection::GeneralLog::Log.members != %i[sql args backtrace time] t.error("expect PG::Connection::GeneralLog::Log.members is [:sql, :args, :backtrace, :time] got #{PG::Connection::GeneralLog::Log.members}") end end
test_main(m)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 4 def test_main(m) PG::Connection::GeneralLog.prepend_module client = PG.connect( host: '127.0.0.1', user: 'postgres' ) client.exec('DROP DATABASE IF EXISTS pg_connection_general_log_test') client.exec('CREATE DATABASE pg_connection_general_log_test') @client = PG.connect( host: '127.0.0.1', user: 'postgres', dbname: 'pg_connection_general_log_test' ) PG::Connection::GeneralLog.general_log.clear exit m.run client.exec('DROP DATABASE IF EXISTS pg_connection_general_log_test') end
test_params_values(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 76 def test_params_values(t) db_init ret = @client.exec_params('SELECT * FROM users WHERE name = $1', ['hoge']).first @client.exec_params('SELECT * FROM users WHERE name = $1', ['bar']) @client.exec_params('SELECT * FROM users WHERE name = $1', ['foo']) if PG::Connection::GeneralLog.general_log.length != 3 t.error("expect log length 3 got #{PG::Connection::GeneralLog.general_log.length}") end if PG::Connection::GeneralLog.general_log.any?{|log| !log.is_a?(PG::Connection::GeneralLog::Log)} t.error("expect all collection item is instance of PG::Connection::GeneralLog::Log got #{PG::Connection::GeneralLog.general_log.map(&:class).uniq}") end expect = { 'id' => '1', 'name' => 'hoge', 'password' => 'cheap-pass' } if ret != expect t.error("expect exec output not change from #{expect} got #{ret}") end unless PG::Connection::GeneralLog.general_log.first.format =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = \$1\t\["hoge"\]$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format}`") end unless PG::Connection::GeneralLog.general_log.first.format(true) =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = \$1\t\["hoge"\].+in `test_params_values'$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format(true)}`") end end
test_prepare_values(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 100 def test_prepare_values(t) db_init @client.prepare('select', 'SELECT * FROM users WHERE name = $1') ret = @client.exec_prepared('select', ['hoge']).first @client.exec_prepared('select', ['bar']) @client.exec_prepared('select', ['foo']) if PG::Connection::GeneralLog.general_log.length != 3 t.error("expect log length 3 got #{PG::Connection::GeneralLog.general_log.length}") end if PG::Connection::GeneralLog.general_log.any?{|log| !log.is_a?(PG::Connection::GeneralLog::Log)} t.error("expect all collection item is instance of PG::Connection::GeneralLog::Log got #{PG::Connection::GeneralLog.general_log.map(&:class).uniq}") end expect = { 'id' => '1', 'name' => 'hoge', 'password' => 'cheap-pass' } if ret != expect t.error("expect exec output not change from #{expect} got #{ret}") end unless PG::Connection::GeneralLog.general_log.first.format =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = \$1\t\["hoge"\]$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format}`") end unless PG::Connection::GeneralLog.general_log.first.format(true) =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = \$1\t\["hoge"\].+in `test_prepare_values'$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format(true)}`") end end
test_values(t)
click to toggle source
# File lib/pg/connection/general_log_test.rb, line 52 def test_values(t) db_init ret = @client.exec("SELECT * FROM users WHERE name = '#{'hoge'}'").first @client.exec("SELECT * FROM users WHERE name = '#{'bar'}'") @client.exec("SELECT * FROM users WHERE name = '#{'foo'}'") if PG::Connection::GeneralLog.general_log.length != 3 t.error("expect log length 3 got #{PG::Connection::GeneralLog.general_log.length}") end if PG::Connection::GeneralLog.general_log.any?{|log| !log.is_a?(PG::Connection::GeneralLog::Log)} t.error("expect all collection item is instance of PG::Connection::GeneralLog::Log got #{PG::Connection::GeneralLog.general_log.map(&:class).uniq}") end expect = { 'id' => '1', 'name' => 'hoge', 'password' => 'cheap-pass' } if ret != expect t.error("expect exec output not change from #{expect} got #{ret}") end unless PG::Connection::GeneralLog.general_log.first.format =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = 'hoge'\t\[\]$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format}`") end unless PG::Connection::GeneralLog.general_log.first.format(true) =~ /^SQL\t\(\d+\.\d+ms\)\tSELECT \* FROM users WHERE name = 'hoge'\t\[\].+in `test_values'$/ t.error("expect log format not correct got `#{PG::Connection::GeneralLog.general_log.first.format(true)}`") end end