-
Notifications
You must be signed in to change notification settings - Fork 50
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
base: master
Are you sure you want to change the base?
HW 7 #21
Conversation
|
||
использовал let_it_be в нужных местах и скорость прогона в целом упала до 1,4 минут | ||
|
||
с let_it_be были проблемы, то он не хотел работать с тестами вложенные в несколько контекстов, то не хотел работать с timecop и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- он породил нестабильные тесты
There was a problem hiding this 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 тут не помог |
There was a problem hiding this comment.
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 и прочее но главной проблемой было то что если запустить файл с тестами то они проходили но если запустить все тесты в проекте то часть тестов не проходила, поскольку он почему то для фабрик сбрасывал ассоциации которые были нужны в тесте, нативного решение не нашел и пришлось переписать тест так что бы ассоциации создавалась прямо внутри теста. |
There was a problem hiding this comment.
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 очень крутая находка. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
|
||
Конечно в плане оптимизации тестов в проекте непаханое поле, но проект скоро сдавать и на это времени нет((( | ||
|
||
в качестве челенджа в будущем попробую запускать тесты прям в оперативной памяти держа базу в ней |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 да, интересно попробовать
|
||
Результат оптимизации: | ||
|
||
 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
No description provided.