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