Цель программы: вывод 10 самых встречаемых записей (паролей) в файле. Способ представления записей в изначальной файле: построчечный.
Входные аргументы: путь до файла (file) и число ядер рабочей машины.
Вывод осуществляется как на стандартный вывод, так и в файл $file.XXXXXX директории ./res, лежащий в корневой директории программы.
Формат вывода:
номер рейтинга Частота(количество встречаемых совпадений) Запись
Структура файловой системы:
./
deps.h - собраны испольуемые зависимости, объявления структур, кодов ошибок, прототипов функций.
main.c - определены функции, осуществляющие предварительную сортировку строк входного файла, а также поиск наиболее часто встречаемых записей. С целью выполнения последней задачи используется priority queue, основанную на binary min-heap. Реализация предоставляется библиотекой Program Base Library (PBL). Данная модификация очереди позволяет достичь ~O(logN) сложности операций вставки и удаления записей.
makefile-makefile проекта, поддерживающий цели: all, clear, test. Последняя, соответственно, предназначена для запуска полного цикла тестов.
./queue
директория, включающая полный набор исходных файлов библиотеки PBL (http://www.mission-base.com/peter/source/pbl/doc/priorityQueue.html).
./res (может не существовать первоначально, тогда при проведении расчетов будет автоматически сгенерирован).
Директория, куда будут помещены все результаты проведенных расчетов. Исключением являеются тесты (после их проведения все выходные файлы будут удалены).
./tests/fills
Директория, содержащая набор bash-скриптов, обеспечивающих полный цикл проведения тестов.
chrg.sh - предназначен для генерации файлов случайными символами (из набора), варьируемой длины (также присутсвует random составляющая).
rtests.sh - обеспечивает генерацию файлов для "регулярных" тестов. Генерируемые файлы разделяются на состояющие только из чисел, латиницы и симвлоьных знаков.
ThreadsTest.sh - поддерживает весь цикл тестирования на устойчивость программы к различному числу потоков. Используемые файлы: сгeненрированные при помощи chrh.sh.
RegularTest.sh - поддерживает весь цикл проведения "регулярных" тестов. Используемые файлы: сгенерированные при помощи rtests.sh.
chreslt.sh - осуществляет проверку выполненных расчетов (отдельно для MergeSort и для поиска наиболее часто встречаемых записей). Также логирует возможные ошибки.
eval.sh - запускает исполняемый файл программы для проведения вычилений на переданных файлах
clean.sh - генерирует вспомогательные директории, либо очищает их содержимое (при их существовании).