Skip to content
Snippets Groups Projects
Commit a54db9f2 authored by Marko Ivancic's avatar Marko Ivancic
Browse files

WIP

parent 414c81d5
No related branches found
No related tags found
1 merge request!10Create script for inserting dummy data into DB
Pipeline #82016 passed
This commit is part of merge request !10. Comments created here will be created in the context of that merge request.
...@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment