7
|
1 #!/usr/bin/env php
|
|
2 <?php
|
|
3
|
|
4 use Sabre\VObject;
|
|
5
|
|
6 if ($argc<2) {
|
|
7 $cmd = $argv[0];
|
|
8 fwrite(STDERR, <<<HI
|
|
9 Fruux test data generator
|
|
10
|
|
11 This script generates a lot of test data. This is used for profiling and stuff.
|
|
12 Currently it just generates events in a single calendar.
|
|
13
|
|
14 The iCalendar output goes to stdout. Other messages to stderr.
|
|
15
|
|
16 {$cmd} [events]
|
|
17
|
|
18
|
|
19 HI
|
|
20 );
|
|
21 die();
|
|
22 }
|
|
23
|
|
24 $events = 100;
|
|
25
|
|
26 if (isset($argv[1])) $events = (int)$argv[1];
|
|
27
|
|
28 include __DIR__ . '/../vendor/autoload.php';
|
|
29
|
|
30 fwrite(STDERR, "Generating " . $events . " events\n");
|
|
31
|
|
32 $currentDate = new DateTime('-' . round($events/2) . ' days');
|
|
33
|
|
34 $calendar = VObject\Component::create('VCALENDAR');
|
|
35 $calendar->version = '2.0';
|
|
36 $calendar->calscale = 'GREGORIAN';
|
|
37
|
|
38 $ii=0;
|
|
39
|
|
40 while($ii < $events) {
|
|
41
|
|
42 $ii++;
|
|
43
|
|
44 $event = VObject\Component::create('VEVENT');
|
|
45 $event->DTSTART = 'bla';
|
|
46 $event->SUMMARY = 'Event #' . $ii;
|
|
47 $event->UID = md5(microtime(true));
|
|
48
|
|
49 $doctorRandom = mt_rand(1,1000);
|
|
50
|
|
51 switch($doctorRandom) {
|
|
52 // All-day event
|
|
53 case 1 :
|
|
54 $event->DTEND = 'bla';
|
|
55 $dtStart = clone $currentDate;
|
|
56 $dtEnd = clone $currentDate;
|
|
57 $dtEnd->modify('+' . mt_rand(1,3) . ' days');
|
|
58 $event->DTSTART->setDateTime($dtStart, VObject\Property\DateTime::DATE);
|
|
59 $event->DTEND->setDateTime($dtEnd, VObject\Property\DateTime::DATE);
|
|
60 break;
|
|
61 case 2 :
|
|
62 $event->RRULE = 'FREQ=DAILY;COUNT=' . mt_rand(1,10);
|
|
63 // No break intentional
|
|
64 default :
|
|
65 $dtStart = clone $currentDate;
|
|
66 $dtStart->setTime(mt_rand(1,23), mt_rand(0,59), mt_rand(0,59));
|
|
67 $event->DTSTART->setDateTime($dtStart, VObject\Property\DateTime::UTC);
|
|
68 $event->DURATION = 'PT'.mt_rand(1,3).'H';
|
|
69 break;
|
|
70
|
|
71 }
|
|
72
|
|
73 $calendar->add($event);
|
|
74 $currentDate->modify('+ ' . mt_rand(0,3) . ' days');
|
|
75
|
|
76 }
|
|
77 fwrite(STDERR, "Validating\n");
|
|
78
|
|
79 $result = $calendar->validate();
|
|
80 if ($result) {
|
|
81 fwrite(STDERR, "Errors!\n");
|
|
82 fwrite(STDERR, print_r($result,true));
|
|
83 die(-1);
|
|
84 }
|
|
85
|
|
86 fwrite(STDERR, "Serializing this beast\n");
|
|
87
|
|
88 echo $calendar->serialize();
|
|
89
|
|
90 fwrite(STDERR, "done.\n");
|
|
91
|