Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'qa/spec/tools/ci/test_metrics_spec.rb')
-rw-r--r--qa/spec/tools/ci/test_metrics_spec.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/qa/spec/tools/ci/test_metrics_spec.rb b/qa/spec/tools/ci/test_metrics_spec.rb
new file mode 100644
index 00000000000..4c1c4092d15
--- /dev/null
+++ b/qa/spec/tools/ci/test_metrics_spec.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+RSpec.describe QA::Tools::Ci::TestMetrics do
+ include QA::Support::Helpers::StubEnv
+
+ let(:influx_client) { instance_double("InfluxDB2::Client", create_write_api: influx_write_api) }
+ let(:influx_write_api) { instance_double("InfluxDB2::WriteApi", write: nil) }
+ let(:logger) { instance_double("Logger", info: true, warn: true) }
+
+ let(:glob) { "metrics_glob/*.json" }
+ let(:paths) { ["/metrics_glob/metrics.json"] }
+ let(:timestamp) { "2022-11-11 07:54:11 +0000" }
+ let(:metrics_json) { metrics_data.to_json }
+
+ let(:metrics_data) do
+ [
+ {
+ time: timestamp.to_time,
+ name: "name",
+ tags: {},
+ fields: {}
+ }
+ ]
+ end
+
+ before do
+ allow(InfluxDB2::Client).to receive(:new) { influx_client }
+ allow(Gitlab::QA::TestLogger).to receive(:logger) { logger }
+ allow(Dir).to receive(:glob).with(glob) { paths }
+ allow(File).to receive(:read).with(paths.first) { metrics_json }
+
+ stub_env('QA_INFLUXDB_URL', "test")
+ stub_env('QA_INFLUXDB_TOKEN', "test")
+ end
+
+ context "with metrics files present" do
+ it "exports saved metrics to influxdb" do
+ described_class.export(glob)
+
+ expect(influx_write_api).to have_received(:write).with(data: metrics_data, bucket: "e2e-test-stats-main")
+ end
+ end
+
+ context "without metrics files present" do
+ let(:paths) { [] }
+
+ it "exits without error" do
+ described_class.export(glob)
+
+ expect(influx_write_api).not_to have_received(:write)
+ expect(logger).to have_received(:warn).with("No files matched pattern '#{glob}'")
+ end
+ end
+end