summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/gitlab/prometheus_client_spec.rb84
1 files changed, 37 insertions, 47 deletions
diff --git a/spec/lib/gitlab/prometheus_client_spec.rb b/spec/lib/gitlab/prometheus_client_spec.rb
index d3a28b53da9..f15ae83a02c 100644
--- a/spec/lib/gitlab/prometheus_client_spec.rb
+++ b/spec/lib/gitlab/prometheus_client_spec.rb
@@ -270,7 +270,7 @@ describe Gitlab::PrometheusClient do
end
describe 'proxy' do
- context 'query' do
+ context 'get API' do
let(:prometheus_query) { prometheus_cpu_query('env-slug') }
let(:query_url) { prometheus_query_url(prometheus_query) }
@@ -278,58 +278,48 @@ describe Gitlab::PrometheusClient do
Timecop.freeze { example.run }
end
- it 'returns full response from the API call' do
- req_stub = stub_prometheus_request(query_url, body: prometheus_value_body('vector'))
-
- response = subject.proxy('query', { query: prometheus_query })
- json_response = JSON.parse(response.body)
-
- expect(response.code).to eq(200)
- expect(json_response).to eq({
- 'status' => 'success',
- 'data' => {
- 'resultType' => 'vector',
- 'result' => [{ "metric" => {}, "value" => [1488772511.004, "0.000041021495238095323"] }]
- }
- })
- expect(req_stub).to have_been_requested
+ context 'when response status code is 200' do
+ it 'returns response object' do
+ req_stub = stub_prometheus_request(query_url, body: prometheus_value_body('vector'))
+
+ response = subject.proxy('query', { query: prometheus_query })
+ json_response = JSON.parse(response.body)
+
+ expect(response.code).to eq(200)
+ expect(json_response).to eq({
+ 'status' => 'success',
+ 'data' => {
+ 'resultType' => 'vector',
+ 'result' => [{ "metric" => {}, "value" => [1488772511.004, "0.000041021495238095323"] }]
+ }
+ })
+ expect(req_stub).to have_been_requested
+ end
end
- end
- context 'query_range' do
- let(:prometheus_query) { prometheus_memory_query('env-slug') }
- let(:query_url) { prometheus_query_range_url(prometheus_query, start: 2.hours.ago) }
+ context 'when response status code is not 200' do
+ it 'returns response object' do
+ req_stub = stub_prometheus_request(query_url, status: 400, body: { error: 'error' })
- around do |example|
- Timecop.freeze { example.run }
+ response = subject.proxy('query', { query: prometheus_query })
+ json_response = JSON.parse(response.body)
+
+ expect(req_stub).to have_been_requested
+ expect(response.code).to eq(400)
+ expect(json_response).to eq('error' => 'error')
+ end
end
- it 'returns full response' do
- req_stub = stub_prometheus_request(query_url, body: prometheus_values_body('vector'))
+ context 'when RestClient::Exception is raised' do
+ before do
+ stub_prometheus_request_with_exception(query_url, RestClient::Exception)
+ end
- response = subject.proxy('query_range', {
- query: prometheus_query,
- start: 2.hours.ago.to_f,
- end: Time.now.to_f,
- step: 60
- })
- json_response = JSON.parse(response.body)
-
- expect(response.code).to eq(200)
- expect(json_response).to eq({
- "status" => "success",
- "data" => {
- "resultType" => "vector",
- "result" => [{
- "metric" => {},
- "values" => [
- [1488758662.506, "0.00002996364761904785"],
- [1488758722.506, "0.00003090239047619091"]
- ]
- }]
- }
- })
- expect(req_stub).to have_been_requested
+ it 'raises PrometheusClient::Error' do
+ expect { subject.proxy('query', { query: prometheus_query }) }.to(
+ raise_error(Gitlab::PrometheusClient::Error, 'Network connection error')
+ )
+ end
end
end
end