Skip to content
/ SeaLant Public

Библиотека с инструментом для поиска утечек памяти в процессе выполнения тестов в Chrome или Node.js

License

Notifications You must be signed in to change notification settings

saby/SeaLant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SeaLant

Библиотека с инструментом для поиска утечек памяти в процессе выполнения тестов в Chrome или Node.js

Содержание

Установка

pip install sealant

Инструкция

Пример использования

Минимальный набор действий для подключения библиотеки:

from sealant import sealant
from unittest import TestCase
...

# Предназначено для использование с фреймворком UnitTests и основанных на 
# нем сторонних фреймворках
class TestsCaseExample(TestCase):

...

    # Перед тестом необходимо уже иметь запущенную ноду, библиотека
    # подключается к ней перед запуском метода test_case
    @sealant()
    def test_case(self):
        some_actions()

Параметры подключения к ноде

В представленном выше сценарии используются настройки подключения по умолчанию: подключение к ноде по localhost:9222
При необходимости можно указать другие хост/порт ноды или прямую ccылку websocket

    @sealant(host='not_localhost', port='2229', ws='ws://direct_ws:9222')
    def test_case(self):
        actions()

Указанный ws имеет приоритет над host/port
Допустим вариант указания настроек подключения для целого класса:

@sealant(host='not_localhost', port='2229')
class TestsCaseExample(TestCase):

...
    @sealant()
    def test_case(self):
        actions()

Можно задать настройки по умолчанию для всех использований библиотеки в config.py.

Выбор типа анализа утечки

Следующим важным этапом настройки является возможность выбора типа heapfile: heaptimeline или heapsnapshot. По умолчанию используется heaptimeline как более быстрый и показавший большую стабильность способ. Но для Node.js допустим только вариант с heapsnapshot:

    @sealant(timeline=False)
    def test_case(self):
        actions()

Найденные утечки сравниваются с объемом, указанным в config.py (leak_size_limit). Если размер утечки больше заданного допустимого после выполнения 8 пункта, то вызывается исключение LeakError.

Сохранение отчета и артефактов теста

В config.py можно задать, сохранять ли полученные heapfiles и составлять ли отчет в случае нахождения утечки. В этом случае составленный отчет и снятые heapfiles пакуются в zip архив и помещаются в заданную в config.py папку (по умолчанию создается папка leaks в папке с тестом).

Версионирование

Мы используем SemVer для версионирования.

Авторы

Юдахин А.Е
e-mail: aejudakhin@gmail.com

Докучаев С.В
e-mail: sv.dokuchaev@tensor.ru

Лицензия

This project is licensed under the MIT License - see the LICENSE.md file for details

About

Библиотека с инструментом для поиска утечек памяти в процессе выполнения тестов в Chrome или Node.js

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published