Forum: Ruby on Rails Run performance tests without dumping database

3536eb4727fdcbcca12e3b48333cbc9c?d=identicon&s=25 Andy Chambers (Guest)
on 2012-07-12 01:00
(Received via mailing list)
Hi,

I'm trying to build a simple performance test on a rails 3 app that
operates on a large database (~150GB).  We copy production data to our
dev/test setup every night so that we have a realistic environment for
development.

I followed the guide on creating a test and tried to run it using

$ rake test:benchmark

Unbelievably, this tried to drop my test database!!!  Fortunately it
didn't
have permission to do this and failed.  Is there a way to skip this step
and just run the test against the DB as it exists already.  From the
guide,
it seems like most rails apps have their test data in yaml files or
something but I don't understand how this would scale to a production
environment.  Code that works well on 100 or so database rows is not
necessarily going to work well on millions of rows.

Feel free to point me in the direction of relevant documentation and
tell
me to RTFM.
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2012-07-12 09:05
(Received via mailing list)
On 11 July 2012 01:39, Andy Chambers <achambers.home@gmail.com> wrote:
> Unbelievably, this tried to drop my test database!!!  Fortunately it didn't
> have permission to do this and failed.
> Is there a way to skip this step and
> just run the test against the DB as it exists already.  From the guide, it
> seems like most rails apps have their test data in yaml files or something
> but I don't understand how this would scale to a production environment.
> Code that works well on 100 or so database rows is not necessarily going to
> work well on millions of rows.

The test environment is designed for testing that stuff works, not for
performance testing.  In order for tests to be repeatable they have to
always work on the same data, which is why the test database is
reloaded for each test, either from fixtures or, more often nowadays,
using Factories.

The test environment is not appropriate for performance testing
anyway, to do this you would have to set up a parallel production
environment in order that it correctly mimics your real environment.

Colin
3536eb4727fdcbcca12e3b48333cbc9c?d=identicon&s=25 Andy Chambers (Guest)
on 2012-07-12 16:39
(Received via mailing list)
On Thursday, July 12, 2012 3:03:25 AM UTC-4, Colin Law wrote:
> > I followed the guide on creating a test and tried to run it using
> something
> > but I don't understand how this would scale to a production environment.
> > Code that works well on 100 or so database rows is not necessarily going
> to
> > work well on millions of rows.
>
> The test environment is designed for testing that stuff works, not for
> performance testing.


If this is true, someone should tell that to the official guide
maintainers

http://guides.rubyonrails.org/performance_testing.html

The test environment is not appropriate for performance testing
> anyway, to do this you would have to set up a parallel production
> environment in order that it correctly mimics your real environment.
>

Exactly!  We have this.  I just wondered if there was a "rails/ruby way"
of
writing and running performance tests against this environment.  The
scaffolding builds a tests/performance directory so I assumed there was.
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2012-07-12 18:02
(Received via mailing list)
On 12 July 2012 15:37, Andy Chambers <achambers.home@gmail.com> wrote:
>> > setup
>> > just run the test against the DB as it exists already.  From the guide,
>
>
> If this is true, someone should tell that to the official guide maintainers
>
> http://guides.rubyonrails.org/performance_testing.html

That munching sound you can hear is me eating my words.

>
>> The test environment is not appropriate for performance testing
>> anyway, to do this you would have to set up a parallel production
>> environment in order that it correctly mimics your real environment.
>
>
> Exactly!  We have this.  I just wondered if there was a "rails/ruby way" of
> writing and running performance tests against this environment.  The
> scaffolding builds a tests/performance directory so I assumed there was.

I see from the guide section 1.7 that for performance test environment
is close to the production environment.  Munch munch.

So to get back to your original question this might be helpful, though
I have not tried it myself.  It is a bit old so may need tweaking for
Rails 3.  Does anyone else have suggestions?
http://m.onkey.org/running-rails-performance-tests...

Colin
3536eb4727fdcbcca12e3b48333cbc9c?d=identicon&s=25 Andy Chambers (Guest)
on 2012-07-12 18:32
(Received via mailing list)
On Thursday, July 12, 2012 12:01:15 PM UTC-4, Colin Law wrote:
> >> > operates
> >> > didn't
> going
> > http://guides.rubyonrails.org/performance_testing.html
> of
>
Aha, thanks for this link.  That helps a lot.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.