Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HW 7 #21

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

HW 7 #21

wants to merge 1 commit into from

Conversation

Halvanhelv
Copy link

No description provided.


использовал let_it_be в нужных местах и скорость прогона в целом упала до 1,4 минут

с let_it_be были проблемы, то он не хотел работать с тестами вложенные в несколько контекстов, то не хотел работать с timecop и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • он породил нестабильные тесты

Copy link
Collaborator

@spajic spajic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve, respect 💪

@@ -0,0 +1,28 @@
Решил оптимизировать мой текущий проект(~83% покрытия и 1905 тестов), тесты гонялись в один поток ~10 минут, но уже ранее до того как начал проходить курс я предложил использовать parallel tests и скорость прогона упала до ~2.7(и это с учетом правок сделанных после предедущих уроков в курсе, изначально было ~3 минуты) минут на моей локальной машине(12 потоков), к сожалению в ci используем только одно ядро так что parallel tests тут не помог
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Воу, я бы попробовал на локальной машине поэксперементировать с кол-вом потоков.
Я в своих экспериментах например остановился на 4х
Когда увеличиваю - уже нет линейного прироста производительности, зато комп греется и теряет отзывчивость

На CI обычно можно добавить ядер, если это для вас ценно.


использовал let_it_be в нужных местах и скорость прогона в целом упала до 1,4 минут

с let_it_be были проблемы, то он не хотел работать с тестами вложенные в несколько контекстов, то не хотел работать с timecop и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, ну там надо понимать, что в rspec многое завязано на вход и выход из example.
А let_it_be и before_all работает вне всех экзамплов, поэтому там например нельзя замокать что-то c помощью allow(smth).to receive

использовал let_it_be в нужных местах и скорость прогона в целом упала до 1,4 минут

с let_it_be были проблемы, то он не хотел работать с тестами вложенные в несколько контекстов, то не хотел работать с timecop и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста.
но в целом let_it_be очень крутая находка.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


Конечно в плане оптимизации тестов в проекте непаханое поле, но проект скоро сдавать и на это времени нет(((

в качестве челенджа в будущем попробую запускать тесты прям в оперативной памяти держа базу в ней
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 да, интересно попробовать


Результат оптимизации:

![Результат оптимизации](https://i.imgur.com/HIptMAH.png)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants