poolboy 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Sam
1
+ Copyright (c) 2013 Sam Lambert
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Poolboy
2
2
 
3
+
4
+ host: 127.0.0.1
5
+ user: root
6
+ pass: pass
7
+ refresh: 5
8
+
9
+
3
10
  TODO: Write a gem description
4
11
 
5
12
  ## Installation
data/bin/poolboy CHANGED
@@ -2,4 +2,6 @@
2
2
 
3
3
  $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
4
 
5
- require 'poolboy'
5
+ require 'poolboy'
6
+
7
+ Poolboy.execute
File without changes
File without changes
data/lib/poolboy/mysql.rb CHANGED
@@ -1,32 +1,37 @@
1
1
  require 'mysql2'
2
2
 
3
- class Mysql
3
+ class MysqlConnection
4
4
 
5
- def initialize(host, user, pass)
5
+ def initialize(options)
6
6
  begin
7
- @mysql = Mysql2::Client.new(:host => host, :username => user, :password => pass, :database => 'information_schema', :connect_timeout => 2, :symbolize_keys => true)
7
+ @mysql = Mysql2::Client.new(options.merge({:database => 'information_schema', :connect_timeout => 2, :symbolize_keys => true}))
8
8
  rescue Mysql2::Error => e
9
9
  puts e
10
- exit
10
+ exit 1
11
11
  end
12
12
  end
13
13
 
14
14
  def version
15
- version = @mysql.query("SHOW VARIABLES LIKE 'version'")
15
+ version = query("SHOW VARIABLES LIKE 'version'")
16
16
  return version.first[:Value]
17
17
  end
18
18
 
19
+ def percona
20
+ xtra = query("show variables like 'innodb_import_table_from_xtrabackup'")
21
+ return xtra.count >= 1 ? true : false
22
+ exit
23
+ end
24
+
19
25
  def query(query)
20
26
  begin
21
- results = @mysql.query(query)
22
- return results
27
+ @mysql.query(query)
23
28
  rescue Mysql2::Error => e
24
29
  puts e
25
- exit
30
+ exit 1
26
31
  end
27
32
  end
28
33
 
29
- def disconnect()
34
+ def disconnect
30
35
  @mysql.close
31
36
  end
32
37
  end
@@ -1,8 +1,13 @@
1
- require 'curses'
2
1
 
3
2
  class Screen
4
3
 
5
- def self.show_message(message)
4
+ def initialize(window)
5
+ @win = window
6
+ @width = @win.maxx
7
+ @hight = @win.maxy
8
+ end
9
+
10
+ def show_message(message)
6
11
  @win.setpos(0, 0)
7
12
  message['stats'].each do |s|
8
13
  pool_size = (s.fetch(:pages_misc).to_i + s.fetch(:pages_data).to_i * s.fetch(:page_size).to_i / 1024 / 1024)
@@ -34,9 +39,4 @@ require 'curses'
34
39
  @win.refresh
35
40
  end
36
41
 
37
- def self.open_screen()
38
- @win = Curses::Window.new(0,0,0,0)
39
- @width = @win.maxx
40
- @hight = @win.maxy
41
- end
42
42
  end
@@ -1,3 +1,3 @@
1
1
  module Poolboy
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/poolboy.rb CHANGED
@@ -1,62 +1,74 @@
1
1
  require 'poolboy/screen'
2
2
  require 'poolboy/mysql'
3
- require 'poolboy/55'
4
- require 'poolboy/51'
3
+ require 'poolboy/five_five'
4
+ require 'poolboy/five_one'
5
5
  require 'optparse'
6
6
  require 'yaml'
7
+ require 'curses'
7
8
 
8
9
  module Poolboy
9
10
 
10
- options = {}
11
- OptionParser.new do |opts|
12
- opts.on("-h HOST") do |h|
13
- options[:host] = h
11
+ def Poolboy.execute
12
+
13
+ options = YAML.load(File.read(ENV['HOME']+'/.poolboy.yaml')) rescue {}
14
+
15
+ o = OptionParser.new do |opts|
16
+ opts.on("-h HOST") do |h|
17
+ options[:host] = h
18
+ end
19
+ opts.on("-u USER") do |u|
20
+ options[:username] = u
21
+ end
22
+ opts.on("-p PASSWORD") do |p|
23
+ options[:password] = p
24
+ end
25
+ opts.on("-r REFRESH", Integer) do |r|
26
+ options[:refresh] = r >= 1 ? r : 1
27
+ end
28
+ if not options.has_key?(:refresh)
29
+ options[:refresh] = 5
30
+ end
14
31
  end
15
- opts.on("-u USER") do |u|
16
- options[:user] = u
32
+
33
+ begin o.parse!
34
+ rescue OptionParser::InvalidOption => e
35
+ puts e
36
+ puts o
37
+ exit 128
17
38
  end
18
- opts.on("-p PASSWORD") do |p|
19
- options[:pass] = p
39
+
40
+ connection = MysqlConnection.new(options)
41
+ connection.percona
42
+ percona = connection.percona ? connection.percona : version_exit
43
+ version = connection.version
44
+
45
+ case version[0,3]
46
+ when '5.1'
47
+ mysql_map = FiveOne
48
+ when '5.5'
49
+ mysql_map = FiveFive
50
+ else
51
+ version_exit
20
52
  end
21
- end.parse!
22
53
 
23
- if options.length < 3
54
+ window = Curses::Window.new(0,0,0,0)
55
+ screen = Screen.new(window)
56
+
24
57
  begin
25
- config_file = YAML.parse_file(ENV['HOME']+'/.poolboy.yaml').to_ruby
26
- if not options.has_key?(:host)
27
- options[:host] = config_file["host"]
28
- end
29
- if not options.has_key?(:user)
30
- options[:user] = config_file["user"]
58
+ while true
59
+ results = mysql_map.get_stats(connection)
60
+ screen.show_message(results)
61
+ sleep(options[:refresh])
31
62
  end
32
- if not options.has_key?(:pass)
33
- options[:pass] = config_file["pass"]
34
- end
35
- rescue Errno::ENOENT
63
+ rescue SystemExit, Interrupt
64
+ connection.disconnect
65
+ exit
36
66
  end
37
67
  end
38
68
 
39
- my_con = Mysql.new(options[:host], options[:user], options[:pass])
40
- version = my_con::version
41
- if version[0,3] == '5.1'
42
- mysql_map = FiveOne
43
- elsif version[0,3] == '5.5'
44
- mysql_map = FiveFive
45
- else
46
- puts "Incompatible MySQL version. Poolboy is only compatable with Percona Server."
47
- exit
48
- end
49
- screen = Screen
50
- screen::open_screen()
51
-
52
- begin
53
- while true
54
- results = mysql_map::get_stats(my_con)
55
- screen::show_message(results)
56
- sleep(1)
57
- end
58
- rescue SystemExit, Interrupt
59
- exit
69
+ def Poolboy.version_exit
70
+ puts "Incompatible MySQL version! Poolboy is only compatible with Percona Server 5.1 and 5.5"
71
+ exit 1
60
72
  end
61
73
 
62
74
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poolboy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Sam
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-05-31 00:00:00.000000000 Z
12
+ date: 2013-06-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: mysql2
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: bundler
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rake
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ! '>='
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
@@ -67,8 +74,8 @@ files:
67
74
  - Rakefile
68
75
  - bin/poolboy
69
76
  - lib/poolboy.rb
70
- - lib/poolboy/51.rb
71
- - lib/poolboy/55.rb
77
+ - lib/poolboy/five_five.rb
78
+ - lib/poolboy/five_one.rb
72
79
  - lib/poolboy/mysql.rb
73
80
  - lib/poolboy/screen.rb
74
81
  - lib/poolboy/version.rb
@@ -76,25 +83,26 @@ files:
76
83
  homepage: http://www.samlambert.com
77
84
  licenses:
78
85
  - MIT
79
- metadata: {}
80
86
  post_install_message:
81
87
  rdoc_options: []
82
88
  require_paths:
83
89
  - lib
84
90
  required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
85
92
  requirements:
86
93
  - - ! '>='
87
94
  - !ruby/object:Gem::Version
88
95
  version: '0'
89
96
  required_rubygems_version: !ruby/object:Gem::Requirement
97
+ none: false
90
98
  requirements:
91
99
  - - ! '>='
92
100
  - !ruby/object:Gem::Version
93
101
  version: '0'
94
102
  requirements: []
95
103
  rubyforge_project:
96
- rubygems_version: 2.0.3
104
+ rubygems_version: 1.8.24
97
105
  signing_key:
98
- specification_version: 4
106
+ specification_version: 3
99
107
  summary: Poolboy lets you view the data in your buffer pool
100
108
  test_files: []
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZjIwZTBhYWMyNGNjODJiNzg0YzlkYTAxNzdkMTFlNGI4ZTg2YWMzZA==
5
- data.tar.gz: !binary |-
6
- NDJhYTcyNTE3NzFlNzUyYjAxOTA2ZmIwZGQ4Yzc1MzRjYzEwZjQ4YQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- NjQwMWJmNjJmNjUwMTk1ODkzMWQ0NGJkMTdmNGIwZjQ2MzNlMmE3NDAxY2U5
10
- MGMxNmMzNGQ0OWE4MDUyYTkzYTFhZGI4MWU2Y2VjNzQ1N2E3MTcxM2U4OGY5
11
- ODcyNTNhODFiZWE2MjU2YmU1ODQ2ZDAyMWY1NzcwNzE2M2M2MzM=
12
- data.tar.gz: !binary |-
13
- ODE4MmFhYjEwOWI0MWJjZTBlOTYzODRhMmViNzcxMDk3NGUwZjY2MGRkODlj
14
- YTRmMGY0MWY4NTA0ZTc5ODRkYWNkMGE3NThhYTY0MmFiM2UxMWNiNDVmM2E3
15
- NTY3ZDRiZDI2ZDk0ZDA1NzdhNzYzYzRmNDYwYmUzYjk0OWQzMGQ=