Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getRunInterval example
return
false;
}
private
function
calculateNextExecutionTime
(
ScheduledTaskEntity
$taskEntity
)
: \DateTimeImmutable
{
$now
=
new
\
DateTimeImmutable
(
)
;
$nextExecutionTimeString
=
$taskEntity
->
getNextExecutionTime
(
)
->
format
(
Defaults::STORAGE_DATE_TIME_FORMAT
)
;
$nextExecutionTime
=
new
\
DateTimeImmutable
(
$nextExecutionTimeString
)
;
$newNextExecutionTime
=
$nextExecutionTime
->
modify
(
sprintf
(
'+%d seconds',
$taskEntity
->
getRunInterval
(
)
)
)
;
if
(
$newNextExecutionTime
<
$now
)
{
return
$now
;
}
return
$newNextExecutionTime
;
}
private
function
insertTask
(
ScheduledTask
$task
)
: void
{
$validTask
=
$task
->
shouldRun
(
$this
->parameterBag
)
;
$registry
=
$this
->
getContainer
(
)
->
get
(
TaskRegistry::
class
)
;
$registry
->
registerTasks
(
)
;
$scheduledTaskRepository
=
$this
->
getContainer
(
)
->
get
(
'scheduled_task.repository'
)
;
$criteria
=
new
Criteria
(
)
;
$criteria
->
addFilter
(
new
EqualsFilter
(
'name', LogCleanupTask::
getTaskName
(
)
)
)
;
/** @var ScheduledTaskEntity|null $task */
$task
=
$scheduledTaskRepository
->
search
(
$criteria
, Context::
createDefaultContext
(
)
)
->
first
(
)
;
static
::
assertNotNull
(
$task
)
;
static
::
assertSame
(
LogCleanupTask::
getDefaultInterval
(
)
,
$task
->
getRunInterval
(
)
)
;
}
/** * @param list<string> $expectedMessages */
private
function
runWithOptions
(
int
$age
, int
$maxEntries
, array
$expectedMessages
)
: void
{
$this
->systemConfigService->
set
(
'core.logging.entryLifetimeSeconds',
$age
)
;
$this
->systemConfigService->
set
(
'core.logging.entryLimit',
$maxEntries
)
;
$this
->
writeLogs
(
)
;
'scheduledTaskClass' => 'test',
'runInterval' => 1,
'status' => ScheduledTaskDefinition::STATUS_SCHEDULED,
]
,
]
, Context::
createDefaultContext
(
)
)
;
$criteria
=
new
Criteria
(
[
$id
]
)
;
$result
=
$repository
->
search
(
$criteria
, Context::
createDefaultContext
(
)
)
;
static
::
assertCount
(
1,
$result
->
getEntities
(
)
)
;
$task
=
$result
->
getEntities
(
)
->
first
(
)
;
static
::
assertInstanceOf
(
ScheduledTaskEntity::
class
,
$task
)
;
static
::
assertEquals
(
1,
$task
->
getRunInterval
(
)
)
;
static
::
assertEquals
(
1,
$task
->
getDefaultRunInterval
(
)
)
;
}
public
function
testSnippetWriteWithoutValueFieldThrowsWriteValidationError
(
)
: void
{
$snippetRepo
=
$this
->
createRepository
(
SnippetDefinition::
class
)
;
$snippetSetId
=
$this
->
getSnippetSetIdForLocale
(
'en-GB'
)
;
static
::
expectException
(
WriteException::
class
)
;
$snippetRepo
->
create
(
[
[
'status' => ScheduledTaskDefinition::STATUS_FAILED,
]
,
]
, Context::
createDefaultContext
(
)
)
;
}
protected
function
rescheduleTask
(
ScheduledTask
$task
, ScheduledTaskEntity
$taskEntity
)
: void
{
$now
=
new
\
DateTimeImmutable
(
)
;
$nextExecutionTimeString
=
$taskEntity
->
getNextExecutionTime
(
)
->
format
(
Defaults::STORAGE_DATE_TIME_FORMAT
)
;
$nextExecutionTime
=
new
\
DateTimeImmutable
(
$nextExecutionTimeString
)
;
$newNextExecutionTime
=
$nextExecutionTime
->
modify
(
sprintf
(
'+%d seconds',
$taskEntity
->
getRunInterval
(
)
)
)
;
if
(
$newNextExecutionTime
<
$now
)
{
$newNextExecutionTime
=
$now
;
}
$this
->scheduledTaskRepository->
update
(
[
[
'id' =>
$task
->
getTaskId
(
)
,
'status' => ScheduledTaskDefinition::STATUS_SCHEDULED,
'lastExecutionTime' =>
$now
,
'nextExecutionTime' =>
$newNextExecutionTime
,
]
,
->
addAggregation
(
new
MinAggregation
(
'runInterval', 'runInterval'
)
)
;
return
$criteria
;
}
private
function
calculateNextExecutionTime
(
ScheduledTaskEntity
$taskEntity
)
: \DateTimeImmutable
{
$now
=
new
\
DateTimeImmutable
(
)
;
$nextExecutionTimeString
=
$taskEntity
->
getNextExecutionTime
(
)
->
format
(
Defaults::STORAGE_DATE_TIME_FORMAT
)
;
$nextExecutionTime
=
new
\
DateTimeImmutable
(
$nextExecutionTimeString
)
;
$newNextExecutionTime
=
$nextExecutionTime
->
modify
(
sprintf
(
'+%d seconds',
$taskEntity
->
getRunInterval
(
)
)
)
;
return
$newNextExecutionTime
<
$now
?
$now
:
$newNextExecutionTime
;
}
}
$entities
=
$this
->taskRegistry->
getAllTasks
(
Context::
createDefaultContext
(
)
)
;
$table
=
new
Table
(
$output
)
;
$table
->
setHeaders
(
[
'Name', 'Next execution', 'Last execution', 'Run interval', 'Status'
]
)
;
/** @var ScheduledTaskEntity $entity */
foreach
(
$entities
as
$entity
)
{
$table
->
addRow
(
[
$entity
->
getName
(
)
,
$entity
->
getNextExecutionTime
(
)
->
format
(
\DATE_ATOM
)
,
$entity
->
getLastExecutionTime
(
)
?
$entity
->
getLastExecutionTime
(
)
->
format
(
\DATE_ATOM
)
: '-',
$entity
->
getRunInterval
(
)
,
$entity
->
getStatus
(
)
,
]
)
;
}
$table
->
render
(
)
;
return
self::SUCCESS;
}
}
$connection
->
executeStatement
(
'DELETE FROM scheduled_task'
)
;
$this
->registry->
registerTasks
(
)
;
$tasks
=
$this
->scheduledTaskRepo->
search
(
new
Criteria
(
)
, Context::
createDefaultContext
(
)
)
->
getEntities
(
)
;
static
::
assertCount
(
1,
$tasks
)
;
/** @var ScheduledTaskEntity $task */
$task
=
$tasks
->
first
(
)
;
static
::
assertInstanceOf
(
ScheduledTaskEntity::
class
,
$task
)
;
static
::
assertEquals
(
TestTask::
class
,
$task
->
getScheduledTaskClass
(
)
)
;
static
::
assertEquals
(
TestTask::
getDefaultInterval
(
)
,
$task
->
getRunInterval
(
)
)
;
static
::
assertEquals
(
TestTask::
getTaskName
(
)
,
$task
->
getName
(
)
)
;
static
::
assertEquals
(
ScheduledTaskDefinition::STATUS_SCHEDULED,
$task
->
getStatus
(
)
)
;
}
public
function
testUpdatesRunIntervalOnAlreadyRegisteredTaskWhenRunIntervalMatchesDefault
(
)
: void
{
$connection
=
$this
->
getContainer
(
)
->
get
(
Connection::
class
)
;
$connection
->
executeStatement
(
'DELETE FROM scheduled_task'
)
;
$this
->scheduledTaskRepo->
create
(
[
[