argv) < 3) { $this->usage(); exit(1); } $this->contextId = (int) $argv[1]; $this->dateStart = $argv[2]; $this->dateEnd = $argv[3]; } /** * Print command usage information. */ public function usage() { echo "Generate fake usage data in the metrics table.\n" . "Usage: {$this->scriptName} [contextId] [dateStart] [dateEnd]\n" . "contextId The context to add metrics for.\n" . "dateStart Add metrics after this date. YYYY-MM-DD\n" . "dateEnd Add metrics after this date. YYYY-MM-DD\n"; } /** * Generate test metrics */ public function execute() { $submissionIds = $this->getPublishedSubmissionIds(); $currentDate = new DateTime($this->dateStart); $endDate = new DateTime($this->dateEnd); $endDateTimeStamp = $endDate->getTimestamp(); $count = 0; while ($currentDate->getTimestamp() < $endDateTimeStamp) { foreach ($submissionIds as $submissionId) { DB::table('metrics_submission')->insert([ 'load_id' => 'test_events_' . $currentDate->format('Ymd'), 'context_id' => $this->contextId, 'submission_id' => $submissionId, 'assoc_type' => Application::ASSOC_TYPE_SUBMISSION, 'date' => $currentDate->format('Y-m-d'), 'metric' => random_int(1, 10), ]); $count++; } $currentDate->add(new DateInterval('P1D')); } echo $count . ' records added for ' . count($submissionIds) . " submissions.\n"; } /** * Get an array of all published submission IDs in the database */ public function getPublishedSubmissionIds() { return Repo::submission() ->getCollector() ->filterByContextIds([$this->contextId]) ->filterByStatus([Submission::STATUS_PUBLISHED]) ->getIds(); } } $tool = new generateTestMetrics($argv ?? []); $tool->execute();