zombocom / derailed_benchmarks

Go faster, off the Rails - Benchmarks for your whole Rails app
2.97k stars 144 forks source link

Authentication with sorcery #210

Open PedroAugustoRamalhoDuarte opened 2 years ago

PedroAugustoRamalhoDuarte commented 2 years ago

Hello, I am trying to setup a sorcery (https://github.com/Sorcery/sorcery) to use derailed benchmarks, but struggling with it, i try do setup this code inside perf.rake:

class SorceryAuth < DerailedBenchmarks::AuthHelper
  def setup
    require 'sorcery'
    require 'sorcery/controller'
    extend ::Sorcery::TestHelpers::Rails::Controller
    extend ::Sorcery::TestHelpers::Rails::Request
    extend ::Sorcery::TestHelpers::Rails::Integration
    extend ::Sorcery::Controller::InstanceMethods
    # initialize code here
  end

  def call(env)
    # log something in on each request
    login(User.first.email, '1234', remember_me = false)
    app.call(env)
  end
end

DerailedBenchmarks.auth = SorceryAuth.new

When i run:

USE_AUTH=true PATH_TO_HIT='/library/library/livros' derailed exec perf:stackprof

I receive the following error:

/home/pedro/.asdf/installs/ruby/2.7.2/lib/ruby/gems/2.7.0/gems/sorcery-0.16.3/lib/sorcery/controller.rb:52:in `block in login': undefined local variable or method `session' for #<SorceryAuth:0x0000556237a2a078> (NameError)
Did you mean?  old_session

Thanks for the help!!

schneems commented 2 years ago

If you can provide an https://www.codetriage.com/example_app that reproduces the problem then maybe I can take a look.

PedroAugustoRamalhoDuarte commented 2 years ago

@schneems thanks for the support, i will provide soon

PedroAugustoRamalhoDuarte commented 2 years ago

Hello @schneems , i have build the repo to reproduce the problem (https://github.com/PedroAugustoRamalhoDuarte/derailed_benchmarks_sorcery), try to run: USE_AUTH=true derailed exec perf:stackprof

PedroAugustoRamalhoDuarte commented 2 years ago

Sorcery have 3 types of test helpers (https://github.com/Sorcery/sorcery/wiki/Testing-Rails), i have tried with all options and didn't succeed, each one with a different problem.

The best way is using auto_login from sorcery, but its uses sessions and i think is not enable when we execute derailed, because this error:

undefined local variable or method `session' for #<SorceryAuth:0x00007f259719d138 @app=#<DerailedBencgmarksSorcery::Application>> (NameError)