Эта программа для тестирования поискового робота случайным образом создает множество веб-страниц с перекрестными гиперссылками.
Алгоритм основан на цепочках Маркова и взят из книги «Практика программирования» Б. Кернигана и Р. Пайка. Для создания хеш-таблицы префиксов использовался алгоритм идеального хеширования из второго издания книги «Алгоритмы: построение и анализ» Т. Кормена.
Гиперссылки могут быть как внутренними (http://hostname/N.html
), так и внешними (http://servX.hostname/Y.html
) — в том случае, если для равномерного распределения нагрузки при тестировании поискового робота используется несколько машин.
Для сборки Crawler Test Bed необходимо установить пакет cmake. Все остальные компоненты, включая исправленную версию libevent-1.4.9, включены в дистрибутив.
Выполните следующие команды:
tar xvf testbed-xxxx-xx-xx.tar.bz2 cd testbed-xxxx-xx-xx cmake -DCMAKE_BUILD_TYPE=Release . make
Для хранения настроек программы используется файл gen.ini
. Доступны следующие параметры:
daemon_port | Привязка к конкретному порту HTTP-сервера. |
extern_links_probability | Вероятность того, что слово станет внешней ссылкой. Число из полуинтервала [0,1) . |
extern_links_prefix | Префикс для создания внешних ссылок. |
extern_links_suffix | Суффикс для создания внешних ссылок. |
extern_links_servers | Количество серверов для внешних ссылок. |
intern_links_probability | Вероятность того, что слово станет внутренней ссылкой. Число из интервала (0,1) .Например, если выставить 0.999, то почти все слова на странице станут ссылками. |
links_total | Максимальное количество ссылок на сервере. |
words_per_page | Максимальное количество слов на странице. |
worker_threads | Количество потоков. Рекомендуется указывать значение, соответствующее числу ядер. |
[generator] daemon_port=8083 words_per_page=500 intern_links_probability=0.1 extern_links_probability=0.02 ; serv0.testbed.local ; serv1.testbed.local extern_links_prefix=serv extern_links_suffix=.testbed.local extern_links_servers=2 links_total=10000000 worker_threads=2
Перед первым запуском программы необходимо создать директорию texts и разместить там текстовые файлы в кодировке UTF-8. Из них будут генерироваться страницы:
mkdir texts cp *.txt texts #заполняем директорию с текстами ./bin/testbed