Umfragen
stresstest.php
Go to the documentation of this file.
1 <?php
2 /*
3  * untitled.php
4  *
5  * Copyright 2013 Johannes ter Haak <jojo@jojo-42>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20  * MA 02110-1301, USA.
21  *
22  *
23  */
24 
27 
28 require_once("config.php");
29 require_once("inc/tools.php");
30 
31 require_once("inc/db.class.php");
32 require_once("inc/poll.class.php");
33 require_once("inc/widget.class.php");
34 require_once("inc/auth.class.php");
35 
36 $begin_time = time();
38 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque nulla ante, facilisis eget tincidunt at, euismod ut enim. Proin interdum accumsan vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris in lectus nibh, at facilisis felis. Cras auctor vehicula felis, quis posuere magna tincidunt quis. Nam dignissim volutpat lectus, in mollis felis imperdiet ut. Sed ac sem accumsan metus tincidunt viverra eu sed sem. Donec pretium sollicitudin tortor, nec rutrum nibh iaculis semper. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
39 Mauris euismod lectus vitae dui porta ac congue erat tincidunt. Nullam ultrices risus quis lectus eleifend vitae congue magna commodo. Ut auctor mauris non leo condimentum vel pretium lorem ullamcorper. Maecenas eget lacus tellus, et sollicitudin nisl. Vestibulum eleifend semper nisl, eget dictum lorem convallis vel. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque pretium orci non neque auctor sit amet hendrerit libero iaculis. Donec congue, nulla ut placerat aliquet, magna eros pretium odio, et scelerisque lectus sapien vel augue. Cras molestie rhoncus lorem sit amet viverra. Pellentesque scelerisque, mi vitae rutrum consectetur, nisl ligula auctor nulla, vitae viverra velit quam ut risus. Phasellus quis massa nibh, in sodales enim. Phasellus faucibus magna a neque imperdiet condimentum.
40 Proin id justo non neque pulvinar dictum. Sed eu enim nibh, mattis egestas massa. Mauris porta justo non nulla egestas vel scelerisque nunc commodo. Ut vitae magna eros. Integer bibendum leo id arcu laoreet pharetra. Duis adipiscing magna in arcu pellentesque vel tempus diam porta. Donec ut erat non tortor dapibus scelerisque. Vestibulum lacinia eros at turpis malesuada elementum. Etiam id enim sed dui faucibus fringilla sit amet ac libero. Sed eget leo ut lorem consequat rutrum. Nam dictum quam eu libero ornare a imperdiet lorem mollis.
41 Aenean lorem orci, posuere ut suscipit nec, auctor vel turpis. Pellentesque pharetra, diam lacinia blandit venenatis, mauris magna bibendum mauris, non malesuada nibh quam in ipsum. In et libero ut tellus ultricies gravida eget a urna. In lorem enim, pretium non molestie sed, aliquet eget lectus. Integer id magna augue, in interdum dolor. Suspendisse scelerisque nunc sed sapien lobortis porttitor in id odio. Curabitur rutrum sapien sit amet ligula aliquam convallis. Nullam sem libero, aliquam in porttitor ut, molestie et risus. Ut enim lacus, iaculis accumsan cursus ac, porta et urna. Ut eget sem a sapien vulputate pretium.
42 Mauris et nunc ligula. Nunc sit amet eros magna, quis malesuada dui. Aenean posuere pharetra ante et rhoncus. Sed molestie blandit justo, ut malesuada nisl tristique nec. Proin mattis felis ac quam commodo sodales. Nulla eu nunc ipsum, tempor volutpat ligula. Suspendisse id molestie risus. Duis tempus nunc et lectus imperdiet nec egestas odio malesuada. Curabitur et luctus sapien. Vivamus at lobortis elit. Praesent auctor facilisis elit, ac ultrices lorem rutrum ut. Etiam nisi turpis, condimentum vel egestas non, euismod in ante.
43 ";
44 
45 $lipsum_array = explode("\n",$lipsum);
46 $tmp = array();
47 foreach($lipsum_array as $par){
48  if($par != ""){
49  $tmp[] = $par;
50  }
51 }
53 unset($tmp);
54 //var_dump($lipsum);
55 $tmp = str_replace("\n"," ",$lipsum);
56 $lipsum_words = explode(" ",$tmp);
57 
58 function RandString($length = 10) {
59  $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
60  $string = "";
61  for ($p = 0; $p < $length; $p++) {
62  $string .= $characters[mt_rand(0, strlen($characters)-1)];
63  }
64  return $string;
65 }
66 
67 function RandString2($length = 10) {
68  $characters = '0123456789abcdefghijklmnopqrstuvwxyz ';
69  $string = "";
70  for ($p = 0; $p < $length; $p++) {
71  $string .= $characters[mt_rand(0, strlen($characters)-1)];
72  }
73  return $string;
74 }
75 
76 function RandWords($wordcount = 5){
77  global $lipsum_words;
78  $out = "";
79  for( $c = 0 ; $c<$wordcount ; ++$c){
80  $out .= $lipsum_words[ mt_rand(0,sizeof($lipsum_words)-1) ]." ";
81  }
82  return $out;
83 }
84 
85 function RandTime($max=2000000000){
86  $now = time();
87  if( ($max > 2000000000) OR ($max < $now) ){ // 2033
88  $max = 2000000000;
89  }
90  return mt_rand($now,$max);
91 }
92 
93 function RandRadioButtonList($pollID){
94  $widget = new radioButtonList();
95  $widget->pollID = $pollID;
96  $widget->dispName = RandString(20);
97  return $widget;
98 }
99 
101  $optcount = mt_rand(3,7);
102  for( $i=0 ; $i<$optcount ; ++$i ){
103  $opt = new radioButton();
104  $opt->dispName = RandWords();
105  $opt->value = $opt->dispName;
106  $widget->insert_option(-1,$opt);
107  }
108 }
109 
110 function RandText(){
111  $widget = new text();
112  $widget->dispName = RandWords(8);
113  return $widget;
114 }
115 
116 function RandMatrix($pollID){
117  $widget = new Matrix();
118  $widget->pollID = $pollID;
119  $widget->set_dispName("-");
120  return $widget;
121 }
122 
124  for( $i=1; $i<=rand(4,10) ; ++$i ){
125  $ques = new matrixQuestion();
126  $ques->dispName = RandString(20);
127  $widget->insert_question(-1,$ques);
128  }
129 }
130 
132  for( $i=1 ; $i<=mt_rand(3,6);++$i ){
133  $opt = new matrixOption();
134  $opt->value = RandString(10);
135  $opt->dispName = "";
136  $widget->insert_option(-1,$opt);
137  }
138 }
139 
140 function RandSeparator($pollID){
141  $colors = array(
142  '#000000',
143  '#eeeeec','#d3d7cf','#babdb6',
144  '#888a85','#555753','#2e3436',
145  '#fce94f','#edd400','#c4a000',
146  '#fcaf3e','#f57900','#ce5c00',
147  '#e9b96e','#c17d11','#8f5902',
148  '#8ae234','#73d216','#4e9a06',
149  '#729fcf','#3465a4','#204a87',
150  '#ad7fa8','#75507b','#5c3566',
151  '#ef2929','#cc0000','#a40000' );
152  $sizes = array("1","2","2.5","3","3.5");
153  $widget = new line();
154  $widget->dispName = "-";
155  $widget->name = "-";
156  $widget->pollID = $pollID;
157  $type = array("hr","space");
158  $t = $type[mt_rand(0,1)];
159  if( $t == "hr" ){
160  $widget->set_value( $colors[ mt_rand(0,sizeof($colors)-1) ] ,"hr");
161  }else{
162  $widget->set_value($sizes[ mt_rand(0,sizeof($sizes)-1) ],"space");
163  }
164  return $widget;
165 
166 }
167 
168 $db= new db( DB_USER, DB_PASS, DB_DATABASE, DB_HOST );
170 
171 $groups = $au->get_all_groups();
172 $all_groups = array();
173 foreach($groups as $gr){
174  $all_groups[] = $gr[1];
175 }
176 
177 $users = $au->get_all_users_from_grouplist($all_groups);
178 $c = 1;
180 foreach( $users as $user ){
181  $utime = time();
182  $m = sizeof($users);
183  for( $i=1 ; $i<=$polls_per_user ; ++$i ){
184  $poll = new poll();
185  $poll->set_name( RandWords(7) );
186  $poll->owner = $user["userID"];
187  $poll->owner_fn = $user["fullName"];
188  $poll->type = POLLTYPE_SIMPLE;
189  $poll->noDisplay = false;
190  $anon = mt_rand(0,2);
191  if( $anon == 0 ){
192  $poll->anonymous = false;
193  $poll->is_public = false;
194  }else if ($anon == 1){
195  $poll->anonymous = true;
196  $poll->is_public = false;
197  }else if ($anon == 2){
198  $poll->anonymous = true;
199  $poll->is_public = true;
200  }
201  $db->insert_poll($poll);
202  ++$pollcount;
203 
204  $intro = new label();
205  $intro->value = "<p>".$lipsum_array[ mt_rand(0,sizeof($lipsum_array)-1) ]."</p>";
206  $intro->pollID = $poll->ID;
207  $intro->name='-';
208  $intro->dispName='Text';
209  $poll->insert_widget(-1,$intro);
210  $db->insert_widget($intro,POLLTYPE_SIMPLE);
211 
212  for( $i2=1 ; $i2 <= $widgets_per_poll-1 ; ++$i2 ){
213  $type = rand(0,3);
214  //$type = 3;
215  if( $type == 0 ){
216  $widget = RandRadioButtonList($poll->ID);
217  }else if( $type == 1){
218  $widget = RandMatrix($poll->ID);
219  }else if($type == 2){
220  $widget = RandText($poll->ID);
221  }else if($type == 3){
222  $widget = RandSeparator($poll->ID);
223  }
224 
225  if( isset($widget) ){
226  $poll->insert_widget(-1,$widget);
227  $db->insert_widget($widget,POLLTYPE_SIMPLE);
228  if( $widget instanceof radioButtonList ){
230  foreach( $widget->option_list as $opt){
231  $db->insert_widget($opt,POLLTYPE_SIMPLE);
232  }
233  }else if($widget instanceof matrix){
235  foreach( $widget->option_list as $opt){
236  $db->insert_widget($opt,POLLTYPE_SIMPLE);
237  }
239  foreach( $widget->question_list as $opt){
240  $db->insert_widget($opt,POLLTYPE_SIMPLE);
241  }
242  } // end if matrix of rb
243  if( ($widget instanceof matrix) OR ($widget instanceof radioButtonList) ){
244  $widget->set_config("showCharts", (bool) mt_rand(0,3) );
245  $widget->save_config($db);
246  }
247 
248  } // end if isset widget
249  } // end for widgets
250 
251  $poll->timeout = date("Y-m-d H:i:s",RandTime()); //YYYY-MM-DD HH:MM:SS
252  $poll->save_timeout($db);
253 
254  $classes = $all_groups;
255  $classes[] = "*";
256  $max = mt_rand(1,sizeof($all_groups));
257  for($i3=1;$i3<=$max;++$i3){
258  $poll->groups[] = $classes[ mt_rand(0,sizeof($classes)-1) ];
259  }
260  $poll->save_groups($db);
261 
263  $s = $status[ mt_rand(0,sizeof($status)-1) ];
264  $poll->set_status($db,$s);
265 
266  }
267  $s = time()-$utime;
268  echo "User $c of $m ({$user["fullName"]}) in {$s}s".PHP_EOL;
269  ++$c;
270 }
271 
273 echo PHP_EOL.PHP_EOL."$pollcount polls inserted in {$used}s".PHP_EOL;
274 
275 
276 ?>
277