summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/tracking/destinations/snowplow_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/tracking/destinations/snowplow_spec.rb')
-rw-r--r--spec/lib/gitlab/tracking/destinations/snowplow_spec.rb56
1 files changed, 55 insertions, 1 deletions
diff --git a/spec/lib/gitlab/tracking/destinations/snowplow_spec.rb b/spec/lib/gitlab/tracking/destinations/snowplow_spec.rb
index 65597e6568d..f8e73a807c6 100644
--- a/spec/lib/gitlab/tracking/destinations/snowplow_spec.rb
+++ b/spec/lib/gitlab/tracking/destinations/snowplow_spec.rb
@@ -21,7 +21,10 @@ RSpec.describe Gitlab::Tracking::Destinations::Snowplow do
expect(SnowplowTracker::AsyncEmitter)
.to receive(:new)
- .with('gitfoo.com', { protocol: 'https' })
+ .with('gitfoo.com',
+ { protocol: 'https',
+ on_success: subject.method(:increment_successful_events_emissions),
+ on_failure: subject.method(:failure_callback) })
.and_return(emitter)
expect(SnowplowTracker::Tracker)
@@ -40,6 +43,18 @@ RSpec.describe Gitlab::Tracking::Destinations::Snowplow do
.to have_received(:track_struct_event)
.with('category', 'action', 'label', 'property', 1.5, nil, (Time.now.to_f * 1000).to_i)
end
+
+ it 'increase total snowplow events counter' do
+ counter = double
+
+ expect(counter).to receive(:increment)
+ expect(Gitlab::Metrics).to receive(:counter)
+ .with(:gitlab_snowplow_events_total,
+ 'Number of Snowplow events')
+ .and_return(counter)
+
+ subject.event('category', 'action', label: 'label', property: 'property', value: 1.5)
+ end
end
end
@@ -52,4 +67,43 @@ RSpec.describe Gitlab::Tracking::Destinations::Snowplow do
end
end
end
+
+ context 'callbacks' do
+ describe 'on success' do
+ it 'increase gitlab_successful_snowplow_events_total counter' do
+ counter = double
+
+ expect(counter).to receive(:increment).with({}, 2)
+ expect(Gitlab::Metrics).to receive(:counter)
+ .with(:gitlab_snowplow_successful_events_total,
+ 'Number of successful Snowplow events emissions')
+ .and_return(counter)
+
+ subject.method(:increment_successful_events_emissions).call(2)
+ end
+ end
+
+ describe 'on failure' do
+ it 'increase gitlab_failed_snowplow_events_total counter and logs failures', :aggregate_failures do
+ counter = double
+ error_message = "Admin::AuditLogsController search_audit_event failed to be reported to collector at gitfoo.com"
+ failures = [{ "e" => "se",
+ "se_ca" => "Admin::AuditLogsController",
+ "se_ac" => "search_audit_event" }]
+ allow(Gitlab::Metrics).to receive(:counter)
+ .with(:gitlab_snowplow_successful_events_total,
+ 'Number of successful Snowplow events emissions')
+ .and_call_original
+
+ expect(Gitlab::AppLogger).to receive(:error).with(error_message)
+ expect(counter).to receive(:increment).with({}, 1)
+ expect(Gitlab::Metrics).to receive(:counter)
+ .with(:gitlab_snowplow_failed_events_total,
+ 'Number of failed Snowplow events emissions')
+ .and_return(counter)
+
+ subject.method(:failure_callback).call(2, failures)
+ end
+ end
+ end
end