Skip to content

Мое выполнение задания олимпиады "Траектория будущего" в номинации "Python"

Notifications You must be signed in to change notification settings

mrtstg/tbolimp_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание для олимпиады "Траектория будущего" в направлении "Программирование на языке Python"

Структура проекта

├── data.csv - стандартный путь к файлу с входными данными
├── deployment
│   └── requirements.txt - зависимости проекта
├── Makefile - файл для упрощенного доступа к инструкциям
├── README.md - файл, который вы сейчас читаете
└── src - исходный код проекта
    ├── app.py - модуль который содержит основую связующую логику приложения
    ├── csv_reader.py - модуль чтения CSV-файла и его сериализации
    ├── dns_worker.py - модуль для работы с DNS
    ├── __init__.py
    ├── logger.py - модуль для вывода логов
    ├── main.py - главный скрипт, который запускает приложение
    ├── network_worker.py - модуль для работы с сетью
    ├── test_csv_reader.py - тест-кейсы для модуля чтения CSV-файла
    ├── test_mock_objects.py - тестовые объекты для Mock-тестирования
    ├── test_validators.py - тест-кейсы для валидаторов
    └── validators.py - функции-валидаторы адресов и DNS-имен

Запуск скрипта

Общий алгоритм

  • Скопируйте папку с проектом и перейдите в нее
  • Установите пакетные зависимости - pip3 install -r deployment/requirements.txt
  • Запустите скрипт командой python3 src/main.py для Linux-систем и python src/main.py для Windows

Запуск при помощи Makefile

Для систем Linux с установленным make и поддержкой виртуального окружения доступен запуск при помощи make-команд

make venv
sudo make run

Примечания к запуску

  • Запускать скрипт необходимо либо из под root-пользователя на Linux, либо в терминале, запущенного с правами администратора на Windows
  • При ином виде запуска (например, из IDE) необходимо поправить переменную окружения CSV_FILE или изменить путь к файлу в коде.
  • Запуск скрипта из под систем Windows может занять дольше времени в силу скорости работы библиотеки dnspython

Важные примечания к работе программы

  • В случае если при запуске программы на хосте указан неправильный адрес DNS и после он будет изменен на сетевом интерфейсе, программе может потребоваться перезапуск.

Переменные окружения

Работа программы может быть кастомизирована следующими переменными окружения:

  • SOCKET_CONN_TIMEOUT - таймаут подключения к порту в секундах (по умолчанию - 5)

  • CSV_FILE - путь к файлу с данными (по умолчанию - data.csv)

  • CHECK_TIMEOUT - таймаут повторной проверки (по умочанию - 0)

Тестирование проекта

Для проекта реализовано базовое тестирование механизма чтения и валидации данных. Все тестовые объекты и тест-кейсы расположены в файлах с наименованием test_*.py.

Тесты можно запустить командой make test или pytest

About

Мое выполнение задания олимпиады "Траектория будущего" в номинации "Python"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published