2013-02-22 14 views
5

Mam zestaw testów ogórków do mojej aplikacji rails, zawierający około 500 scenariuszy z około 5000 kroków między nimi.Zestaw testów ogórków zbyt wolny dla Travisa

Skonfigurowałem moje repozytorium github, aby używać Travis-CI, używając następującej .travis.yml.

language: ruby 
rvm: 
    - "1.9.2" 
script: 
    - RAILS_ENV=test bundle exec rake db:migrate --trace 
    - bundle exec cucumber -f progress -r features features/cards/base_game 
    - bundle exec cucumber -f progress -r features features/cards/basic_cards 
    - bundle exec cucumber -f progress -r features features/cards/intrigue 
    - bundle exec cucumber -f progress -r features features/cards/seaside 
    - bundle exec cucumber -f progress -r features features/cards/prosperity 
    - bundle exec cucumber -f progress -r features features/cards/interactions 
before_script: 
    - cp config/database.travis.yml config/database.yml 
    - psql -c 'create database dominion_test' -U postgres 

mam podzielone wykonanie ogórka jako Travis wyrzucając pamięci, jeśli tylko prowadził bundle exec cucumber do uruchomienia wszystkich przypadków.

Jednak moje ostatnie pchnięcie spowodowało zadanie Travisa, które trwało ponad 50 minut, aby uruchomić wszystkie moje testy, i dlatego został zabity. Czy jestem po prostu zbyt nierozsądny z powodu wielu scenariuszy, czy też jest coś, co mogę zrobić, aby przyspieszyć egzekucję?

Edytuj: Jeśli to ma znaczenie, powinienem wyjaśnić, że moje Scenariusze nie testują GUI. Testują zasady serwera gier karcianych, więc bezpośrednio odwołują się do metod modeli.

Odpowiedz

5

Znalazłem rozwiązanie, po wielu googlach, pod numerem this page of Travis' docs.

Zasadniczo jest to dozwolone (zalecane, nawet!) Do paralelizacji przebiegów. Z następującym .travis.yml, kończę z sześcioma równoległymi zadaniami, z których żadna nie trwa dłużej niż 15 minut, a zatem wszystkie kończą się:

language: ruby 
rvm: 
    - "1.9.2" 
env: 
    - CARD_SET=base_game 
    - CARD_SET=basic_cards 
    - CARD_SET=intrigue 
    - CARD_SET=seaside 
    - CARD_SET=prosperity 
    - CARD_SET=interactions 
script: 
    - RAILS_ENV=test bundle exec rake db:migrate --trace 
    - bundle exec cucumber -f progress -r features features/cards/$CARD_SET 
before_script: 
    - cp config/database.travis.yml config/database.yml 
    - psql -c 'create database dominion_test' -U postgres 
Powiązane problemy