Skip to content

Add metric initializer spec

username-removed-443319 requested to merge add-metrics-initializer-spec into master

An empty file in one of the instrumented directories will cause the app to fail to start when metrics are enabled. Metrics aren't enabled by default in development or test.

We could handle the empty file case explicitly, but a file could still not define the constant it is expected to, so instead run the initializer manually in a spec and check that it succeeds.

$ bundle exec rspec spec/initializers/metrics_spec.rb
 1/1 |============================== 100 ==============================>| Time: 00:00:15

Finished in 15.08 seconds (files took 13.48 seconds to load)
1 example, 0 failures

$ touch app/services/merge_requests/foo_service.rb
$ bundle exec rspec spec/initializers/metrics_spec.rb

  1) configure_metrics can set up metrics on all files
     Failure/Error: expect { configure_metrics }.not_to raise_error

       expected no Exception, got #<LoadError: Unable to autoload constant MergeRequests::FooService, expected /Users/seanmcgivern/Code/gitlab-development-kit/gitlab/app/services/merge_requests/foo_service.rb to define it> with backtrace:
         # ./config/initializers/metrics.rb:81:in `block (3 levels) in configure_metrics'
         # ./config/initializers/metrics.rb:79:in `each'
         # ./config/initializers/metrics.rb:79:in `block (2 levels) in configure_metrics'
         # ./config/initializers/metrics.rb:76:in `each'
         # ./config/initializers/metrics.rb:76:in `block in configure_metrics'
         # ./lib/gitlab/metrics/instrumentation.rb:15:in `configure'
         # ./config/initializers/metrics.rb:51:in `configure_metrics'
         # ./spec/initializers/metrics_spec.rb:14:in `block (3 levels) in <top (required)>'
         # ./spec/initializers/metrics_spec.rb:14:in `block (2 levels) in <top (required)>'
     # ./spec/initializers/metrics_spec.rb:14:in `block (2 levels) in <top (required)>'

 1/1 |============================== 100 ==============================>| Time: 00:00:15

Finished in 15.33 seconds (files took 13.82 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/initializers/metrics_spec.rb:13 # configure_metrics can set up metrics on all files

Merge request reports