CoderCastrov logo
CoderCastrov
Парсер

Неделя 5–6 @ PostgreSQL, Google Summer Of Code’23

Неделя 5–6 @ PostgreSQL, Google Summer Of Code’23
просмотров
3 мин чтение
#Парсер

Привет!

Это четвертая часть моей двухнедельной серии в рамках GSoC’23 @ PostgreSQL. Для быстрого повторения, проект, над которым я работаю, заключается в разработке набора тестов для официального веб-сайта PostgreSQL. Вы можете прочитать больше об этом здесь.

Прогресс, достигнутый на этой неделе

На этой неделе были завершены почти все тесты, связанные с отправкой данных формы. Я также понял, что, хотя я проверял, что данные сохраняются правильно, я не проверял, что они отображаются правильно на соответствующих страницах.

Ну, вы можете сказать, что это не такая большая проблема, но ранее на сайте возникали некоторые проблемы с отображением, и поэтому я считаю, что в наилучшем интересе будет охватить как можно больше функций в этом проекте, чтобы убедиться, что набор тестов действительно полезен для разработчиков веб-сайта.

Вторая функция, над которой я работал, заключалась в отображении журналов в качестве артефактов после каждого запуска, чтобы разработчики могли легко определить, какие тесты прошли и какие не прошли. Но есть проблема с этим подходом: GitHub позволяет артефактам сохраняться в течение 90 дней, но если позже понадобится доступ к каким-либо журналам, они не будут архивированы, поэтому мне нужно сохранять их с помощью базы данных или какого-либо облачного хранилища.

Визуализация документации

После завершения всех этих тестов я переключил свое внимание на другую проблему, которая была указана в начале периода совместной работы с сообществом. Если вы когда-либо посещали веб-сайт PostgreSQL, вы, возможно, заметили удивительную документацию, которая кажется так красиво интегрированной в веб-сайт, что вы можете подумать, что это была веб-страница, написанная вручную человеком. Но, догадайтесь, все это автоматизировано!

Я сам был потрясен! Весь процесс действительно красив. Для каждого выпуска подготавливается tar-архив, который содержит всю необходимую документацию. Специальный скрипт в репозитории pgweb, названный docload.py, отвечает за эту волшебство. Он вставляет документацию каждого минорного выпуска в его дерево версий.

Чтобы протестировать этот процесс визуализации, мне нужно было использовать этот скрипт с некоторыми изменениями, которые работали с моим скриптом настройки. Но я никак не собирался загружать и размещать все файлы в репозитории вручную.

Поэтому я использовал другой подход. Я написал скрипт, который парсит ftp-сервер PostgreSQL (где доступна вся документация) и скачивает документацию некоторых версий. Я даже написал функциональность для формирования фикстуры с использованием полученных данных и вставки ее в базу данных с помощью команды loaddata. Это позволит заполнить таблицу версий, чтобы соответствующую документацию можно было легко загрузить. Скрипт выглядит следующим образом:

Этот скрипт вписывается в скрипт setup.sh и вводит процесс загрузки документации в нормальный поток настройки теста.

Заключение

Вот и все на этой неделе. Этот проект развивался совершенно по-другому, чем я предполагал в начале. Почти половина проекта была завершена до середины срока оценки, и я не мог быть более благодарным за потрясающее руководство, предоставленное моими наставниками Stephen Frost и Ilaria Battiston.

Проект достиг стадии, когда каждый новый модуль может быть легко вставлен в обычный рабочий процесс, как конструктор Лего, и я не мог быть счастливее этим результатом. Я надеюсь, что этот проект продолжит свое развитие в оставшейся части пути.

Вы можете проверить репозиторий здесь. Как обычно, если у вас есть какие-либо предложения, пожалуйста, оставьте их в комментариях или вы можете отправить мне письмо на destres271@gmail.com, или вы также можете создать проблему на репозитории проекта!