Commit Graph

11 Commits

Author SHA1 Message Date
Yorick Peterse 89920ca819 Allow benchmark failures for the time being
This will be disallowed again once the existing benchmarks pass (which
relies on #2341).
2015-10-05 11:08:52 +02:00
Yorick Peterse 19893a1c10 Basic setup for an RSpec based benchmark suite
This benchmark suite uses benchmark-ips
(https://github.com/evanphx/benchmark-ips) behind the scenes. Specs can
be turned into benchmark specs by setting "benchmark" to "true" in the
top-level describe block like so:

    describe SomeClass, benchmark: true do

    end

Writing benchmarks can be done using custom RSpec matchers, for example:

    describe MaruTheCat, benchmark: true do
      describe '#jump_in_box' do
        it 'should run 1000 iterations per second' do
          maru = described_class.new

          expect { maru.jump_in_box }.to iterate_per_second(1000)
        end
      end
    end

By default the "iterate_per_second" expectation requires a standard
deviation under 30% (this is just an arbitrary default for now). You can
change this by chaining "with_maximum_stddev" on the expectation:

    expect { maru.jump_in_box }.to iterate_per_second(1000)
      .with_maximum_stddev(10)

This will change the expectation to require a maximum deviation of 10%.

Alternatively you can use the it block style to write specs:

    describe MaruTheCat, benchmark: true do
      describe '#jump_in_box' do
        subject { -> { described_class.new } }

        it { is_expected.to iterate_per_second(1000) }
      end
    end

Because "iterate_per_second" operates on a block, opposed to a static
value, the "subject" method must return a Proc. This looks a bit goofy
but I have been unable to find a nice way around this.
2015-10-02 17:00:23 +02:00
Robert Speicher 60c7d35543 Remove jasmine:ci task, execute teaspoon directly on CI 2015-06-28 16:27:40 -04:00
Dmitriy Zaporozhets b5e7096cbf Split rspec and spinach tests in parallel 2015-06-23 16:43:24 +02:00
Marin Jankovski 0abd565305 Use correct name for the script. 2015-06-18 10:57:28 +02:00
Marin Jankovski 2b49706f1f Move prepare_build script to scripts dir. 2015-06-18 10:46:24 +02:00
Marin Jankovski b6688f830b Add a build preparation script, modify gitlab.ci.yml to use the script. 2015-06-17 12:23:43 +02:00
Valery Sizov f715bc7b70 new syntax of .gitlab-ci.yml 2015-06-15 19:38:35 +03:00
Valery Sizov 64b6dbea74 CI script: remove directives with default value 2015-06-04 23:06:37 +03:00
Dmitriy Zaporozhets b18ac382b7
Refactor CI script
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
2015-06-04 16:54:32 +02:00
Valery Sizov 3d5a51d416 added ci yaml 2015-06-04 13:47:44 +03:00