ПафНутиЙ-Блог » Модули » DLE-Faker — модуль для заполнения БД тестовыми данными

DLE-Faker — модуль для заполнения БД тестовыми данными

31.10
20
4884
DLE-Faker — модуль для заполнения БД тестовыми данными


Зачастую при разработке нового модуля или функционала для DataLife Engine необходимы испытания на реальных или приближенных к реальным, данных. Вот в такие моменты и пригодится модуль DLE-Faker.


Назначение и особенности


Модуль предназначен для быстрого наполнения DLE-сайта тестовыми новостями в неограниченном количестве.
  • Лёгкий в использовании. Работает на основе php-класса faker.
  • Наполняет БД и структуру сайта приближенными к реальности, данными. Новости разного размера, с картинками, загруженными на сайт, вставленными в текст новостей.
  • Добавляет пользователей, при необходимоcти, и загружает для них аватарки на сайт.


Требования к установке


  • PHP: 5.3.3 и выше.
  • Версия DLE: 10.x и выше.


Установка




Использование


Вся работа с модулем сводится к настройке необходимых параметров формы.
DLE-Faker — модуль для заполнения БД тестовыми данными


В данный момент возможно настроить:
  • Количество генерируемых новостей.
  • Диапазон дат публикации.
  • Диапазон длины заголовка новости
  • Диапазон длины текста краткой и полной новости.
  • Количество, диапазон размеров и тематику картинок, добавляемых в новость.
  • Источник для автора новости (из БД или генерация нового автора).
  • Категорию новости.

Так же можно вывести распечатку массива с данными, добавляемыми в БД.

DLE-Faker — модуль для заполнения БД тестовыми данными


На этом пока всё, надеюсь модуль будет полезен не только мне. Жду ваших отзывов!

Похожие материалы

  • EditRating — модуль для лёгкого редактирования рейтинга в DataLife Engine
  • BlockPro — модуль профессионального вывода новостей для DLE
  • RSS Comments Pro модуль rss-ленты комментариев для DLE
  • Бета-тест модуля Block.Pro.4 (Завершен)
Закрыть

Комментировать могут только зарегистрированные пользователи

+

Комментарии

Gameer
Gameer 1 ноября 2015 01:44
Ответов: 1 #5222
Для меня ленивого - самое то. Ибо никогда не могу нормально заполнить, для каких-нибудь тестов, сайт.
ПафНутиЙ
ПафНутиЙ 1 ноября 2015 12:03
Ответов: 0 #5223
Аналогично.
Grizly
Grizly 7 ноября 2015 15:26
Ответов: 0 #5236
Спасибо очень полезная вещь.Теперь не придется тратить время на заполнение теста данными.
laidman
laidman 9 ноября 2015 05:00
Ответов: 1 #5237
Недостает только заполнения тегов.
А так отличный модуль.
ПафНутиЙ
ПафНутиЙ 9 ноября 2015 08:53
Ответов: 0 #5238
Это можно добавить. Создайте тиккет, что бы я не забыл об этом.
salam
salam 11 ноября 2015 08:40
Ответов: 0 #5240
Паша, модуль отличный!
Возможно ли сделать выравнивание картинки при добавлении фейков?
salam
salam 11 ноября 2015 09:04
Ответов: 0 #5241
И еще было бы не плохо иметь возможность назначить допполе для картинки
ПафНутиЙ
ПафНутиЙ 11 ноября 2015 21:29
Ответов: 2 #5243
Цитата: salam
Возможно ли сделать выравнивание картинки при добавлении фейков?

В этом смысла совсем не вижу, от того, что картинка будет выровнена по левому/правому краю не изменится ровным счётом ничего в плане тестирования нагрузки или иной проверки.

Цитата: salam
И еще было бы не плохо иметь возможность назначить допполе для картинки

Тут либо самостоятельно, либо создать тиккет что бы я не забыл реализовать в будущих версиях.
DimaTiunov
DimaTiunov 16 ноября 2015 10:10
Ответов: 1 #5248
Ого, да вы породили монстра. Вообще на основе этого легко сделать дорген, немного переделав класс фейк, естественно)
ПафНутиЙ
ПафНутиЙ 16 ноября 2015 11:17
Ответов: 0 #5249
Переделывать не нужно, можно просто расширить, добавив свой генератор картинок и текста)
Yamakasi
Yamakasi 25 ноября 2015 16:04
Ответов: 1 #5265
почему то не пашет на локалке пробую на 10,6
изначально запустил инсталер ругается на:
Notice: Undefined variable: config in \www\dle106\engine\api\api.class.php on line 628

Notice: Array to string conversion in \www\dle106\faker_install.php on line 202

Notice: Undefined variable: installForm in \www\dle106\faker_install.php on line 177


ну и после добавления хоть 1 новость, то выходит такое:
Fatal error: Uncaught exception 'Exception' with message 'SafeMySQL: Field 'xfields' doesn't have a default value. Full query: [INSERT INTO dle_post SET autor='admin', date='2015-10-27 21:16:43', title='Этим обед и вечер к полицеймейстеру, где с.', alt_name='etim-obed-i-vecher-k-policeymeysteru-gde-s', short_story='\"Этим
Изволь, едем, — сказал еще раз взглянул на него искоса, когда проходили они столовую: медведь! соверше� in \www\dle106\engine\modules\faker\classes\SafeMySQL.php on line 632
ПафНутиЙ
ПафНутиЙ 25 ноября 2015 19:42
Ответов: 0 #5266
Напишите тиккет: https://github.com/dle-modules/DLE-Faker/issues/new
не забудьте указать версию php
Yamakasi
Yamakasi 30 ноября 2015 19:42
Ответов: 0 #5271
ПафНутиЙ,
не пойму как ответить там)) скачивал там, также Вы указали на // $arFaker[$ii]['xfields'] = '';
она у меня как на примере у Вас, то есть закоментирована...
Yamakasi
Yamakasi 30 ноября 2015 19:43
Ответов: 0 #5272
ПафНутиЙ,
ой сори понял как ответить там))
Sander
Sander 28 мая 2016 12:57
Ответов: 1 #5518
Прикольная и полезная штука. Жаль, что при попытке создать 100000 постов он, мягко говоря, пришел в недоумение :)
Придется писать "конкурента" :(

PS. Еще неплохо бы создание категорий, пользователей и комментариев.
ПафНутиЙ
ПафНутиЙ 29 мая 2016 22:31
Ответов: 0 #5519
Зачем писать? Можно доработать существующий код, он открыт и готов принять в себя любые правки и дополнения :)
D0Gmatist2
D0Gmatist2 23 сентября 2016 09:32
Ответов: 0 #5642
Паша. Добавь ещё создание комментариев к посту с различными датами
D0Gmatist2
D0Gmatist2 23 сентября 2016 11:46
Ответов: 0 #5643
Код который позволяет сразу задать рейтинг
(+1/-1)

В файле engine\modules\faker\admin\main.php
После
$db->query("UPDATE " . USERPREFIX . "_users set news_num=news_num+1 where user_id='{$author['user_id']}'");


Дописать
		$vote_num = rand( 3, 40 );
		$rating_all = 0;
		$whereArray = array( "`name` != '{$author['name']}'" );
		$ratingArray = array( '-1', '1' );

		for ( $i = 1; $i <= $vote_num; $i++  ) {
			$where = implode( ' AND ', $whereArray );
			$userR = $db->super_query("SELECT `name` FROM " . USERPREFIX . "_users WHERE {$where} ORDER BY rand() LIMIT 1");
			$whereArray[] = "`name` != '{$userR['name']}'";

			$rating = $ratingArray[rand( 0, 1 )];
			$rating_all = $rating_all + $rating;

			$db->query("INSERT INTO " . PREFIX . "_logs ( `news_id`, `member`, `ip`, `rating` ) values ('{$curId}', '{$userR['name']}', '{$faker->ipv4}', '{$rating}')");

		}
		$db->query("UPDATE " . USERPREFIX . "_post_extras SET `rating` = '{$rating_all}', `vote_num` = '{$vote_num}' WHERE `news_id` = '{$curId}'");
D0Gmatist2
D0Gmatist2 23 сентября 2016 11:47
Ответов: 0 #5644
В дописываемом коде строчка
$vote_num = rand( 3, 40 );
это случайное число количества голосов от 3 до 40 можно изменить
D0Gmatist2
D0Gmatist2 23 сентября 2016 12:44
Ответов: 0 #5645
Так же в том же месте или сли сразу после кода описанного мною выше можно дописать добавление комментарий + рейтинг комментариев

		// -> COMMENTS
		$comm_num = rand( 10, 45 );
		for ( $i = 1; $i <= $comm_num; $i++  ) {
			$userC = $db->super_query("SELECT `email`, `name`, `user_id` FROM " . USERPREFIX . "_users ORDER BY rand() LIMIT 1");

			$dateC = $dateTime->format( 'Y-m-d H:i:s' );
			$textC = $faker->realText( rand( 50, 150 ) );
			$ipv4C = $faker->ipv4;

			$parent = 0;
			$parentR = rand( 0, 2 );
			if ( $parentR != 0 AND $i > 1 ) {
				$parentC = $db->super_query("SELECT `id` FROM " . PREFIX . "_comments WHERE `post_id` = '{$curId}' ORDER BY rand() LIMIT 1");
				$parent = ( ! $parentC['id'] ) ? 0 : $parentC['id'];

			}

			$db->query("INSERT INTO " . PREFIX . "_comments ( 
															`post_id`, 
															`user_id`, 
															`date`, 
															`autor`, 
															`email`, 
															`text`, 
															`ip`, 
															`is_register`, 
															`approve`, 
															`rating`, 
															`vote_num`, 
															`parent` 
																) values (
																	'{$curId}', 
																	'{$userC['user_id']}', 
																	'{$dateC}', 
																	'{$userC['name']}', 
																	'{$userC['email']}', 
																	'{$textC}', 
																	'{$ipv4C}', 
																	'1', 
																	'1', 
																	'0', 
																	'0', 
																	'{$parent}'  
																		)");

				$cID = $db->insert_id();

				// -> COMMENTS_RATING
				$vote_num = rand( 1, 50 );
				$rating_all = 0;
				$whereArray = array( "`name` != '{$userC['name']}'" );
				$ratingArray = array( '-1', '1' );

				for ( $i2 = 1; $i2 <= $vote_num; $i2++  ) {
					$where = implode( ' AND ', $whereArray );
					$userR = $db->super_query("SELECT `name` FROM " . USERPREFIX . "_users WHERE {$where} ORDER BY rand() LIMIT 1");
					$whereArray[] = "`name` != '{$userR['name']}'";

					$rating = $ratingArray[rand( 0, 1 )];
					$rating_all = $rating_all + $rating;

					$db->query("INSERT INTO " . PREFIX . "_comment_rating_log ( `c_id`, `member`, `ip`, `rating` ) values ('{$cID}', '{$userR['name']}', '{$faker->ipv4}', '{$rating}')");

				}
				$db->query("UPDATE " . PREFIX . "_comments SET `rating` = '{$rating_all}', `vote_num` = '{$vote_num}' WHERE `id` = '{$cID}'");
				// # COMMENTS_RATING

		}
		$db->query("UPDATE " . PREFIX . "_post SET `comm_num` = '{$comm_num}' WHERE `id` = '{$curId}'");

		$news_read = $comm_num + rand( 1000, 100000 );
		$db->query("UPDATE " . USERPREFIX . "_post_extras SET `news_read` = '{$news_read}' WHERE `news_id` = '{$curId}'");
		// # COMMENTS

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.