Skip to content
Snippets Groups Projects

Create script for inserting dummy data into DB

Merged Marko Ivancic requested to merge fakes into main
1 file
+ 126
42
Compare changes
  • Side-by-side
  • Inline
+ 126
42
@@ -14,69 +14,153 @@ use SimpleSAML\Module\accounting\Services\Logger;
@@ -14,69 +14,153 @@ use SimpleSAML\Module\accounting\Services\Logger;
require 'vendor/autoload.php';
require 'vendor/autoload.php';
$helpersManager = new HelpersManager();
$helpersManager = new HelpersManager();
$logger = new Logger();
 
$configDir = __DIR__ . '/config';
 
putenv("SIMPLESAMLPHP_CONFIG_DIR=$configDir");
 
$moduleConfiguration = new ModuleConfiguration();
 
$sampleUsers = include 'sampleUsers.php';
 
$activityTracker = new ActivityTracker($moduleConfiguration, $logger);
 
$connectedServicesTracker = new ConnectedServicesTracker($moduleConfiguration, $logger);
$start = new DateTime();
$start = new DateTime();
$newLine = "\n";
$newLine = "\n";
echo "Start: " . $start->format(DateTime::ATOM);
echo "Start: " . $start->format(DateTime::ATOM);
echo $newLine;
echo $newLine;
$options = getopt('c:');
$options = getopt('c:o:a::');
$numberOfItems = $options['c'] ?? 1000;
$spMetadata = [];
echo 'Number of items: ' . $numberOfItems;
if (isset($options['c'])) {
echo $newLine;
$numberOfItems = max((int) $options['c'], 100);
 
doSampleUsers($numberOfItems, $spMetadata, $sampleUsers, $activityTracker, $connectedServicesTracker);
 
}
 
 
if (isset($options['o'])) {
 
$numberOfUsers = max((int) $options['o'], 100);
 
$numberOfAuthentications = (int) ($options['a'] ?? 1000);
 
doRandomUsers($numberOfUsers, $numberOfAuthentications, $spMetadata, $activityTracker, $connectedServicesTracker);
 
}
/**/
echo $newLine;
echo 'Starting ... ';
echo 'End: ' . (new DateTime())->format(DateTime::ATOM);
$startTime = new DateTime();
echo $startTime->format(DateTime::ATOM);
echo $newLine;
echo $newLine;
$logger = new Logger();
function doSampleUsers(
$configDir = __DIR__ . '/config';
int $numberOfAuthentications,
putenv("SIMPLESAMLPHP_CONFIG_DIR=$configDir");
array &$spMetadata,
$moduleConfiguration = new ModuleConfiguration();
$sampleUsers,
$durationInSeconds = (new DateTime())->getTimestamp() - $startTime->getTimestamp();
ActivityTracker $activityTracker,
$sampleUsers = include 'sampleUsers.php';
ConnectedServicesTracker $connectedServicesTracker
$activityTracker = new ActivityTracker($moduleConfiguration, $logger);
) {
$connectedServicesTracker = new ConnectedServicesTracker($moduleConfiguration, $logger);
echo "Doing $numberOfAuthentications authentications for sample users. \n";
 
 
if (count($spMetadata) < 100) {
 
$spMetadata[] = prepareSampleSpMetadata();
 
}
 
$happenedAt = new DateTimeImmutable('-12 months');
$spMetadata = [];
for ($i = 1; $i <= $numberOfAuthentications; $i++) {
$spMetadata[] = prepareSampleSpMetadata();
printSingleLine('Doing item ' . $i);
$happenedAt = new DateTimeImmutable('-6 months');
 
if ($i % ((int)($numberOfAuthentications / 100)) === 0) {
 
$happenedAt = $happenedAt->add(new DateInterval('P1D'));
 
if (count($spMetadata) < 100) {
 
$spMetadata[] = prepareSampleSpMetadata();
 
}
 
}
 
 
 
$event = prepareEvent(
 
Saml2::DESIGNATION,
 
$sampleUsers[array_rand($sampleUsers)],
 
$spMetadata[array_rand($spMetadata)],
 
$happenedAt
 
);
for ($i = 1; $i <= $numberOfItems; $i++) {
$activityTracker->process($event);
printSingleLine('Doing item ' . $i);
$connectedServicesTracker->process($event);
if ($i % ((int)($numberOfItems / 100)) === 0) {
$happenedAt = $happenedAt->add(new DateInterval('PT1H'));
$happenedAt = $happenedAt->add(new DateInterval('P1D'));
}
if (count($spMetadata) < 100) {
}
 
 
 
function doRandomUsers(
 
int $numberOfUsers,
 
int $numberOfAuthentications,
 
array $spMetadata,
 
ActivityTracker $activityTracker,
 
ConnectedServicesTracker $connectedServicesTracker
 
) {
 
echo "Doing $numberOfUsers random users with $numberOfAuthentications authentications.\n";
 
 
while (count($spMetadata) < 100) {
 
$spMetadata[] = prepareSampleSpMetadata();
 
}
 
 
for ($i = 0; $i < $numberOfUsers; $i++) {
 
$randomUser = prepareRandomUser();
 
 
if (count($spMetadata) < 500) {
$spMetadata[] = prepareSampleSpMetadata();
$spMetadata[] = prepareSampleSpMetadata();
}
}
}
$event = prepareEvent(
$startForUser = new DateTimeImmutable();
Saml2::DESIGNATION,
$sampleUsers[array_rand($sampleUsers)],
$happenedAt = new DateTimeImmutable('-12 months');
$spMetadata[array_rand($spMetadata)],
$happenedAt
for($j = 0; $j < $numberOfAuthentications; $j++) {
);
if ($numberOfAuthentications >= 500 && ($j % 500) === 0) {
 
versionUser($randomUser);
 
}
 
 
printSingleLine('Doing user ' . $i . ', authentication ' . $j);
 
 
if ($i % ((int)($numberOfAuthentications / 10)) === 0) {
 
$happenedAt = $happenedAt->add(new DateInterval('P1D'));
 
}
 
 
$event = prepareEvent(
 
Saml2::DESIGNATION,
 
$randomUser,
 
$spMetadata[array_rand($spMetadata)],
 
$happenedAt
 
);
$activityTracker->process($event);
$activityTracker->process($event);
$connectedServicesTracker->process($event);
$connectedServicesTracker->process($event);
$happenedAt = $happenedAt->add(new DateInterval('PT1H'));
$happenedAt = $happenedAt->add(new DateInterval('PT1H'));
 
}
 
echo "\n";
 
echo 'Done in ' . ((new DateTimeImmutable())->getTimestamp() - $startForUser->getTimestamp()) . " seconds.\n";
 
}
}
}
echo $newLine;
function prepareRandomUser(): array
echo 'End: ' . (new DateTime())->format(DateTime::ATOM);
{
echo $newLine;
$faker = Faker\Factory::create();
echo 'Duration in seconds: ' . $durationInSeconds;
$firstName = $faker->firstName();
echo $newLine;
$lastName = $faker->lastName();
 
$userName = strtolower(str_replace(' ', '', $firstName . '.' . $lastName));
 
 
return [
 
'uid' => [$userName],
 
'sn' => [$lastName],
 
'givenName' => [$firstName],
 
'mail' => [$userName . '@' . $faker->domainName()],
 
'hrEduPersonPersistentID' => [$faker->regexify('[A-Z0-9]{64}')],
 
];
 
}
 
 
function versionUser(array &$user): void
 
{
 
$faker = Faker\Factory::create();
 
// Simulate addition of another email address.
 
$user['mail'][] = $faker->email();
 
}
function printSingleLine(string $message): void
function printSingleLine(string $message): void
{
{
@@ -140,4 +224,4 @@ function prepareSampleSpMetadata(string $protocol = Saml2::DESIGNATION)
@@ -140,4 +224,4 @@ function prepareSampleSpMetadata(string $protocol = Saml2::DESIGNATION)
$rpMetadata['name'] = $faker->company();
$rpMetadata['name'] = $faker->company();
return $rpMetadata;
return $rpMetadata;
}
}
\ No newline at end of file
Loading