Module: Mysql2ClientGeneralLogsTest

Defined in:
lib/mysql2/client/general_logs_test.rb

Instance Method Summary collapse

Instance Method Details

#db_initObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mysql2/client/general_logs_test.rb', line 13

def db_init
  @client.query("DROP DATABASE IF EXISTS `mysql2_client_general_logs_test`")
  @client.query("CREATE DATABASE `mysql2_client_general_logs_test`")
  @client.query("USE `mysql2_client_general_logs_test`")
  @client.query(<<-SQL)
CREATE TABLE users (
`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(255) NOT NULL UNIQUE,
`password` varchar(255) NOT NULL
);
SQL
  @client.query(<<-SQL)
INSERT INTO `users` (`name`, `password`)
     VALUES ('ksss', 'cheap-pass'),
            ('foo', 'fooo'),
            ('bar', 'barr')
;
SQL
  @client.general_logs.clear
end

#e(s) ⇒ Object



34
35
36
# File 'lib/mysql2/client/general_logs_test.rb', line 34

def e(s)
  Mysql2::Client.escape(s)
end

#example_general_logsObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/mysql2/client/general_logs_test.rb', line 67

def example_general_logs
  db_init
  @client.query("SELECT * FROM users WHERE name = '#{e("ksss")}'")
  @client.query("SELECT * FROM users WHERE name = '#{e("barr")}'")
  @client.query("SELECT * FROM users WHERE name = '#{e("foo")}'")
  puts @client.general_logs.map{|log| log.sql}
  puts @client.general_logs.map{|log| log.backtrace.find{|c| %r{/gems/} !~ c.to_s}.to_s.gsub(/.*?:/, '')}
  # Output:
  # SELECT * FROM users WHERE name = 'ksss'
  # SELECT * FROM users WHERE name = 'barr'
  # SELECT * FROM users WHERE name = 'foo'
  # in `example_general_logs'
  # in `example_general_logs'
  # in `example_general_logs'
end

#test_init(t) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/mysql2/client/general_logs_test.rb', line 38

def test_init(t)
  if !@client.general_logs.kind_of?(Array)
    t.error("initial value expect Array class got #{@client.general_logs.class}")
  end
  if !@client.general_logs.empty?
    t.error("initial value expect [] got #{@client.general_logs}")
  end
end

#test_log_class(t) ⇒ Object



61
62
63
64
65
# File 'lib/mysql2/client/general_logs_test.rb', line 61

def test_log_class(t)
  if Mysql2::Client::GeneralLogs::Log.members != [:sql, :backtrace]
    t.error("expect Mysql2::Client::GeneralLogs::Log.members is [:sql, :backtrace] got #{Mysql2::Client::GeneralLogs::Log.members}")
  end
end

#test_main(m) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/mysql2/client/general_logs_test.rb', line 4

def test_main(m)
  @client = Mysql2::Client.new(
    host: "127.0.0.1",
    username: "root",
  )
  exit m.run
  @client.query("DROP DATABASE IF EXISTS `mysql2_client_general_logs_test`")
end

#test_values(t) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mysql2/client/general_logs_test.rb', line 47

def test_values(t)
  db_init
  @client.query("SELECT * FROM users WHERE name = '#{e("ksss")}'")
  @client.query("SELECT * FROM users WHERE name = '#{e("barr")}'")
  @client.query("SELECT * FROM users WHERE name = '#{e("foo")}'")

  if @client.general_logs.length != 3
    t.error("expect log length 3 got #{@client.general_logs.length}")
  end
  if @client.general_logs.any?{|log| !log.kind_of?(Mysql2::Client::GeneralLogs::Log)}
    t.error("expect all collection item is instance of Mysql2::Client::GeneralLogs::Log got #{@client.general_logs.map(&:class).uniq}")
  end
end