diff options
author | Marcel Klehr <mklehr@gmx.net> | 2023-06-30 13:19:38 +0200 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2023-08-09 10:01:23 +0200 |
commit | 09a8541d7438840aa70c5b4208206368bf4c2dc0 (patch) | |
tree | 183f11413b8c363a7269f3434523885e8f5a40af /tests | |
parent | e7179598c7193ef0437811bdcad6af61980b9c0f (diff) | |
download | nextcloud-server-09a8541d7438840aa70c5b4208206368bf4c2dc0.tar.gz nextcloud-server-09a8541d7438840aa70c5b4208206368bf4c2dc0.zip |
Add test for task cleanup
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
(cherry picked from commit c568c4a4640e79134eaa59625a546915bb706f28)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/LanguageModel/LanguageModelManagerTest.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/lib/LanguageModel/LanguageModelManagerTest.php b/tests/lib/LanguageModel/LanguageModelManagerTest.php index 39580fa3cb8..423eb525ba2 100644 --- a/tests/lib/LanguageModel/LanguageModelManagerTest.php +++ b/tests/lib/LanguageModel/LanguageModelManagerTest.php @@ -15,6 +15,7 @@ use OC\EventDispatcher\EventDispatcher; use OC\LanguageModel\Db\Task; use OC\LanguageModel\Db\TaskMapper; use OC\LanguageModel\LanguageModelManager; +use OC\LanguageModel\RemoveOldTasksBackgroundJob; use OC\LanguageModel\TaskBackgroundJob; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Utility\ITimeFactory; @@ -108,6 +109,8 @@ class LanguageModelManagerTest extends \Test\TestCase { $this->coordinator = $this->createMock(Coordinator::class); $this->coordinator->expects($this->any())->method('getRegistrationContext')->willReturn($this->registrationContext); + $this->currentTime = new \DateTimeImmutable('now'); + $this->taskMapper = $this->createMock(TaskMapper::class); $this->tasksDb = []; $this->taskMapper @@ -115,6 +118,7 @@ class LanguageModelManagerTest extends \Test\TestCase { ->method('insert') ->willReturnCallback(function (Task $task) { $task->setId(count($this->tasksDb) ? max(array_keys($this->tasksDb)) : 1); + $task->setLastUpdated($this->currentTime->getTimestamp()); $this->tasksDb[$task->getId()] = $task->toRow(); return $task; }); @@ -122,6 +126,7 @@ class LanguageModelManagerTest extends \Test\TestCase { ->expects($this->any()) ->method('update') ->willReturnCallback(function (Task $task) { + $task->setLastUpdated($this->currentTime->getTimestamp()); $this->tasksDb[$task->getId()] = $task->toRow(); return $task; }); @@ -134,6 +139,14 @@ class LanguageModelManagerTest extends \Test\TestCase { } return Task::fromRow($this->tasksDb[$id]); }); + $this->taskMapper + ->expects($this->any()) + ->method('deleteOlderThan') + ->willReturnCallback(function (int $timeout) { + $this->tasksDb = array_filter($this->tasksDb, function (array $task) use ($timeout) { + return $task['last_updated'] >= $this->currentTime->getTimestamp() - $timeout; + }); + }); $this->jobList = $this->createPartialMock(DummyJobList::class, ['add']); $this->jobList->expects($this->any())->method('add')->willReturnCallback(function () { @@ -336,4 +349,28 @@ class LanguageModelManagerTest extends \Test\TestCase { $this->assertNull($task3->getOutput()); $this->assertEquals(ILanguageModelTask::STATUS_FAILED, $task3->getStatus()); } + + public function testOldTasksShouldBeCleanedUp() { + $this->registrationContext->expects($this->any())->method('getLanguageModelProviders')->willReturn([ + new ServiceRegistration('test', TestVanillaLanguageModelProvider::class) + ]); + $this->assertCount(1, $this->languageModelManager->getAvailableTasks()); + $this->assertCount(1, $this->languageModelManager->getAvailableTaskTypes()); + $this->assertTrue($this->languageModelManager->hasProviders()); + $task = new FreePromptTask('Hello', 'test', null); + $this->assertEquals('Hello Free Prompt', $this->languageModelManager->runTask($task)); + + $this->currentTime = $this->currentTime->add(new \DateInterval('P1Y')); + // run background job + $bgJob = new RemoveOldTasksBackgroundJob( + \OC::$server->get(ITimeFactory::class), + $this->taskMapper, + \OC::$server->get(LoggerInterface::class), + ); + $bgJob->setArgument([]); + $bgJob->start($this->jobList); + + $this->expectException(NotFoundException::class); + $this->languageModelManager->getTask($task->getId()); + } } |