growthforecast-client 0.0.6 → 0.62.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 055319d3adf0fb80f5d0f557cb1f13eca1fbcddf
4
- data.tar.gz: 90cb32798ddd05248e741c21683aa54b86d3d7e5
3
+ metadata.gz: 4e380347aae163347f8aff0e1cfa188113cc3350
4
+ data.tar.gz: 4a82887db1bd53783f3132ad1fbf50d86a491296
5
5
  SHA512:
6
- metadata.gz: bea692b3fbcb469e1a3b4b046868d00cd1722bb2a3c73ca73f3f347e8167eaca64e2d59cf99418b733b323ba614db310ff4a576b4a9cfb8fdc1d7b679ba14514
7
- data.tar.gz: 1808862d990022d1ec47c369d8f00d1e1584e61e88b405dfb8d963db9c4c0ce7483da0075c03b96a6934b5c27c2c73dba3ff60e205f6e4d2f7cdf3f70d2722e2
6
+ metadata.gz: 98882b9370b43b92a4ec1045a3f27f8d2c2b0a3a9408e0f0d2f45551d9336e2a98c616509dbf1be1c791dcfba69bc7bea58b20235829753e5bc307b310ae97fd
7
+ data.tar.gz: 5217464da3ac661d186abe1e615cdcf16fe5aa1849e4226053bdf572f07a67276182b6359fc04b182645a4058457be7b772017e84f43fa918414043fefc804b3
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # GrowthForecast Client [![Build Status](https://secure.travis-ci.org/sonots/growthforecast-client.png?branch=master)](http://travis-ci.org/sonots/growthforecast-client) [![Dependency Status](https://gemnasium.com/sonots/growthforecast-client.png)](https://gemnasium.com/sonots/growthforecast-client)
2
2
 
3
- testing ruby: 1.9.3; GrowthForecast: > 0.39
3
+ testing ruby: 1.9.2, 1.9.3, 2.0.0; GrowthForecast: >= 0.62 (Jun 27, 2013 released)
4
4
 
5
5
  ## About GrowthForecast Client
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.62.0
@@ -6,6 +6,7 @@ require 'growthforecast-client'
6
6
 
7
7
  # Create a GrowthForecast Client, given he base URI of GrowthForecast
8
8
  client = GrowthForecast::Client.new('http://localhost:5125')
9
+ client.debug_dev = STDOUT # debug print the http requests and responses
9
10
 
10
11
  # configure colors of graphs whose names are as belows:
11
12
  graph_colors = {
@@ -35,12 +35,12 @@ class GrowthForecast::CLI < Thor
35
35
 
36
36
  no_tasks do
37
37
  def e(str)
38
- URI.escape(str) if str
38
+ CGI.escape(str).gsub('+', '%20') if str
39
39
  end
40
40
 
41
41
  def split_path(path)
42
42
  path = path.gsub(/.*list\//, '').gsub(/.*view_graph\//, '')
43
- path.split('/').map {|p| URI.unescape(p) }
43
+ path.split('/').map {|p| CGI.unescape(p.gsub('%20', '+')) }
44
44
  end
45
45
 
46
46
  def client(uri)
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  require 'httpclient'
3
3
  require 'json'
4
- require 'uri'
4
+ require 'cgi'
5
5
  require 'pp'
6
6
 
7
7
  module GrowthForecast
@@ -12,6 +12,7 @@ module GrowthForecast
12
12
  class Client
13
13
  attr_accessor :debug
14
14
  attr_accessor :client
15
+ attr_reader :debug_dev
15
16
  attr_reader :base_uri
16
17
 
17
18
  # @param [String] base_uri The base uri of GrowthForecast
@@ -23,6 +24,12 @@ module GrowthForecast
23
24
  @client ||= HTTPClient.new
24
25
  end
25
26
 
27
+ # set the `debug_dev` attribute of HTTPClient
28
+ # @param [IO] debug_dev such as STDOUT
29
+ def debug_dev=(debug_dev)
30
+ client.debug_dev = debug_dev
31
+ end
32
+
26
33
  def last_response
27
34
  @res
28
35
  end
@@ -121,6 +128,42 @@ module GrowthForecast
121
128
  services.keys
122
129
  end
123
130
 
131
+ # Post parameters to a graph, POST /api/:service_name/:section_name/:graph_name
132
+ # @param [String] service_name
133
+ # @param [String] section_name
134
+ # @param [String] graph_name
135
+ # @param [Hash] params The POST parameters. See #get_graph
136
+ # @return [Hash] the error code and graph property
137
+ # @example
138
+ #{"error"=>0,
139
+ #"data"=>{
140
+ # "number"=>1,
141
+ # "llimit"=>-1000000000,
142
+ # "mode"=>"gauge",
143
+ # "stype"=>"AREA",
144
+ # "adjustval"=>"1",
145
+ # "meta"=>"",
146
+ # "service_name"=>"test",
147
+ # "gmode"=>"gauge",
148
+ # "color"=>"#cc6633",
149
+ # "created_at"=>"2013/02/02 00:41:11",
150
+ # "section_name"=>"hostname",
151
+ # "ulimit"=>1000000000,
152
+ # "id"=>21,
153
+ # "graph_name"=>"<4sec_count",
154
+ # "description"=>"",
155
+ # "sulimit"=>100000,
156
+ # "unit"=>"",
157
+ # "sort"=>0,
158
+ # "updated_at"=>"2013/02/02 02:32:10",
159
+ # "adjust"=>"*",
160
+ # "type"=>"AREA",
161
+ # "sllimit"=>-100000,
162
+ # "md5"=>"3c59dc048e8850243be8079a5c74d079"}}
163
+ def post_graph(service_name, section_name, graph_name, params)
164
+ post_query("/api/#{e service_name}/#{e section_name}/#{e graph_name}", params)
165
+ end
166
+
124
167
  # Get the propety of a graph, GET /api/:service_name/:section_name/:graph_name
125
168
  # @param [String] service_name
126
169
  # @param [String] section_name
@@ -185,15 +228,6 @@ module GrowthForecast
185
228
  get_json("/json/graph/#{id}")
186
229
  end
187
230
 
188
- # Post parameters to a graph, POST /api/:service_name/:section_name/:graph_name
189
- # @param [String] service_name
190
- # @param [String] section_name
191
- # @param [String] graph_name
192
- # @param [Hash] params The POST parameters. See #get_graph
193
- def post_graph(service_name, section_name, graph_name, params)
194
- post_query("/api/#{e service_name}/#{e section_name}/#{e graph_name}", params)
195
- end
196
-
197
231
  # Delete a graph, POST /delete/:service_name/:section_name/:graph_name
198
232
  # @param [String] service_name
199
233
  # @param [String] section_name
@@ -202,6 +236,12 @@ module GrowthForecast
202
236
  post_query("/delete/#{e service_name}/#{e section_name}/#{e graph_name}")
203
237
  end
204
238
 
239
+ # Delete a graph, POST /json/delete/graph/:id
240
+ # @param [String] id
241
+ def delete_graph_by_id(id)
242
+ post_query("/json/delete/graph/#{id}")
243
+ end
244
+
205
245
  # Update the property of a graph, /json/edit/graph/:id
206
246
  # @param [String] service_name
207
247
  # @param [String] section_name
@@ -268,10 +308,43 @@ module GrowthForecast
268
308
  :sort => to_complex["sort"],
269
309
  :data => graph_data
270
310
  }
271
-
272
311
  post_json('/json/create/complex', post_params)
273
312
  end
274
313
 
314
+ # Get the propety of a complex graph, GET /json/complex/:service_name/:section_name/:graph_name
315
+ # @param [String] service_name
316
+ # @param [String] section_name
317
+ # @param [String] graph_name
318
+ # @return [Hash] the graph property
319
+ # @version 0.70 or more
320
+ # @example
321
+ # {"number"=>0,
322
+ # "complex"=>true,
323
+ # "created_at"=>"2013/05/20 15:08:28",
324
+ # "service_name"=>"app name",
325
+ # "section_name"=>"host name",
326
+ # "id"=>18,
327
+ # "graph_name"=>"complex graph test",
328
+ # "data"=>
329
+ # [{"gmode"=>"gauge", "stack"=>false, "type"=>"AREA", "graph_id"=>218},
330
+ # {"gmode"=>"gauge", "stack"=>true, "type"=>"AREA", "graph_id"=>217}],
331
+ # "sumup"=>false,
332
+ # "description"=>"complex graph test",
333
+ # "sort"=>10,
334
+ # "updated_at"=>"2013/05/20 15:08:28"}
335
+ def get_complex(service_name, section_name, graph_name)
336
+ get_json("/json/complex/#{e service_name}/#{e section_name}/#{e graph_name}")
337
+ end
338
+
339
+ # Get the propety of a complex graph, GET /json/complex/:id
340
+ # @param [String] id
341
+ # @return [Hash] the graph property
342
+ # @version 0.70 or more
343
+ # @example See #get_complex
344
+ def get_complex_by_id(id)
345
+ get_json("/json/complex/#{id}")
346
+ end
347
+
275
348
  # Delete a complex graph
276
349
  #
277
350
  # This is a helper method of GrowthForecast API to find complex graph id and call delete_complex_by_id
@@ -284,10 +357,7 @@ module GrowthForecast
284
357
  # {"error"=>0} #=> Success
285
358
  # {"error"=>1} #=> Error
286
359
  def delete_complex(service_name, section_name, graph_name)
287
- complex_graphs = list_complex
288
- complex = complex_graphs.select {|g| g["service_name"] == service_name and g["section_name"] == section_name and g["graph_name"] == graph_name }
289
- raise NotFound if complex.empty?
290
- delete_complex_by_id(complex.first["id"])
360
+ post_query("/json/delete/complex/#{e service_name}/#{e section_name}/#{e graph_name}")
291
361
  end
292
362
 
293
363
  # Delete a complex graph, /delete_complex/:complex_id
@@ -304,7 +374,7 @@ module GrowthForecast
304
374
  private
305
375
 
306
376
  def e(str)
307
- URI.escape(str) if str
377
+ CGI.escape(str).gsub('+', '%20') if str
308
378
  end
309
379
 
310
380
  def handle_error(res)
@@ -320,7 +390,7 @@ module GrowthForecast
320
390
  end
321
391
 
322
392
  def error_message(res)
323
- "status:#{res.status}\turi:#{res.http_header.request_uri.to_s}"
393
+ "status:#{res.status}\turi:#{res.http_header.request_uri.to_s}\tmessage:#{res.body}"
324
394
  end
325
395
 
326
396
  # GrowthForecast's /json/edit/graph API requires all parameters to update, thus
@@ -1,31 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- shared_context "setup_growthforecast_client" do
4
- before(:all) { @client = GrowthForecast::Client.new('http://localhost:5125') }
5
-
6
- include_context "stub_list_graph" if ENV['MOCK'] == 'on'
7
- let(:graphs) { @client.list_graph }
8
- let(:graph) { graphs.first }
9
-
10
- include_context "stub_post_graph" if ENV['MOCK'] == 'on'
11
- include_context "stub_delete_graph" if ENV['MOCK'] == 'on'
12
- before(:all) {
13
- @client.delete_graph("app name", "host name", "<1sec count") rescue nil
14
- @client.delete_graph("app name", "host name", "<2sec count") rescue nil
15
- @client.post_graph("app name", "host name", "<1sec count", { 'number' => 0 }) rescue nil
16
- @client.post_graph("app name", "host name", "<2sec count", { 'number' => 0 }) rescue nil
17
- }
18
- after(:all) {
19
- @client.delete_graph("app name", "host name", "<1sec count") rescue nil
20
- @client.delete_graph("app name", "host name", "<2sec count") rescue nil
21
- }
22
- end
23
-
24
3
  describe GrowthForecast::Client do
25
4
  include_context "setup_growthforecast_client"
26
5
  id_keys = %w[id service_name section_name graph_name]
27
6
  graph_keys = %w[number llimit mode stype adjustval gmode color created_at ulimit description
28
7
  sulimit unit sort updated_at adjust type sllimit meta md5]
8
+ complex_keys = %w[number complex created_at service_name section_name id graph_name data sumup
9
+ description sort updated_at]
29
10
 
30
11
  context "#list_graph" do
31
12
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
@@ -36,7 +17,7 @@ describe GrowthForecast::Client do
36
17
 
37
18
  context "#list_section" do
38
19
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
39
- subject { @client.list_section }
20
+ subject { client.list_section }
40
21
  its(:size) { should > 0 }
41
22
  its(:class) { should == Hash }
42
23
  it { subject.each {|service_name, sections| sections.size.should > 0 } }
@@ -44,21 +25,21 @@ describe GrowthForecast::Client do
44
25
 
45
26
  context "#list_service" do
46
27
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
47
- subject { @client.list_service }
28
+ subject { client.list_service }
48
29
  its(:size) { should > 0 }
49
30
  its(:class) { should == Array }
50
31
  end
51
32
 
52
33
  context "#get_graph" do
53
34
  include_context "stub_get_graph" if ENV['MOCK'] == 'on'
54
- subject { @client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"]) }
35
+ subject { client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"]) }
55
36
  id_keys.each {|key| it { subject[key].should == graph[key] } }
56
37
  graph_keys.each {|key| it { subject.should have_key(key) } }
57
38
  end
58
39
 
59
40
  context "#get_graph_by_id" do
60
41
  include_context "stub_get_graph_by_id" if ENV['MOCK'] == 'on'
61
- subject { @client.get_graph_by_id(graph["id"]) }
42
+ subject { client.get_graph_by_id(graph["id"]) }
62
43
  id_keys.each {|key| it { subject[key].should == graph[key] } }
63
44
  # this is the behavior of GrowthForecast API
64
45
  (graph_keys - %w[meta md5]).each {|key| it { subject.should have_key(key) } }
@@ -70,7 +51,7 @@ describe GrowthForecast::Client do
70
51
  params = {
71
52
  'number' => 0,
72
53
  }
73
- subject { @client.post_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params) }
54
+ subject { client.post_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params) }
74
55
  it { subject["error"].should == 0 }
75
56
  params.keys.each {|key| it { subject["data"][key].should == params[key] } }
76
57
  end
@@ -78,6 +59,13 @@ describe GrowthForecast::Client do
78
59
  context "#delete_graph" do
79
60
  include_context "stub_post_graph" if ENV['MOCK'] == 'on'
80
61
  include_context "stub_delete_graph" if ENV['MOCK'] == 'on'
62
+ before { client.post_graph(graph['service_name'], graph['section_name'], graph['graph_name'], { 'number' => 0 }) }
63
+ subject { client.delete_graph(graph['service_name'], graph['section_name'], graph['graph_name']) }
64
+ it { subject["error"].should == 0 }
65
+ end
66
+
67
+ context "#delete_graph_by_id" do
68
+ include_context "stub_post_graph" if ENV['MOCK'] == 'on'
81
69
  let(:graph) {
82
70
  {
83
71
  "service_name" => "app name",
@@ -85,8 +73,12 @@ describe GrowthForecast::Client do
85
73
  "graph_name" => "<1sec count",
86
74
  }
87
75
  }
88
- before { @client.post_graph(graph['service_name'], graph['section_name'], graph['graph_name'], { 'number' => 0 }) }
89
- subject { @client.delete_graph(graph['service_name'], graph['section_name'], graph['graph_name']) }
76
+ let(:id) do
77
+ ret = client.post_graph(graph['service_name'], graph['section_name'], graph['graph_name'], { 'number' => 0 })
78
+ ret["data"]["id"]
79
+ end
80
+ include_context "stub_delete_graph_by_id" if ENV['MOCK'] == 'on'
81
+ subject { client.delete_graph_by_id(id) }
90
82
  it { subject["error"].should == 0 }
91
83
  end
92
84
 
@@ -100,10 +92,10 @@ describe GrowthForecast::Client do
100
92
  'unit' => 'sec',
101
93
  'color' => "#000000"
102
94
  }
103
- before(:all) do
104
- @before = @client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
105
- @response = @client.edit_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params)
106
- @after = @client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
95
+ before do
96
+ @before = client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
97
+ @response = client.edit_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params)
98
+ @after = client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
107
99
  end
108
100
  it { @response["error"].should == 0 }
109
101
  # @todo: how to stub @after?
@@ -120,10 +112,10 @@ describe GrowthForecast::Client do
120
112
  'number' => 0,
121
113
  'mode' => 'count',
122
114
  }
123
- before(:all) do
124
- @before = @client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
125
- @response = @client.edit_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params)
126
- @after = @client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
115
+ before do
116
+ @before = client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
117
+ @response = client.edit_graph(graph["service_name"], graph["section_name"], graph["graph_name"], params)
118
+ @after = client.get_graph(graph["service_name"], graph["section_name"], graph["graph_name"])
127
119
  end
128
120
  params.keys.each {|key| it { @after[key].should == @before[key] } }
129
121
  end
@@ -132,29 +124,35 @@ describe GrowthForecast::Client do
132
124
  context "#create_complex" do
133
125
  include_context "stub_create_complex" if ENV['MOCK'] == 'on'
134
126
  include_context "stub_delete_complex" if ENV['MOCK'] == 'on'
135
- context "normal" do
136
- let(:from_graphs) do
137
- [
138
- graphs[0],
139
- graphs[1],
140
- ]
141
- end
142
- let(:to_complex) do
143
- {
144
- "service_name" => graphs.first["service_name"],
145
- "section_name" => graphs.first["section_name"],
146
- "graph_name" => "complex graph test",
147
- "description" => "complex graph test",
148
- "sort" => 10
149
- }
150
- end
151
- subject { @client.create_complex(from_graphs, to_complex) }
152
- it { subject["error"].should == 0 }
153
- after { @client.delete_complex(to_complex["service_name"], to_complex["section_name"], to_complex["graph_name"]) }
154
- end
127
+ subject { client.create_complex(from_graphs, to_complex) }
128
+ it { subject["error"].should == 0 }
129
+ after { client.delete_complex(to_complex["service_name"], to_complex["section_name"], to_complex["graph_name"]) }
130
+ end
131
+
132
+ context "#get_complex" do
133
+ include_context "stub_create_complex" if ENV['MOCK'] == 'on'
134
+ include_context "stub_get_complex" if ENV['MOCK'] == 'on'
135
+ include_context "stub_delete_complex" if ENV['MOCK'] == 'on'
136
+ before { client.create_complex(from_graphs, to_complex) }
137
+ subject { client.get_complex(to_complex["service_name"], to_complex["section_name"], to_complex["graph_name"]) }
138
+ complex_keys.each {|key| it { subject.should have_key(key) } }
139
+ after { client.delete_complex(to_complex["service_name"], to_complex["section_name"], to_complex["graph_name"]) }
140
+ end
141
+
142
+ context "#get_complex_by_id" do
143
+ include_context "stub_create_complex" if ENV['MOCK'] == 'on'
144
+ include_context "stub_get_complex" if ENV['MOCK'] == 'on'
145
+ before { client.create_complex(from_graphs, to_complex) }
146
+ let(:id) { client.get_complex(to_complex["service_name"], to_complex["section_name"], to_complex["graph_name"])["id"] }
147
+ include_context "stub_get_complex_by_id" if ENV['MOCK'] == 'on'
148
+ include_context "stub_delete_complex_by_id" if ENV['MOCK'] == 'on'
149
+ subject { client.get_complex_by_id(id) }
150
+ complex_keys.each {|key| it { subject.should have_key(key) } }
151
+ after { client.delete_complex_by_id(id) }
155
152
  end
156
153
 
157
154
  describe 'http://blog.64p.org/?page=1366971426' do
155
+ before { @client ||= client }
158
156
  context "#client=" do
159
157
  before { @client.client = HTTPClient.new(agent_name: 'TestAgent/0.1') }
160
158
  it { @client.client.agent_name.should == 'TestAgent/0.1' }
@@ -162,6 +160,7 @@ describe GrowthForecast::Client do
162
160
 
163
161
  context "#last_response" do
164
162
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
163
+ before { @client.list_graph }
165
164
  subject { @client.last_response }
166
165
  it { should be_kind_of HTTP::Message }
167
166
  end
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,9 @@ require "bundler/setup"
4
4
  ENV['MOCK'] ||= 'on'
5
5
  require "pry"
6
6
  require 'growthforecast-client'
7
- require 'webmock/rspec' if ENV['MOCK'] == 'on'
7
+ require 'webmock/rspec'
8
+ require 'cgi'
9
+ WebMock.allow_net_connect! if ENV['MOCK'] == 'off'
8
10
 
9
11
  ROOT = File.dirname(__FILE__)
10
12
  Dir[File.expand_path("support/**/*.rb", ROOT)].each {|f| require f }
@@ -13,3 +15,20 @@ RSpec.configure do |config|
13
15
  config.treat_symbols_as_metadata_keys_with_true_values = true
14
16
  config.run_all_when_everything_filtered = true
15
17
  end
18
+
19
+ def u(str)
20
+ ::CGI.unescape(str.gsub('%20', '+')) if str
21
+ end
22
+
23
+ def e(str)
24
+ ::CGI.escape(str).gsub('+', '%20') if str
25
+ end
26
+
27
+ def base_uri
28
+ 'http://localhost:5125'
29
+ end
30
+
31
+ def client
32
+ GrowthForecast::Client.new(base_uri)
33
+ end
34
+
data/spec/support/mock.rb CHANGED
@@ -1,31 +1,27 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
- base_uri = 'http://localhost:5125'
4
-
5
3
  shared_context "stub_list_graph" do
6
- let(:list_graph_example) {
4
+ def list_graph_example
7
5
  [
8
6
  {"service_name"=>"app name",
9
7
  "section_name"=>"host name",
10
8
  "graph_name"=>"<1sec count",
11
9
  "id"=>1},
12
- {"service_name"=>"app name",
13
- "section_name"=>"host name",
14
- "graph_name"=>"<2sec count",
15
- "id"=>2},
10
+ {"service_name"=>"app name",
11
+ "section_name"=>"host name",
12
+ "graph_name"=>"<2sec count",
13
+ "id"=>2},
16
14
  ]
17
- }
15
+ end
18
16
 
19
17
  proc = Proc.new do
20
- # WebMock.allow_net_connect!
21
18
  stub_request(:get, "#{base_uri}/json/list/graph").to_return(:status => 200, :body => list_graph_example.to_json)
22
19
  end
23
20
  before(:each, &proc)
24
- before(:all, &proc)
25
21
  end
26
22
 
27
23
  shared_context "stub_get_graph" do
28
- let(:graph_example) {
24
+ def graph_example
29
25
  {
30
26
  "number"=>0,
31
27
  "llimit"=>-1000000000,
@@ -51,19 +47,18 @@ shared_context "stub_get_graph" do
51
47
  "sllimit"=>-100000,
52
48
  "md5"=>"3c59dc048e8850243be8079a5c74d079"
53
49
  }
54
- }
50
+ end
55
51
 
56
52
  proc = Proc.new do
57
- stub_request(:get, "#{base_uri}/api/#{graph['service_name']}/#{graph['section_name']}/#{graph['graph_name']}").
53
+ stub_request(:get, "#{base_uri}/api/#{e graph['service_name']}/#{e graph['section_name']}/#{e graph['graph_name']}").
58
54
  to_return(:status => 200, :body => graph_example.to_json)
59
55
  end
60
56
  before(:each, &proc)
61
- before(:all, &proc)
62
57
  end
63
58
 
64
59
  shared_context "stub_get_graph_by_id" do
65
60
  # /json/graph/:id does not return `meta` and `md5`
66
- let(:graph_example) {
61
+ def graph_example
67
62
  {
68
63
  "number"=>0,
69
64
  "llimit"=>-1000000000,
@@ -89,33 +84,37 @@ shared_context "stub_get_graph_by_id" do
89
84
  "sllimit"=>-100000,
90
85
  # "md5"=>"3c59dc048e8850243be8079a5c74d079"
91
86
  }
92
- }
87
+ end
93
88
 
94
89
  proc = Proc.new do
95
90
  stub_request(:get, "#{base_uri}/json/graph/#{graph['id']}").
96
91
  to_return(:status => 200, :body => graph_example.to_json)
97
92
  end
98
93
  before(:each, &proc)
99
- before(:all, &proc)
100
94
  end
101
95
 
102
96
  shared_context "stub_post_graph" do
103
97
  include_context "stub_get_graph"
104
- proc = Proc.new do
105
- stub_request(:post, "#{base_uri}/api/#{graph['service_name']}/#{graph['section_name']}/#{graph['graph_name']}").
98
+ before do
99
+ stub_request(:post, "#{base_uri}/api/#{e graph['service_name']}/#{e graph['section_name']}/#{e graph['graph_name']}").
106
100
  to_return(:status => 200, :body => { "error" => 0, "data" => graph_example }.to_json)
107
101
  end
108
- before(:each, &proc)
109
- before(:all, &proc)
110
102
  end
111
103
 
112
104
  shared_context "stub_delete_graph" do
113
105
  proc = Proc.new do
114
- stub_request(:post, "#{base_uri}/delete/#{graph['service_name']}/#{graph['section_name']}/#{graph['graph_name']}").
106
+ stub_request(:post, "#{base_uri}/delete/#{e graph['service_name']}/#{e graph['section_name']}/#{e graph['graph_name']}").
107
+ to_return(:status => 200, :body => { "error" => 0 }.to_json)
108
+ end
109
+ before(:each, &proc)
110
+ end
111
+
112
+ shared_context "stub_delete_graph_by_id" do
113
+ proc = Proc.new do
114
+ stub_request(:post, "#{base_uri}/json/delete/graph/#{id}").
115
115
  to_return(:status => 200, :body => { "error" => 0 }.to_json)
116
116
  end
117
117
  before(:each, &proc)
118
- before(:all, &proc)
119
118
  end
120
119
 
121
120
  shared_context "stub_edit_graph" do
@@ -126,37 +125,89 @@ shared_context "stub_edit_graph" do
126
125
  to_return(:status => 200, :body => { "error" => 0 }.to_json)
127
126
  end
128
127
  before(:each, &proc)
129
- before(:all, &proc)
130
128
  end
131
129
 
132
130
  shared_context "stub_list_complex" do
133
- let(:list_complex_example) {
131
+ def list_complex_example
134
132
  [
135
133
  {"service_name"=>"app name",
136
134
  "section_name"=>"host name",
137
135
  "graph_name"=>"complex graph test",
138
136
  "id"=>1},
139
137
  ]
140
- }
141
- let(:complex_example) {
142
- list_complex_example.first
143
- }
138
+ end
144
139
 
145
140
  proc = Proc.new do
146
141
  stub_request(:get, "#{base_uri}/json/list/complex").
147
142
  to_return(:status => 200, :body => list_complex_example.to_json)
148
143
  end
149
144
  before(:each, &proc)
150
- before(:all, &proc)
145
+ end
146
+
147
+ shared_context "stub_get_complex" do
148
+ def complex_example
149
+ {"number"=>0,
150
+ "complex"=>true,
151
+ "created_at"=>"2013/05/20 15:08:28",
152
+ "service_name"=>"app name",
153
+ "section_name"=>"host name",
154
+ "id"=>1,
155
+ "graph_name"=>"complex graph test",
156
+ "data"=>
157
+ [{"gmode"=>"gauge", "stack"=>false, "type"=>"AREA", "graph_id"=>218},
158
+ {"gmode"=>"gauge", "stack"=>true, "type"=>"AREA", "graph_id"=>217}],
159
+ "sumup"=>false,
160
+ "description"=>"complex graph test",
161
+ "sort"=>10,
162
+ "updated_at"=>"2013/05/20 15:08:28"}
163
+ end
164
+
165
+ proc = Proc.new do
166
+ stub_request(:get, "#{base_uri}/json/complex/#{e to_complex['service_name']}/#{e to_complex['section_name']}/#{e to_complex['graph_name']}").
167
+ to_return(:status => 200, :body => complex_example.to_json)
168
+ end
169
+ before(:each, &proc)
170
+ end
171
+
172
+ shared_context "stub_get_complex_by_id" do
173
+ def complex_example
174
+ {"number"=>0,
175
+ "complex"=>true,
176
+ "created_at"=>"2013/05/20 15:08:28",
177
+ "service_name"=>"app name",
178
+ "section_name"=>"host name",
179
+ "id"=>1,
180
+ "graph_name"=>"complex graph test",
181
+ "data"=>
182
+ [{"gmode"=>"gauge", "stack"=>false, "type"=>"AREA", "graph_id"=>218},
183
+ {"gmode"=>"gauge", "stack"=>true, "type"=>"AREA", "graph_id"=>217}],
184
+ "sumup"=>false,
185
+ "description"=>"complex graph test",
186
+ "sort"=>10,
187
+ "updated_at"=>"2013/05/20 15:08:28"}
188
+ end
189
+
190
+ proc = Proc.new do
191
+ stub_request(:get, "#{base_uri}/json/complex/#{id}").
192
+ to_return(:status => 200, :body => complex_example.to_json)
193
+ end
194
+ before(:each, &proc)
151
195
  end
152
196
 
153
197
  shared_context "stub_delete_complex" do
154
198
  proc = Proc.new do
155
- stub_request(:post, "#{base_uri}/delete_complex/#{complex_example['id']}").
199
+ stub_request(:post, "#{base_uri}/json/delete/complex/#{e to_complex['service_name']}/#{e to_complex['section_name']}/#{e to_complex['graph_name']}").
200
+ to_return(:status => 200, :body => { "error" => 0 }.to_json)
201
+ end
202
+ before(:each, &proc)
203
+ end
204
+
205
+ shared_context "stub_delete_complex_by_id" do
206
+ proc = Proc.new do
207
+ stub_request(:post, "#{base_uri}/delete_complex/#{id}").
156
208
  to_return(:status => 200, :body => { "error" => 0 }.to_json)
157
209
  end
158
210
  before(:each, &proc)
159
- before(:all, &proc)
160
211
  end
161
212
 
162
213
  shared_context "stub_create_complex" do
@@ -164,7 +215,7 @@ shared_context "stub_create_complex" do
164
215
 
165
216
  proc = Proc.new do
166
217
  list_graph_example.each do |graph|
167
- stub_request(:get, "#{base_uri}/api/#{graph['service_name']}/#{graph['section_name']}/#{graph['graph_name']}").
218
+ stub_request(:get, "#{base_uri}/api/#{e graph['service_name']}/#{e graph['section_name']}/#{e graph['graph_name']}").
168
219
  to_return(:status => 200, :body => graph.to_json)
169
220
  end
170
221
 
@@ -172,6 +223,5 @@ shared_context "stub_create_complex" do
172
223
  to_return(:status => 200, :body => { "error" => 0 }.to_json)
173
224
  end
174
225
  before(:each, &proc)
175
- before(:all, &proc)
176
226
  end
177
227
 
@@ -1,22 +1,49 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  shared_context "setup_growthforecast_client" do
4
- before(:all) { @client = GrowthForecast::Client.new('http://localhost:5125') }
5
-
6
4
  include_context "stub_list_graph" if ENV['MOCK'] == 'on'
7
- let(:graphs) { @client.list_graph }
5
+ let(:graphs) { client.list_graph }
8
6
  let(:graph) { graphs.first }
7
+ let(:from_graphs) do
8
+ [
9
+ {
10
+ "service_name" => graphs[0]["service_name"],
11
+ "section_name" => graphs[0]["section_name"],
12
+ "graph_name" => graphs[0]["graph_name"],
13
+ "gmode" => "gauge",
14
+ "stack" => false,
15
+ "type" => "AREA",
16
+ },
17
+ {
18
+ "service_name" => graphs[1]["service_name"],
19
+ "section_name" => graphs[1]["section_name"],
20
+ "graph_name" => graphs[1]["graph_name"],
21
+ "gmode" => "gauge",
22
+ "stack" => false,
23
+ "type" => "AREA"
24
+ },
25
+ ]
26
+ end
27
+ let(:to_complex) do
28
+ {
29
+ "service_name" => graphs.first["service_name"],
30
+ "section_name" => graphs.first["section_name"],
31
+ "graph_name" => "complex graph test",
32
+ "description" => "complex graph test",
33
+ "sort" => 10
34
+ }
35
+ end
9
36
 
10
37
  include_context "stub_post_graph" if ENV['MOCK'] == 'on'
11
38
  include_context "stub_delete_graph" if ENV['MOCK'] == 'on'
12
- before(:all) {
13
- @client.delete_graph("app name", "host name", "<1sec count") rescue nil
14
- @client.delete_graph("app name", "host name", "<2sec count") rescue nil
15
- @client.post_graph("app name", "host name", "<1sec count", { 'number' => 0 }) rescue nil
16
- @client.post_graph("app name", "host name", "<2sec count", { 'number' => 0 }) rescue nil
39
+ before {
40
+ client.delete_graph("app name", "host name", "<1sec count") rescue nil
41
+ client.delete_graph("app name", "host name", "<2sec count") rescue nil
42
+ client.post_graph("app name", "host name", "<1sec count", { 'number' => 0 }) rescue nil
43
+ client.post_graph("app name", "host name", "<2sec count", { 'number' => 0 }) rescue nil
17
44
  }
18
- after(:all) {
19
- @client.delete_graph("app name", "host name", "<1sec count") rescue nil
20
- @client.delete_graph("app name", "host name", "<2sec count") rescue nil
45
+ after {
46
+ client.delete_graph("app name", "host name", "<1sec count") rescue nil
47
+ client.delete_graph("app name", "host name", "<2sec count") rescue nil
21
48
  }
22
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growthforecast-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.62.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-17 00:00:00.000000000 Z
11
+ date: 2013-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  version: '0'
158
158
  requirements: []
159
159
  rubyforge_project:
160
- rubygems_version: 2.0.0
160
+ rubygems_version: 2.0.2
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: A Ruby Client Library for GrowthForecast API