Class: BlazemeterApi
- Inherits:
-
Object
- Object
- BlazemeterApi
- Defined in:
- lib/blazemeter.rb
Constant Summary collapse
- @@url =
'https://a.blazemeter.com'
Instance Method Summary collapse
- #get(path) ⇒ Object
- #get_https(uri) ⇒ Object
- #getFile(url, filepath) ⇒ Object
- #getOptions ⇒ Object
-
#initialize(user_key) ⇒ BlazemeterApi
constructor
@@url = ‘vitali.a.blazemeter.com’ @@url = ‘localhost/ablazemetercom’.
- #normalizeOptions(options) ⇒ Object
- #post(path, options = nil) ⇒ Object
- #postData(path, filepath) ⇒ Object
- #testCreate(test_name = nil, options = nil) ⇒ Object
- #testGetArchive(test_id) ⇒ Object
- #testGetStatus(test_id, detailed = false) ⇒ Object
- #testLoad(test_id) ⇒ Object
- #testScriptUpload(test_id, filepath, filename = nil) ⇒ Object
- #testStart(test_id) ⇒ Object
- #testStop(test_id) ⇒ Object
- #testUpdate(test_id, options = nil) ⇒ Object
Constructor Details
#initialize(user_key) ⇒ BlazemeterApi
@@url = ‘vitali.a.blazemeter.com’ @@url = ‘localhost/ablazemetercom’
36 37 38 |
# File 'lib/blazemeter.rb', line 36 def initialize(user_key) @user_key = user_key end |
Instance Method Details
#get(path) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/blazemeter.rb', line 70 def get(path) uri = URI.parse(@@url+path) https = get_https(uri) req = Net::HTTP::Get.new(uri.request_uri) response = https.request(req) return response end |
#get_https(uri) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/blazemeter.rb', line 40 def get_https(uri) https = Net::HTTP.new(uri.host,uri.port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE return https end |
#getFile(url, filepath) ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/blazemeter.rb', line 78 def getFile(url, filepath) uri = URI.parse(url) https = get_https(uri) resp = https.get(uri.request_uri) File.open(filepath, "w") do |file| file.binmode #windows file.write resp.body file.close end end |
#getOptions ⇒ Object
195 196 197 198 199 200 |
# File 'lib/blazemeter.rb', line 195 def getOptions() path = '/api/rest/blazemeter/getAvailableOptions.json?user_key=' + @user_key response = get(path) ret = JSON.parse(response.body) return ret["options"] end |
#normalizeOptions(options) ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/blazemeter.rb', line 89 def normalizeOptions() ['options'].each do |index, item| case index when "LOCATION" ["options"]["LOCATION"] = Blazemeter::Common.get_location(item.downcase) end end return end |
#post(path, options = nil) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/blazemeter.rb', line 47 def post(path, =nil) uri = URI.parse(@@url+path) = .to_json https = get_https(uri) req = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'}) req.body = response = https.request(req) return response end |
#postData(path, filepath) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/blazemeter.rb', line 57 def postData(path, filepath) uri = URI.parse(@@url+path) postdata = Hash.new file = File.open(filepath, "rb") f = file.read postdata['data'] = f.to_s https = get_https(uri) req = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'}) req.body = postdata.to_json response = https.request(req) return response end |
#testCreate(test_name = nil, options = nil) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/blazemeter.rb', line 99 def testCreate(test_name=nil, =nil) if !test_name test_name = "Automatic Ruby Test "+Time.new.inspect end path = '/api/rest/blazemeter/testCreate.json?user_key=' + @user_key + '&test_name=' + URI.escape(test_name) = normalizeOptions() response = post(path, ) if response.body == '' puts "BlazeMeter server not responding" return nil end ret = JSON.parse(response.body) if ret["error"] puts "BlazeMeter returned error: "+ret["error"] else if ret["response_code"] == 200 puts "BlazeMeter test created with id "+ret["test_id"].to_s puts "Access test online at "+@@url+"/node/"+ret["test_id"].to_s return ret["test_id"] else puts "BlazeMeter server response error:"+ret["response_code"].to_s end end end |
#testGetArchive(test_id) ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/blazemeter.rb', line 214 def testGetArchive(test_id) path = '/api/rest/blazemeter/testGetArchive.json?user_key=' + @user_key + '&test_id=' + test_id.to_s has_report = false response = get(path) ret = JSON.parse(response.body) if !ret["error"] and ret["response_code"] == 200 ret["reports"].each_with_index {|val, index| if ret["reports"][index]["zip_url"] zip_url = ret["reports"][index]["zip_url"] filename = File.basename zip_url filepath = Dir.home+"/"+ filename zip_url = zip_url + '?api_key=' + @user_key #we need api_key to access report getFile(zip_url,filepath) #todo: check that its downloaded puts "Zip report downloaded to "+filepath has_report = true end } if !has_report puts "No reports found for test "+test_id end else puts "Error retrieving archive: " + ret["error"] end end |
#testGetStatus(test_id, detailed = false) ⇒ Object
184 185 186 187 188 189 190 191 192 193 |
# File 'lib/blazemeter.rb', line 184 def testGetStatus(test_id, detailed = false) path = '/api/rest/blazemeter/testGetStatus.json?user_key=' + @user_key + '&test_id=' + test_id.to_s if detailed path = path + '&detailed=true' end response = get(path) ret = JSON.parse(response.body) return ret end |
#testLoad(test_id) ⇒ Object
202 203 204 205 206 207 208 209 210 211 212 |
# File 'lib/blazemeter.rb', line 202 def testLoad(test_id) path = '/api/rest/blazemeter/testUpdate.json?user_key=' + @user_key + '&test_id=' + test_id.to_s response = post(path) ret = JSON.parse(response.body) if !ret["error"] and ret["response_code"] == 200 return ret["options"] else puts "Error loading test: " + ret["error"] return nil end end |
#testScriptUpload(test_id, filepath, filename = nil) ⇒ Object
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/blazemeter.rb', line 240 def testScriptUpload(test_id, filepath, filename = nil) path = '/api/rest/blazemeter/testScriptUpload.json?user_key=' + @user_key + '&test_id=' + test_id.to_s if (filename) path = path + "&file_name=" + URI.escape(filename) end response = postData(path, filepath) if response.body == '' puts "BlazeMeter server not responding" return nil end ret = JSON.parse(response.body) if ret["error"] puts "BlazeMeter returned error: "+ret["error"] else if ret["response_code"] == 200 puts "JMX script uploaded sucessfully to BlazeMeter" return true else puts "JMX script couldn't be uploaded. Error:"+ret["error"].to_s end end return false end |
#testStart(test_id) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/blazemeter.rb', line 129 def testStart(test_id) path = '/api/rest/blazemeter/testStart.json?user_key=' + @user_key + '&test_id=' + test_id.to_s response = get(path) ret = JSON.parse(response.body) if !ret["error"] and ret["response_code"] == 200 puts "BlazeMeter test started" return true else #todo: what to do with error? log? throw exception? puts "Test not started. Error: "+ret["error"] return false end end |
#testStop(test_id) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/blazemeter.rb', line 143 def testStop(test_id) path = '/api/rest/blazemeter/testStop.json?user_key=' + @user_key + '&test_id=' + test_id.to_s response = get(path) ret = JSON.parse(response.body) if !ret["error"] and ret["response_code"] == 200 puts "BlazeMeter test stopped" return true else #todo: what to do with error? log? throw exception? puts "Test not stopped. Error: "+ret["error"] return false end end |
#testUpdate(test_id, options = nil) ⇒ Object
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/blazemeter.rb', line 158 def testUpdate(test_id, =nil) path = '/api/rest/blazemeter/testUpdate.json?user_key=' + @user_key + '&test_id=' + test_id.to_s = normalizeOptions() response = post(path, ) if response.body == '' puts "BlazeMeter server not responding" return nil end ret = JSON.parse(response.body) if ret["error"] puts "BlazeMeter returned error: "+ret["error"] else if ret["response_code"] == 200 puts "BlazeMeter test updated sucessfully" return true else puts "BlazeMeter test not updated. Error:"+ret["error"].to_s end end return false end |