X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fcreatesim.php;h=e5b47df6dee7daf09c13f59de2c74ab82197c470;hb=d6b28c64830f632bb2f4b6f3c9369b9e56ad217a;hp=21ed38fd56341d76fde20bc0449ff128397eceb0;hpb=59043dca7fb6f974b11797c4d0f20e5b78b0611d;p=quix0rs-gnu-social.git diff --git a/scripts/createsim.php b/scripts/createsim.php old mode 100644 new mode 100755 index 21ed38fd56..e5b47df6de --- a/scripts/createsim.php +++ b/scripts/createsim.php @@ -30,7 +30,8 @@ $longoptions = array( 'users=', 'words=', 'prefix=', - 'groupprefix' + 'groupprefix=', +// 'faves=', ); $helptext = << sprintf('%s%d', $groupprefix, $i), 'local' => true, @@ -85,65 +86,98 @@ function newNotice($i, $tagmax) $options = array('scope' => Notice::defaultScope()); - $n = rand(0, $i - 1); - $user = User::staticGet('nickname', sprintf('%s%d', $userprefix, $n)); + $n = mt_rand(0, $i - 1); + $user = User::getKV('nickname', sprintf('%s%d', $userprefix, $n)); - $is_reply = rand(0, 1); + $is_reply = mt_rand(0, 1); $content = testNoticeContent(); if ($is_reply == 0) { - $stream = new InboxNoticeStream($user, $user->getProfile()); + $stream = new InboxNoticeStream($user->getProfile(), $user->getProfile()); $notices = $stream->getNotices(0, 20); if ($notices->N > 0) { - $nval = rand(0, $notices->N - 1); + $nval = mt_rand(0, $notices->N - 1); $notices->fetch(); // go to 0th for ($i = 0; $i < $nval; $i++) { $notices->fetch(); } $options['reply_to'] = $notices->id; - $dont_use_nickname = rand(0, 2); + $dont_use_nickname = mt_rand(0, 2); if ($dont_use_nickname != 0) { $rprofile = $notices->getProfile(); $content = "@".$rprofile->nickname." ".$content; } - $private_to_addressees = rand(0, 4); + $private_to_addressees = mt_rand(0, 4); if ($private_to_addressees == 0) { $options['scope'] |= Notice::ADDRESSEE_SCOPE; } } + } else { + $is_directed = mt_rand(0, 4); + + if ($is_directed == 0) { + $subs = $user->getSubscribed(0, 100)->fetchAll(); + if (count($subs) > 0) { + $seen = array(); + $f = mt_rand(0, 9); + if ($f <= 6) { + $addrs = 1; + } else if ($f <= 8) { + $addrs = 2; + } else { + $addrs = 3; + } + for ($m = 0; $m < $addrs; $m++) { + $x = mt_rand(0, count($subs) - 1); + if ($seen[$x]) { + continue; + } + if ($subs[$x]->id == $user->id) { + continue; + } + $seen[$x] = true; + $rprofile = $subs[$x]; + $content = "@".$rprofile->nickname." ".$content; + } + $private_to_addressees = mt_rand(0, 4); + if ($private_to_addressees == 0) { + $options['scope'] |= Notice::ADDRESSEE_SCOPE; + } + } + } } - $has_hash = rand(0, 2); + $has_hash = mt_rand(0, 2); if ($has_hash == 0) { - $hashcount = rand(0, 2); + $hashcount = mt_rand(0, 2); for ($j = 0; $j < $hashcount; $j++) { - $h = rand(0, $tagmax); + $h = mt_rand(0, $tagmax); $content .= " #tag{$h}"; } } - $in_group = rand(0, 5); + $in_group = mt_rand(0, 5); if ($in_group == 0) { $groups = $user->getGroups(); - if ($groups->N > 0) { - $gval = rand(0, $groups->N - 1); + if ($groups instanceof User_group) { + $gval = mt_rand(0, $groups->N - 1); $groups->fetch(); // go to 0th for ($i = 0; $i < $gval; $i++) { $groups->fetch(); } $options['groups'] = array($groups->id); $content = "!".$groups->nickname." ".$content; - $private_to_group = rand(0, 2); + $private_to_group = mt_rand(0, 2); if ($private_to_group == 0) { $options['scope'] |= Notice::GROUP_SCOPE; } } } - $private_to_site = rand(0, 4); + $private_to_site = mt_rand(0, 4); if ($private_to_site == 0) { $options['scope'] |= Notice::SITE_SCOPE; @@ -152,20 +186,43 @@ function newNotice($i, $tagmax) $notice = Notice::saveNew($user->id, $content, 'createsim', $options); } +/* Plugins should be part of the simulation too! +function newMessage($i) +{ + global $userprefix; + + $n = mt_rand(0, $i - 1); + $user = User::getKV('nickname', sprintf('%s%d', $userprefix, $n)); + + $content = testNoticeContent(); + + $friends = $user->mutuallySubscribedUsers()->fetchAll(); + + if (count($friends) == 0) { + return; + } + + $j = mt_rand(0, count($friends) - 1); + + $other = $friends[$j]; + + $message = Message::saveNew($user->id, $other->id, $content, 'createsim'); +}*/ + function newSub($i) { global $userprefix; - $f = rand(0, $i - 1); + $f = mt_rand(0, $i - 1); $fromnick = sprintf('%s%d', $userprefix, $f); - $from = User::staticGet('nickname', $fromnick); + $from = User::getKV('nickname', $fromnick); if (empty($from)) { throw new Exception("Can't find user '$fromnick'."); } - $t = rand(0, $i - 1); + $t = mt_rand(0, $i - 1); if ($t == $f) { $t++; @@ -176,13 +233,13 @@ function newSub($i) $tunic = sprintf('%s%d', $userprefix, $t); - $to = User::staticGet('nickname', $tunic); + $to = User::getKV('nickname', $tunic); - if (empty($to)) { + if (!($to instanceof User)) { throw new Exception("Can't find user '$tunic'."); } - subs_subscribe_to($from, $to); + Subscription::start($from->getProfile(), $to->getProfile()); $from->free(); $to->free(); @@ -193,21 +250,21 @@ function newJoin($u, $g) global $userprefix; global $groupprefix; - $userNumber = rand(0, $u - 1); + $userNumber = mt_rand(0, $u - 1); $userNick = sprintf('%s%d', $userprefix, $userNumber); - $user = User::staticGet('nickname', $userNick); + $user = User::getKV('nickname', $userNick); if (empty($user)) { throw new Exception("Can't find user '$fromnick'."); } - $groupNumber = rand(0, $g - 1); + $groupNumber = mt_rand(0, $g - 1); $groupNick = sprintf('%s%d', $groupprefix, $groupNumber); - $group = User_group::staticGet('nickname', $groupNick); + $group = User_group::getKV('nickname', $groupNick); if (empty($group)) { throw new Exception("Can't find group '$groupNick'."); @@ -218,6 +275,51 @@ function newJoin($u, $g) } } +/* Plugins should be part of the simulation too! +function newFave($u) +{ + global $userprefix; + global $groupprefix; + + $userNumber = mt_rand(0, $u - 1); + + $userNick = sprintf('%s%d', $userprefix, $userNumber); + + $user = User::getKV('nickname', $userNick); + + if (empty($user)) { + throw new Exception("Can't find user '$userNick'."); + } + + // NB: it's OK to like your own stuff! + + $otherNumber = mt_rand(0, $u - 1); + + $otherNick = sprintf('%s%d', $userprefix, $otherNumber); + + $other = User::getKV('nickname', $otherNick); + + if (empty($other)) { + throw new Exception("Can't find user '$otherNick'."); + } + + $notices = $other->getNotices()->fetchAll(); + + if (count($notices) == 0) { + return; + } + + $idx = mt_rand(0, count($notices) - 1); + + $notice = $notices[$idx]; + + if ($user->hasFave($notice)) { + return; + } + + Fave::addNew($user->getProfile(), $notice); +}*/ + function testNoticeContent() { global $words; @@ -226,7 +328,7 @@ function testNoticeContent() return "test notice content"; } - $cnt = rand(3, 8); + $cnt = mt_rand(3, 8); $ids = array_rand($words, $cnt); @@ -243,6 +345,7 @@ function testNoticeContent() return $text; } +//function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $favesavg, $messageavg, $tagmax) function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax) { global $config; @@ -271,6 +374,7 @@ function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax) // # registrations + # notices + # subs + //$events = $usercount + $groupcount + ($usercount * ($noticeavg + $subsavg + $joinsavg + $favesavg + $messageavg)); $events = $usercount + $groupcount + ($usercount * ($noticeavg + $subsavg + $joinsavg)); $events -= $preuser; @@ -281,12 +385,15 @@ function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax) $nt = $gt + ($usercount * $noticeavg); $st = $nt + ($usercount * $subsavg); $jt = $st + ($usercount * $joinsavg); +// $ft = $jt + ($usercount * $favesavg); +// $mt = $ft + ($usercount * $messageavg); +// printfv("$events events ($ut, $gt, $nt, $st, $jt, $ft, $mt)\n"); printfv("$events events ($ut, $gt, $nt, $st, $jt)\n"); for ($i = 0; $i < $events; $i++) { - $e = rand(0, $events); + $e = mt_rand(0, $events); if ($e >= 0 && $e <= $ut) { printfv("$i Creating user $n\n"); @@ -305,6 +412,12 @@ function main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax) } else if ($e > $st && $e <= $jt) { printfv("$i Making a new group join\n"); newJoin($n, $g); +/* } else if ($e > $jt && $e <= $ft) { + printfv("$i Making a new fave\n"); + newFave($n);*/ +/* } else if ($e > $ft && $e <= $mt) { + printfv("$i Making a new message\n"); + newMessage($n);*/ } else { printfv("No event for $i!"); } @@ -318,6 +431,8 @@ $groupcount = (have_option('g', 'groups')) ? get_option_value('g', 'groups') : $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); $joinsavg = (have_option('j', 'joins')) ? get_option_value('j', 'joins') : 5; +//$favesavg = (have_option('f', 'faves')) ? get_option_value('f', 'faves') : max($noticeavg/10, 5); +//$messageavg = (have_option('m', 'messages')) ? get_option_value('m', 'messages') : max($noticeavg/10, 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'; @@ -334,6 +449,7 @@ if (is_readable($wordsfile)) { } try { + //main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $favesavg, $messageavg, $tagmax); main($usercount, $groupcount, $noticeavg, $subsavg, $joinsavg, $tagmax); } catch (Exception $e) { printfv("Got an exception: ".$e->getMessage());