diff --git a/lib/app_profiler/request_parameters.rb b/lib/app_profiler/request_parameters.rb index da869f9..76e2369 100644 --- a/lib/app_profiler/request_parameters.rb +++ b/lib/app_profiler/request_parameters.rb @@ -27,12 +27,13 @@ def backend end def valid? - if mode.blank? + return false if mode.blank? + + unless valid_backend? + AppProfiler.logger.info("[AppProfiler] unsupported backend='#{backend}'") return false end - return false if backend != AppProfiler::Backend::StackprofBackend.name && !AppProfiler.vernier_supported? - if AppProfiler.vernier_supported? && backend == AppProfiler::Backend::VernierBackend.name && !AppProfiler::Backend::VernierBackend::AVAILABLE_MODES.include?(mode.to_sym) AppProfiler.logger.info("[AppProfiler] unsupported profiling mode=#{mode} for backend #{backend}") @@ -50,6 +51,12 @@ def valid? true end + def valid_backend? + return true if AppProfiler::Backend::StackprofBackend.name == backend + + AppProfiler.vernier_supported? && AppProfiler::Backend::VernierBackend.name == backend + end + def to_h { mode: mode.to_sym, diff --git a/test/app_profiler/request_parameters_test.rb b/test/app_profiler/request_parameters_test.rb index e577879..ab380e0 100644 --- a/test/app_profiler/request_parameters_test.rb +++ b/test/app_profiler/request_parameters_test.rb @@ -29,6 +29,13 @@ class RequestParametersTest < TestCase end end + test "#valid? returns false when backend is not supported" do + AppProfiler.logger.expects(:info).with { |value| value =~ /unsupported backend='not-a-real-backend'/ } + params = request_params(headers: { AppProfiler.request_profile_header => "mode=cpu;backend=not-a-real-backend" }) + + assert_not_predicate(params, :valid?) + end + test "#context is AppProfiler.context by default" do with_context("test-context") do AppProfiler.logger.expects(:info).never