#!/usr/bin/env php . */ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); $shortoptions = 'u:n:b:t:x:'; $longoptions = array('users=', 'notices=', 'subscriptions=', 'tags=', 'prefix='); $helptext = << sprintf('%s%d', $userprefix, $i), 'password' => sprintf('password%d', $i), 'fullname' => sprintf('Test User %d', $i))); if (!empty($user)) { $user->free(); } } function newNotice($i, $tagmax) { global $userprefix; $n = rand(0, $i - 1); $user = User::staticGet('nickname', sprintf('%s%d', $userprefix, $n)); $is_reply = rand(0, 4); $content = 'Test notice content'; if ($is_reply == 0) { $n = rand(0, $i - 1); $content = "@$userprefix$n " . $content; } $has_hash = rand(0, 2); if ($has_hash == 0) { $hashcount = rand(0, 2); for ($j = 0; $j < $hashcount; $j++) { $h = rand(0, $tagmax); $content .= " #tag{$h}"; } } $notice = Notice::saveNew($user->id, $content, 'system'); $user->free(); $notice->free(); } function newSub($i) { global $userprefix; $f = rand(0, $i - 1); $fromnick = sprintf('%s%d', $userprefix, $f); $from = User::staticGet('nickname', $fromnick); if (empty($from)) { throw new Exception("Can't find user '$fromnick'."); } $t = rand(0, $i - 1); if ($t == $f) { $t++; if ($t > $i - 1) { $t = 0; } } $tunic = sprintf('%s%d', $userprefix, $t); $to = User::staticGet('nickname', $tunic); if (empty($to)) { throw new Exception("Can't find user '$tunic'."); } subs_subscribe_to($from, $to); $from->free(); $to->free(); } function main($usercount, $noticeavg, $subsavg, $tagmax) { global $config; $config['site']['dupelimit'] = -1; $n = 1; newUser(0); // # registrations + # notices + # subs $events = $usercount + ($usercount * ($noticeavg + $subsavg)); for ($i = 0; $i < $events; $i++) { $e = rand(0, 1 + $noticeavg + $subsavg); if ($e == 0) { newUser($n); $n++; } else if ($e < $noticeavg + 1) { newNotice($n, $tagmax); } else { newSub($n); } } } $usercount = (have_option('u', 'users')) ? get_option_value('u', 'users') : 100; $noticeavg = (have_option('n', 'notices')) ? get_option_value('n', 'notices') : 100; $subsavg = (have_option('b', 'subscriptions')) ? get_option_value('b', 'subscriptions') : max($usercount/20, 10); $tagmax = (have_option('t', 'tags')) ? get_option_value('t', 'tags') : 10000; $userprefix = (have_option('x', 'prefix')) ? get_option_value('x', 'prefix') : 'testuser'; main($usercount, $noticeavg, $subsavg, $tagmax);