vpsb_client 0.0.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/create_sysbench_run.rb +25 -0
- data/bin/get_trial_sysbench_tests.rb +8 -0
- data/lib/vpsb_client.rb +2 -0
- data/lib/vpsb_client/api/get_trial_sysbench_tests.rb +19 -0
- data/lib/vpsb_client/api/post_sysbench_run.rb +31 -0
- data/lib/vpsb_client/datafiles/sar_manager.rb +4 -4
- data/lib/vpsb_client/manager.rb +14 -1
- data/lib/vpsb_client/version.rb +1 -1
- data/spec/lib/request_spec.rb +28 -0
- data/spec/lib/sar_manager_spec.rb +2 -2
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17f4f6854b3a86eb3338dd12d0a65656ed657b5b
|
4
|
+
data.tar.gz: 8fb32a5b4d42d02a86368748a43802d9406863f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fde114fced005f8331d27554ee4cc6b18a574a13ff92c4a1296cfa83cb2b318c820e7c49746aaf45bcee4e888f738a53c3cfec8c62e29c3f44a51a8ba3a3911c
|
7
|
+
data.tar.gz: 8cb74c58b641fff871b31cb41b87ed1c6ecef372bfb72bd19f082768a66a90c4dbf68c209f7d48f62f75020b4eca158457fd44d2a4b6b9f0a0a30dd914ba2946
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.expand_path('../../lib/vpsb_client', __FILE__)
|
4
|
+
|
5
|
+
manager = VpsbClient::Manager.new(File.expand_path('../../config/vpsb.yml', __FILE__))
|
6
|
+
manager.setup
|
7
|
+
|
8
|
+
data = <<DATA
|
9
|
+
Test execution summary:
|
10
|
+
total time: 7.8366s
|
11
|
+
total number of events: 20000
|
12
|
+
total time taken by event execution: 31.3283
|
13
|
+
per-request statistics:
|
14
|
+
min: 1.35ms
|
15
|
+
avg: 1.57ms
|
16
|
+
max: 21.53ms
|
17
|
+
approx. 95 percentile: 1.54ms
|
18
|
+
DATA
|
19
|
+
|
20
|
+
t = manager.create_sysbench_run(1, 'cpu_0_v1', 'sysbench --test=cpu --num-threads=4 --max-requests=20000 run', data)
|
21
|
+
if t
|
22
|
+
puts "new sysbench run = #{t.inspect}"
|
23
|
+
else
|
24
|
+
puts "no run was created"
|
25
|
+
end
|
data/lib/vpsb_client.rb
CHANGED
@@ -9,6 +9,8 @@ require "#{VPSB_BASE_PATH}/vpsb_client/api/request"
|
|
9
9
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/response"
|
10
10
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/get_current_trial_request"
|
11
11
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/get_trial_last_metric_request"
|
12
|
+
require "#{VPSB_BASE_PATH}/vpsb_client/api/get_trial_sysbench_tests"
|
13
|
+
require "#{VPSB_BASE_PATH}/vpsb_client/api/post_sysbench_run"
|
12
14
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/get_item_id_request"
|
13
15
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/create_trial_request"
|
14
16
|
require "#{VPSB_BASE_PATH}/vpsb_client/api/post_metric_request"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module VpsbClient
|
2
|
+
module Api
|
3
|
+
class GetTrialSysbenchTests < GetRequest
|
4
|
+
def initialize(http_client, params)
|
5
|
+
super(http_client)
|
6
|
+
@trial_id = params[:trial_id]
|
7
|
+
end
|
8
|
+
|
9
|
+
def url_path
|
10
|
+
"/api/trials/#{@trial_id}/sysbench_tests"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.tests(http_response)
|
14
|
+
return [] if http_response.parsed_response.empty?
|
15
|
+
http_response.parsed_response
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module VpsbClient
|
2
|
+
module Api
|
3
|
+
class PostSysbenchRun < PostRequest
|
4
|
+
|
5
|
+
def initialize(http_client, trial_id, test_id, command, data)
|
6
|
+
super(http_client)
|
7
|
+
@trial_id = trial_id
|
8
|
+
@test_id = test_id
|
9
|
+
@command = command
|
10
|
+
@data = data
|
11
|
+
end
|
12
|
+
|
13
|
+
def url_path
|
14
|
+
"/api/trials/#{@trial_id}/sysbench_runs"
|
15
|
+
end
|
16
|
+
|
17
|
+
def post_params
|
18
|
+
@post_params = { sysbench_run: {
|
19
|
+
test_id: @test_id,
|
20
|
+
command: @command,
|
21
|
+
data: @data
|
22
|
+
}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def content_type
|
27
|
+
'application/json'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -36,7 +36,7 @@ module VpsbClient
|
|
36
36
|
raw_sar_filenames.each do |filename|
|
37
37
|
filename.match /sa(?<num>\d+)$/ do |matchdata|
|
38
38
|
fileday = matchdata[:num]
|
39
|
-
next if fileday
|
39
|
+
next if fileday == Time.now.strftime('%Y%m%d')
|
40
40
|
|
41
41
|
formatted_filename = "#{@target_path}/formatted_sa#{fileday}"
|
42
42
|
next if File.exist?(formatted_filename)
|
@@ -46,8 +46,8 @@ module VpsbClient
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def create_current_day_temp_formatted
|
49
|
-
sa_filename = "#{@orig_path}/sa#{
|
50
|
-
formatted_filename = "#{@target_path}/formatted_sa#{
|
49
|
+
sa_filename = "#{@orig_path}/sa#{Time.now.strftime('%Y%m%d')}"
|
50
|
+
formatted_filename = "#{@target_path}/formatted_sa#{Time.now.strftime('%Y%m%d')}"
|
51
51
|
File.delete(formatted_filename) if File.exist?(formatted_filename)
|
52
52
|
sadf(sa_filename, formatted_filename)
|
53
53
|
end
|
@@ -68,4 +68,4 @@ module VpsbClient
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
|
-
end
|
71
|
+
end
|
data/lib/vpsb_client/manager.rb
CHANGED
@@ -52,6 +52,12 @@ module VpsbClient
|
|
52
52
|
Api::CreateTrialRequest.trial(http_response)
|
53
53
|
end
|
54
54
|
|
55
|
+
def create_sysbench_run(trial_id, test_id, command, data)
|
56
|
+
create_sysbench_run_request = Api::PostSysbenchRun.new(@http_client, trial_id, test_id, command, data)
|
57
|
+
curl_response = create_sysbench_run_request.run
|
58
|
+
http_response = Api::Response.new(curl_response)
|
59
|
+
end
|
60
|
+
|
55
61
|
def current_trial
|
56
62
|
builder = Builders::Trial.new(@config)
|
57
63
|
current_trial_request = Api::GetCurrentTrialRequest.new(@http_client, builder.lookup_params)
|
@@ -67,6 +73,13 @@ module VpsbClient
|
|
67
73
|
Api::GetTrialLastMetricRequest.started_at(http_response)
|
68
74
|
end
|
69
75
|
|
76
|
+
def trial_sysbench_tests(trial_id)
|
77
|
+
trial_sysbench_tests_request = Api::GetTrialSysbenchTests.new(@http_client, trial_id: trial_id)
|
78
|
+
curl_response = trial_sysbench_tests_request.run
|
79
|
+
http_response = Api::Response.new(curl_response)
|
80
|
+
Api::GetTrialSysbenchTests.tests(http_response)
|
81
|
+
end
|
82
|
+
|
70
83
|
def hoster_id
|
71
84
|
return @hoster_id if @hoster_id
|
72
85
|
id_request = Api::GetItemIdRequest.new(@http_client, 'hosters', @config['hoster_name'])
|
@@ -103,7 +116,7 @@ module VpsbClient
|
|
103
116
|
end
|
104
117
|
|
105
118
|
prepare_logfiles
|
106
|
-
|
119
|
+
|
107
120
|
metric_ids = []
|
108
121
|
interval_length = 604800
|
109
122
|
last_started_at = trial_last_metric_started_at(trial['id'], interval_length)
|
data/lib/vpsb_client/version.rb
CHANGED
data/spec/lib/request_spec.rb
CHANGED
@@ -128,6 +128,34 @@ module VpsbClient
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
+
describe GetTrialSysbenchTests do
|
132
|
+
it 'gets /api/trials/:id/sysbench_tests' do
|
133
|
+
@params = {trial_id: 1 }
|
134
|
+
expect(@curl).to receive(:get).with('http://localhost/api/trials/1/sysbench_tests.json').once
|
135
|
+
|
136
|
+
req = GetTrialSysbenchTests.new(@client, @params)
|
137
|
+
req.run
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe PostSysbenchRun do
|
142
|
+
it 'posts to /api/trials/:id/sysbench_runs' do
|
143
|
+
run_params = {
|
144
|
+
sysbench_run: {
|
145
|
+
test_id: 2,
|
146
|
+
command: 'do it',
|
147
|
+
data: 'all done'
|
148
|
+
}
|
149
|
+
}
|
150
|
+
expect(@curl).to receive(:post).with('http://localhost/api/trials/1/sysbench_runs.json',
|
151
|
+
run_params.to_json,
|
152
|
+
"application/json").once
|
153
|
+
|
154
|
+
req = PostSysbenchRun.new(@client, 1, 2, 'do it', 'all done')
|
155
|
+
req.run
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
131
159
|
describe PostMetricRequest do
|
132
160
|
before :each do
|
133
161
|
@trial_id = 1
|
@@ -47,9 +47,9 @@ module VpsbClient
|
|
47
47
|
|
48
48
|
it 'replaces current day formatted file if it exists' do
|
49
49
|
system "mkdir #{@target_dir}"
|
50
|
-
system "echo \"hello\" > #{@target_dir}/
|
50
|
+
system "echo \"hello\" > #{@target_dir}/formatted_sa20140921"
|
51
51
|
@manager.run
|
52
|
-
lines = File.readlines("#{@target_dir}/
|
52
|
+
lines = File.readlines("#{@target_dir}/formatted_sa20140921")
|
53
53
|
expect(lines.first).not_to match(/hello/)
|
54
54
|
end
|
55
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vpsb_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philippe Le Rohellec
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curb
|
@@ -113,10 +113,12 @@ email:
|
|
113
113
|
- philippe@lerohellec.com
|
114
114
|
executables:
|
115
115
|
- close_trial.rb
|
116
|
+
- create_sysbench_run.rb
|
116
117
|
- create_trial.rb
|
117
118
|
- get_current_trial.rb
|
118
119
|
- get_item_ids.rb
|
119
120
|
- get_trial_last_metric.rb
|
121
|
+
- get_trial_sysbench_tests.rb
|
120
122
|
- signed_in.rb
|
121
123
|
- sync_metrics.rb
|
122
124
|
- test_timing_interval.rb
|
@@ -130,10 +132,12 @@ files:
|
|
130
132
|
- README.md
|
131
133
|
- Rakefile
|
132
134
|
- bin/close_trial.rb
|
135
|
+
- bin/create_sysbench_run.rb
|
133
136
|
- bin/create_trial.rb
|
134
137
|
- bin/get_current_trial.rb
|
135
138
|
- bin/get_item_ids.rb
|
136
139
|
- bin/get_trial_last_metric.rb
|
140
|
+
- bin/get_trial_sysbench_tests.rb
|
137
141
|
- bin/signed_in.rb
|
138
142
|
- bin/sync_metrics.rb
|
139
143
|
- bin/test_timing_interval.rb
|
@@ -145,7 +149,9 @@ files:
|
|
145
149
|
- lib/vpsb_client/api/get_current_trial_request.rb
|
146
150
|
- lib/vpsb_client/api/get_item_id_request.rb
|
147
151
|
- lib/vpsb_client/api/get_trial_last_metric_request.rb
|
152
|
+
- lib/vpsb_client/api/get_trial_sysbench_tests.rb
|
148
153
|
- lib/vpsb_client/api/post_metric_request.rb
|
154
|
+
- lib/vpsb_client/api/post_sysbench_run.rb
|
149
155
|
- lib/vpsb_client/api/request.rb
|
150
156
|
- lib/vpsb_client/api/response.rb
|
151
157
|
- lib/vpsb_client/builders/system_info_parser.rb
|
@@ -210,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
216
|
version: '0'
|
211
217
|
requirements: []
|
212
218
|
rubyforge_project:
|
213
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.5.1
|
214
220
|
signing_key:
|
215
221
|
specification_version: 4
|
216
222
|
summary: Client gem for vpsbenchmarks.com
|