<table><tr><td style="">TallFurryMan created this revision.<br />TallFurryMan added reviewers: mutlaqja, wreissenberger.<br />Herald added a project: KDE Edu.<br />Herald added a subscriber: kde-edu.<br />TallFurryMan requested review of this revision.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D18041">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>In KStars 3.0, Scheduler jobs are checked against each other to produce the final plan and detect scheduling issues (compared to pre 3.0 which schedules jobs independently first).<br />
In KStars prior to 3.0, when a Scheduler job was set to start at a specific date, the implementation considered the evaluation of that job could simply be bypassed.<br />
Unfortunately, the specific bypass of fixed-startup jobs remained in 3.0 and caused those jobs to avoid the verification sequence and disappear from the list of jobs to be processed.<br />
This differential fixes this behavior.</p>

<p>This differential also fixes the update of the score of these jobs in the job table, which was not updated for fixed-startup jobs.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Warning: it now appears that fixed-startup jobs completely slipped through the integration tests of KStars 3.0.</p>

<p>Note that a fixed-startup job is non-movable:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">a fixed-startup job will fail if overlapping another fixed-startup job that is earlier in the schedule list.</li>
<li class="remarkup-list-item">a non fixed-startup job will fail if overlapping a fixed-startup job, earlier or later in the schedule list.</li>
</ul>

<p>Create and test execution of schedules with basic enforcement tests:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">a single fixed-startup job starting in the past: it must end up invalid.</li>
<li class="remarkup-list-item">a single fixed-startup job starting in the future during the day, with twilight enforcement: it must end up invalid.</li>
<li class="remarkup-list-item">a single fixed-startup job starting in the future when the target is lower than 15 degrees, with altitude enforcement: it must end up invalid.</li>
<li class="remarkup-list-item">a single fixed-startup job starting in the future when the Moon is close, with Moon separation enforcement: it must end up invalid.</li>
<li class="remarkup-list-item">a single fixed-startup job that is acceptable: it must end up schedule, and be retained for execution when starting the Scheduler.</li>
</ul>

<p>Then create and test execution of schedules using fixed-startup and non fixed-startup jobs (we consider the lead time is configured so that estimation of the duration of jobs is large enough not to cause issues):</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">a single fixed-startup job, followed by a start-asap job: the second job must start after the first job completes, lead time included.</li>
<li class="remarkup-list-item">two fixed-startup jobs starting at the same time: the second job must end up invalid.</li>
<li class="remarkup-list-item">a fixed-startup job followed by a second fixed-startup job starting before the completion of the first: the second job must end up invalid.</li>
<li class="remarkup-list-item">a start-asap job followed by a fixed-startup job: depending on its completion time vs the fixed-startup job, the start-asap job must end up invalid or scheduled (the fixed-startup job must remain scheduled!)</li>
<li class="remarkup-list-item">two fixed-startup jobs, plus a start-asap job in-between: depending on its completion time vs the second fixed-startup job, the middle start-asap job must end up invalid or scheduled (the second fixed-startup job must remain scheduled!).</li>
</ul>

<p>In all situations described, the current score must be adequate and not remain to zero (when applicable).</p>

<p>Observe as invalid jobs are automatically moved to the end of the queue. This is somewhat not very user friendly.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R321 KStars</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D18041">https://phabricator.kde.org/D18041</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>kstars/ekos/scheduler/scheduler.cpp</div></div></div><br /><div><strong>To: </strong>TallFurryMan, mutlaqja, wreissenberger<br /><strong>Cc: </strong>kde-edu, narvaez, apol<br /></div>