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