|
|
|
@ -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());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|