cawcaw 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "bunnish", ">= 0.1.0"
6
+ gem "bunnish", ">= 0.1.2"
7
7
 
8
8
  # Add dependencies to develop your gem here.
9
9
  # Include everything needed to run rake, tests, features, etc.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/cawcaw.gemspec ADDED
@@ -0,0 +1,83 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "cawcaw"
8
+ s.version = "0.0.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kenji Hara"]
12
+ s.date = "2013-01-02"
13
+ s.description = "cawcaw RubyGem"
14
+ s.email = "haracane@gmail.com"
15
+ s.executables = ["cawcaw"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/cawcaw",
29
+ "cawcaw.gemspec",
30
+ "lib/cawcaw.rb",
31
+ "lib/cawcaw/command/hadoop.rb",
32
+ "lib/cawcaw/command/hadoop/dfs.rb",
33
+ "lib/cawcaw/command/rabbitmq.rb",
34
+ "lib/cawcaw/command/rabbitmq/queue_count.rb",
35
+ "lib/cawcaw/core/common.rb",
36
+ "spec/bin/cawcaw/hadoop/dfs_spec.rb",
37
+ "spec/bin/cawcaw/rabbitmq/queue_count_spec.rb",
38
+ "spec/lib/cawcaw_spec.rb",
39
+ "spec/spec_helper.rb"
40
+ ]
41
+ s.homepage = "http://github.com/haracane/cawcaw"
42
+ s.licenses = ["MIT"]
43
+ s.require_paths = ["lib"]
44
+ s.rubygems_version = "1.8.24"
45
+ s.summary = "cawcaw RubyGem"
46
+
47
+ if s.respond_to? :specification_version then
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_runtime_dependency(%q<bunnish>, [">= 0.1.2"])
52
+ s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
53
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
54
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
55
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
56
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
57
+ s.add_development_dependency(%q<simplecov-rcov>, [">= 0"])
58
+ s.add_development_dependency(%q<ci_reporter>, [">= 1.7.0"])
59
+ s.add_development_dependency(%q<flog>, [">= 3.2.0"])
60
+ else
61
+ s.add_dependency(%q<bunnish>, [">= 0.1.2"])
62
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
63
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
64
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
65
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
66
+ s.add_dependency(%q<simplecov>, [">= 0"])
67
+ s.add_dependency(%q<simplecov-rcov>, [">= 0"])
68
+ s.add_dependency(%q<ci_reporter>, [">= 1.7.0"])
69
+ s.add_dependency(%q<flog>, [">= 3.2.0"])
70
+ end
71
+ else
72
+ s.add_dependency(%q<bunnish>, [">= 0.1.2"])
73
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
74
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
75
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
76
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
77
+ s.add_dependency(%q<simplecov>, [">= 0"])
78
+ s.add_dependency(%q<simplecov-rcov>, [">= 0"])
79
+ s.add_dependency(%q<ci_reporter>, [">= 1.7.0"])
80
+ s.add_dependency(%q<flog>, [">= 3.2.0"])
81
+ end
82
+ end
83
+
@@ -14,8 +14,6 @@ module Cawcaw
14
14
  params[:label_warning] ||= 5000000
15
15
  params[:label_critical] ||= 5000000
16
16
 
17
- params[:hadoop_command] ||= "hadoop"
18
-
19
17
  if params[:stdin_flag]
20
18
  hdfs_paths = []
21
19
  while line = input_stream.gets
@@ -35,6 +33,15 @@ module Cawcaw
35
33
  return 1
36
34
  end
37
35
 
36
+ absolute_hdfs_paths = {}
37
+ hdfs_paths.each do |hdfs_path|
38
+ if /^\// =~ hdfs_path
39
+ absolute_hdfs_paths[hdfs_path] = hdfs_path
40
+ else
41
+ absolute_hdfs_paths[hdfs_path] = "#{params[:hadoop_working_directory]}/#{hdfs_path}"
42
+ end
43
+ end
44
+
38
45
  case command
39
46
  when "autoconf"
40
47
  output_stream.puts "yes"
@@ -61,14 +68,20 @@ graph_info #{params[:graph_info]}
61
68
  label_draw = "STACK"
62
69
  end
63
70
  else
64
- result = `#{params[:hadoop_command]} dfs -dus #{hdfs_paths.join(" ")}`
65
- hdfs_size_hash = {}
66
- result = result.split(/\r?\n/).map{|line|line.split(/\s+/)}
67
- result.each do |record|
71
+ result = `#{params[:hadoop_command]} dfs -dus #{hdfs_paths.map{|hdfs_path|absolute_hdfs_paths[hdfs_path]}.join(" ")}`
72
+ # STDERR.puts result
73
+ hdfs_sizes = {}
74
+ result.split(/\r?\n/).each do |line|
75
+ record = line.split(/\s+/)
68
76
  hdfs_uri = record[0]
69
- hdfs_size = record[1]
70
77
  hdfs_uri = URI.parse(hdfs_uri)
71
- label = hdfs_uri.path.gsub(/[^a-zA-Z0-9]/, "_").downcase
78
+ hdfs_sizes[hdfs_uri.path] = record[1]
79
+ end
80
+ # STDERR.puts hdfs_sizes.inspect
81
+
82
+ hdfs_paths.each do |hdfs_path|
83
+ hdfs_size = hdfs_sizes[absolute_hdfs_paths[hdfs_path]]
84
+ label = hdfs_path.gsub(/[^a-zA-Z0-9]/, "_").downcase
72
85
  output_stream.puts "#{label}.value #{hdfs_size}"
73
86
  end
74
87
  end
@@ -7,6 +7,10 @@ module Cawcaw
7
7
  graph_vlabel = nil
8
8
  graph_category = nil
9
9
  graph_info = nil
10
+
11
+ hadoop_working_directory = "/user/#{ENV["USER"]}"
12
+ hadoop_command = "hadoop"
13
+
10
14
  stdin_flag = false
11
15
  verbose_flag = false
12
16
 
@@ -31,6 +35,9 @@ module Cawcaw
31
35
  label_critical = argv.shift.to_i
32
36
  when "--hadoop-command"
33
37
  hadoop_command = argv.shift
38
+ when "--hadoop-wdir"
39
+ hadoop_working_directory = argv.shift
40
+ hadoop_working_directory = hadoop_working_directory.gsub(/\/$/, "")
34
41
  when "--stdin"
35
42
  stdin_flag = true
36
43
  when "--verbose"
@@ -56,6 +63,7 @@ module Cawcaw
56
63
  :label_warning=>label_warning,
57
64
  :label_critical=>label_critical,
58
65
  :hadoop_command=>hadoop_command,
66
+ :hadoop_working_directory=>hadoop_working_directory,
59
67
  :stdin_flag=>stdin_flag,
60
68
  :verbose_flag=>verbose_flag
61
69
  }
@@ -0,0 +1,116 @@
1
+ require "spec_helper"
2
+
3
+ describe "bin/cawcaw hadoop dfs" do
4
+ before :all do
5
+ tmpfile = Tempfile.new("cawcaw_spec.rb")
6
+ tmpfile.puts "foo bar baz"
7
+ tmpfile.close
8
+ system("hadoop dfs -rmr cawcaw-test >/dev/null 2>/dev/null")
9
+ system("hadoop dfs -put #{tmpfile.path} cawcaw-test/")
10
+ end
11
+ context "when hdfs path is absolute" do
12
+ it "should output hadoop dfs config" do
13
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs /user/#{ENV["USER"]}/cawcaw-test config`
14
+ hash = {}
15
+ result.split(/\r?\n/).each do |line|
16
+ record = line.split(/ /, 2)
17
+ hash[record[0]] = record[1]
18
+ end
19
+ result = hash
20
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
21
+ result["graph_title"].should == "HDFS size"
22
+ result["graph_args"].should == "--base 1000"
23
+ result["graph_vlabel"].should == "bytes"
24
+ result["graph_category"].should == "hadoop"
25
+ result["graph_info"].should == "HDFS size"
26
+ result["_user_#{ENV["USER"]}_cawcaw_test.label"].should == "/user/#{ENV["USER"]}/cawcaw-test"
27
+ result["_user_#{ENV["USER"]}_cawcaw_test.info"].should == "/user/#{ENV["USER"]}/cawcaw-test size"
28
+ result["_user_#{ENV["USER"]}_cawcaw_test.draw"].should == "AREA"
29
+ result["_user_#{ENV["USER"]}_cawcaw_test.warning"].should == "5000000"
30
+ result["_user_#{ENV["USER"]}_cawcaw_test.critical"].should == "5000000"
31
+ end
32
+
33
+ it "should output hadoop dfs value" do
34
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs /user/#{ENV["USER"]}/cawcaw-test`
35
+ hash = {}
36
+ result.split(/\r?\n/).each do |line|
37
+ record = line.split(/ /, 2)
38
+ hash[record[0]] = record[1]
39
+ end
40
+ result = hash
41
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
42
+ result["_user_#{ENV["USER"]}_cawcaw_test.value"].should == "12"
43
+ end
44
+ end
45
+ context "when hdfs path is relative" do
46
+ context "with hadoop-wdir option" do
47
+ it "should output hadoop dfs config" do
48
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs --hadoop-wdir /user #{ENV["USER"]}/cawcaw-test config`
49
+ hash = {}
50
+ result.split(/\r?\n/).each do |line|
51
+ record = line.split(/ /, 2)
52
+ hash[record[0]] = record[1]
53
+ end
54
+ result = hash
55
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
56
+ result["graph_title"].should == "HDFS size"
57
+ result["graph_args"].should == "--base 1000"
58
+ result["graph_vlabel"].should == "bytes"
59
+ result["graph_category"].should == "hadoop"
60
+ result["graph_info"].should == "HDFS size"
61
+ result["#{ENV["USER"]}_cawcaw_test.label"].should == "#{ENV["USER"]}/cawcaw-test"
62
+ result["#{ENV["USER"]}_cawcaw_test.info"].should == "#{ENV["USER"]}/cawcaw-test size"
63
+ result["#{ENV["USER"]}_cawcaw_test.draw"].should == "AREA"
64
+ result["#{ENV["USER"]}_cawcaw_test.warning"].should == "5000000"
65
+ result["#{ENV["USER"]}_cawcaw_test.critical"].should == "5000000"
66
+ end
67
+
68
+ it "should output hadoop dfs value" do
69
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs --hadoop-wdir /user #{ENV["USER"]}/cawcaw-test`
70
+ hash = {}
71
+ result.split(/\r?\n/).each do |line|
72
+ record = line.split(/ /, 2)
73
+ hash[record[0]] = record[1]
74
+ end
75
+ result = hash
76
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
77
+ result["#{ENV["USER"]}_cawcaw_test.value"].should == "12"
78
+ end
79
+ end
80
+
81
+ context "without hadoop-wdir option" do
82
+ it "should output hadoop dfs config" do
83
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs cawcaw-test config`
84
+ hash = {}
85
+ result.split(/\r?\n/).each do |line|
86
+ record = line.split(/ /, 2)
87
+ hash[record[0]] = record[1]
88
+ end
89
+ result = hash
90
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
91
+ result["graph_title"].should == "HDFS size"
92
+ result["graph_args"].should == "--base 1000"
93
+ result["graph_vlabel"].should == "bytes"
94
+ result["graph_category"].should == "hadoop"
95
+ result["graph_info"].should == "HDFS size"
96
+ result["cawcaw_test.label"].should == "cawcaw-test"
97
+ result["cawcaw_test.info"].should == "cawcaw-test size"
98
+ result["cawcaw_test.draw"].should == "AREA"
99
+ result["cawcaw_test.warning"].should == "5000000"
100
+ result["cawcaw_test.critical"].should == "5000000"
101
+ end
102
+
103
+ it "should output hadoop dfs value" do
104
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw hadoop dfs cawcaw-test`
105
+ hash = {}
106
+ result.split(/\r?\n/).each do |line|
107
+ record = line.split(/ /, 2)
108
+ hash[record[0]] = record[1]
109
+ end
110
+ result = hash
111
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
112
+ result["cawcaw_test.value"].should == "12"
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+
3
+ describe "bin/cawcaw rabbitmq queue-count" do
4
+ before :all do
5
+ system("bunnish delete cawcaw-test-queue")
6
+ system("echo \"foo\nbar\nbaz\" | bunnish publish cawcaw-test-queue")
7
+ end
8
+ it "should output rabbitmq queue-count config" do
9
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw rabbitmq queue-count cawcaw-test-queue config`
10
+ hash = {}
11
+ result.split(/\r?\n/).each do |line|
12
+ record = line.split(/ /, 2)
13
+ hash[record[0]] = record[1]
14
+ end
15
+ result = hash
16
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
17
+ result["graph_title"].should == "Queue count"
18
+ result["graph_args"].should == "--base 1000"
19
+ result["graph_vlabel"].should == "messages"
20
+ result["graph_category"].should == "rabbitmq"
21
+ result["graph_info"].should == "Queue count"
22
+ result["cawcaw_test_queue.label"].should == "cawcaw-test-queue"
23
+ result["cawcaw_test_queue.info"].should == "cawcaw-test-queue queue count"
24
+ result["cawcaw_test_queue.draw"].should == "AREA"
25
+ result["cawcaw_test_queue.warning"].should == "5000000"
26
+ result["cawcaw_test_queue.critical"].should == "5000000"
27
+ end
28
+
29
+ it "should output rabbitmq queue-count value" do
30
+ result = `#{Cawcaw::RUBY_CMD} #{Cawcaw::BIN_DIR}/cawcaw rabbitmq queue-count cawcaw-test-queue`
31
+ hash = {}
32
+ result.split(/\r?\n/).each do |line|
33
+ record = line.split(/ /, 2)
34
+ hash[record[0]] = record[1]
35
+ end
36
+ result = hash
37
+ # result.each_pair do |key, val| STDERR.puts "result[#{key.inspect}].should == #{val.inspect}" end
38
+ result["cawcaw_test_queue.value"].should == "3"
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cawcaw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.1.0
21
+ version: 0.1.2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.1.0
29
+ version: 0.1.2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rspec
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -172,12 +172,15 @@ files:
172
172
  - Rakefile
173
173
  - VERSION
174
174
  - bin/cawcaw
175
+ - cawcaw.gemspec
175
176
  - lib/cawcaw.rb
176
177
  - lib/cawcaw/command/hadoop.rb
177
178
  - lib/cawcaw/command/hadoop/dfs.rb
178
179
  - lib/cawcaw/command/rabbitmq.rb
179
180
  - lib/cawcaw/command/rabbitmq/queue_count.rb
180
181
  - lib/cawcaw/core/common.rb
182
+ - spec/bin/cawcaw/hadoop/dfs_spec.rb
183
+ - spec/bin/cawcaw/rabbitmq/queue_count_spec.rb
181
184
  - spec/lib/cawcaw_spec.rb
182
185
  - spec/spec_helper.rb
183
186
  homepage: http://github.com/haracane/cawcaw
@@ -195,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
195
198
  version: '0'
196
199
  segments:
197
200
  - 0
198
- hash: 1321405576812598434
201
+ hash: -260789276697941311
199
202
  required_rubygems_version: !ruby/object:Gem::Requirement
200
203
  none: false
201
204
  requirements: