X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fcreatesim.php;h=e3677e1564bda25293619f7acb4b2299b61aefd7;hb=f6e929d61c8fc8e16f05f5ac9c0fe7d4289dbb0e;hp=f25890676e2d732463bc58bc7615bf372546f25f;hpb=4d61760154a53e39d1e0499d5fe7a4a586e7a9f0;p=quix0rs-gnu-social.git diff --git a/scripts/createsim.php b/scripts/createsim.php index f25890676e..e3677e1564 100644 --- a/scripts/createsim.php +++ b/scripts/createsim.php @@ -33,6 +33,7 @@ Creates a lot of test users and notices to (loosely) simulate a real server. -j --joins Number of groups per user (default 5) -t --tags Number of distinct hash tags (default 10000) -x --prefix User name prefix (default 'testuser') + -w --words Words file (default '/usr/share/dict/words') END_OF_CREATESIM_HELP; @@ -71,19 +72,18 @@ function newNotice($i, $tagmax) { global $userprefix; - $options = array('scope' => common_config('notice', 'defaultscope')); + $options = array('scope' => Notice::defaultScope()); $n = rand(0, $i - 1); $user = User::staticGet('nickname', sprintf('%s%d', $userprefix, $n)); $is_reply = rand(0, 1); - $content = 'Test notice content'; + $content = testNoticeContent(); if ($is_reply == 0) { - common_set_user($user); - $stream = new InboxNoticeStream($user); - $notices = $stream->getNotices(0, 20, null, null); + $stream = new InboxNoticeStream($user, $user->getProfile()); + $notices = $stream->getNotices(0, 20); if ($notices->N > 0) { $nval = rand(0, $notices->N - 1); $notices->fetch(); // go to 0th @@ -118,7 +118,7 @@ function newNotice($i, $tagmax) if ($in_group == 0) { $groups = $user->getGroups(); if ($groups->N > 0) { - $gval = rand(0, $group->N - 1); + $gval = rand(0, $groups->N - 1); $groups->fetch(); // go to 0th for ($i = 0; $i < $gval; $i++) { $groups->fetch(); @@ -207,21 +207,64 @@ function newJoin($u, $g) } } +function testNoticeContent() +{ + global $words; + + if (is_null($words)) { + return "test notice content"; + } + + $cnt = rand(3, 8); + + $ids = array_rand($words, $cnt); + + foreach ($ids as $id) { + $parts[] = $words[$id]; + } + + $text = implode(' ', $parts); + + if (mb_strlen($text) > 80) { + $text = substr($text, 0, 77) . "..."; + } + + return $text; +} + function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax) { global $config; $config['site']['dupelimit'] = -1; - $n = 1; - $g = 1; + $n = 0; + $g = 0; - newUser(0); - newGroup(0, $n); + // Make users first + + $preuser = min($usercount, 5); + + for ($j = 0; $j < $preuser; $j++) { + printfv("$i Creating user $n\n"); + newUser($n); + $n++; + } + + $pregroup = min($groupcount, 3); + + for ($k = 0; $k < $pregroup; $k++) { + printfv("$i Creating group $g\n"); + newGroup($g, $n); + $g++; + } // # registrations + # notices + # subs $events = $usercount + $groupcount + ($usercount * ($noticeavg + $subsavg + $joinsavg)); + $events -= $preuser; + $events -= $pregroup; + $ut = $usercount; $gt = $ut + $groupcount; $nt = $gt + ($usercount * $noticeavg); @@ -265,6 +308,13 @@ $joinsavg = (have_option('j', 'joins')) ? get_option_value('j', 'joins') : 5; $tagmax = (have_option('t', 'tags')) ? get_option_value('t', 'tags') : 10000; $userprefix = (have_option('x', 'prefix')) ? get_option_value('x', 'prefix') : 'testuser'; $groupprefix = (have_option('z', 'groupprefix')) ? get_option_value('z', 'groupprefix') : 'testgroup'; +$wordsfile = (have_option('w', 'words')) ? get_option_value('w', 'words') : '/usr/share/dict/words'; + +if (is_readable($wordsfile)) { + $words = file($wordsfile); +} else { + $words = null; +} try { main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax);