Skip to content

Commit

Permalink
✨ : add scheduled date to jobs
Browse files Browse the repository at this point in the history
Add the scheduled date to jobs (which may differ from start date).
This date is used to order the list of jobs in the stack page.

resolves #527
  • Loading branch information
juwit committed Jun 9, 2021
1 parent ef5235c commit 614fa6d
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 24 deletions.
1 change: 1 addition & 0 deletions src/main/java/io/gaia_app/stacks/bo/Job.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class Job {

private String id;
private String stackId;
private LocalDateTime scheduleTime = LocalDateTime.now();
private LocalDateTime startDateTime;
private LocalDateTime endDateTime;
private JobType type;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package io.gaia_app.stacks.controller

import io.gaia_app.stacks.bo.Job
import io.gaia_app.stacks.bo.JobStatus
import io.gaia_app.stacks.repository.JobRepository
import io.gaia_app.stacks.repository.StackRepository
import io.gaia_app.stacks.repository.StepRepository
import io.gaia_app.stacks.workflow.JobWorkflow
import org.springframework.http.HttpStatus
Expand All @@ -16,7 +14,7 @@ class JobRestController(
private val stepRepository: StepRepository) {

@GetMapping(params = ["stackId"])
fun jobs(@RequestParam stackId: String) = jobRepository.findAllByStackIdOrderByStartDateTimeDesc(stackId)
fun jobs(@RequestParam stackId: String) = jobRepository.findAllByStackIdOrderByScheduleTimeDesc(stackId)

@GetMapping("/{id}")
fun job(@PathVariable id: String): Job {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ import java.util.*
@Repository
interface JobRepository : MongoRepository<Job, String> {

fun findAllByStackIdOrderByStartDateTimeDesc(stackId: String): List<Job>
fun findAllByStackIdOrderByScheduleTimeDesc(stackId: String): List<Job>

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public StackCostCalculator(JobRepository jobRepository) {
* @return
*/
public BigDecimal calculateRunningCostEstimation(Stack stack){
var jobs = jobRepository.findAllByStackIdOrderByStartDateTimeDesc(stack.getId());
var jobs = jobRepository.findAllByStackIdOrderByScheduleTimeDesc(stack.getId());

if(jobs.isEmpty()){
return BigDecimal.ZERO;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
package io.gaia_app.stacks.controller

import io.gaia_app.modules.bo.TerraformModule
import io.gaia_app.stacks.bo.Job
import io.gaia_app.stacks.bo.JobStatus
import io.gaia_app.stacks.bo.Stack
import io.gaia_app.stacks.bo.Step
import io.gaia_app.stacks.repository.JobRepository
import io.gaia_app.stacks.repository.StackRepository
import io.gaia_app.stacks.repository.StepRepository
import io.gaia_app.stacks.workflow.JobWorkflow
import io.gaia_app.test.whenever
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.ArgumentCaptor.forClass
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.Mockito.*
import org.mockito.junit.jupiter.MockitoExtension
import java.util.*
import java.util.Optional.empty
import java.util.Optional.of

Expand All @@ -41,7 +35,7 @@ class JobRestControllerTest {
controller.jobs("stackId")

// then
verify(jobRepository).findAllByStackIdOrderByStartDateTimeDesc("stackId")
verify(jobRepository).findAllByStackIdOrderByScheduleTimeDesc("stackId")
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
package io.gaia_app.stacks.service;

import io.gaia_app.modules.bo.TerraformModule;
import io.gaia_app.modules.repository.TerraformModuleRepository;
import io.gaia_app.stacks.bo.Job;
import io.gaia_app.stacks.bo.JobStatus;
import io.gaia_app.stacks.bo.JobType;
import io.gaia_app.stacks.bo.Stack;
import io.gaia_app.stacks.repository.JobRepository;
import io.gaia_app.modules.bo.TerraformModule;
import io.gaia_app.stacks.bo.Job;
import io.gaia_app.stacks.bo.JobStatus;
import io.gaia_app.stacks.bo.JobType;
import io.gaia_app.stacks.bo.Stack;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
Expand All @@ -22,7 +16,6 @@
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;
Expand All @@ -42,7 +35,7 @@ void stacksWithNoJob_shouldHaveZeroCost() {
var stack = new Stack();
stack.setId("12");

when(jobRepository.findAllByStackIdOrderByStartDateTimeDesc("12")).thenReturn(Collections.EMPTY_LIST);
when(jobRepository.findAllByStackIdOrderByScheduleTimeDesc("12")).thenReturn(Collections.EMPTY_LIST);

// when
var cost = calculator.calculateRunningCostEstimation(stack);
Expand All @@ -67,7 +60,7 @@ void stacksWithOneRunJob_shouldHaveCostEqualToRunningTime() {
job.start();
job.end(JobStatus.APPLY_FINISHED);
job.setStartDateTime(LocalDateTime.now().minusDays(2));
when(jobRepository.findAllByStackIdOrderByStartDateTimeDesc("12")).thenReturn(List.of(job));
when(jobRepository.findAllByStackIdOrderByScheduleTimeDesc("12")).thenReturn(List.of(job));

// when
var cost = calculator.calculateRunningCostEstimation(stack);
Expand Down Expand Up @@ -100,7 +93,7 @@ void stacksWithOneRunJobAndOneStopJob_shouldHaveCostEqualToRunningTime() {
jobStop.end(JobStatus.APPLY_FINISHED);
jobStop.setStartDateTime(LocalDateTime.now().minusDays(1));

when(jobRepository.findAllByStackIdOrderByStartDateTimeDesc("12")).thenReturn(List.of(job, jobStop));
when(jobRepository.findAllByStackIdOrderByScheduleTimeDesc("12")).thenReturn(List.of(job, jobStop));

// when
var cost = calculator.calculateRunningCostEstimation(stack);
Expand Down Expand Up @@ -140,7 +133,7 @@ void stacksWithOneRunJobAndOneStopJobAndRelaunchedOneHourAgo_shouldHaveCostEqual
jobRelaunch.end(JobStatus.APPLY_FINISHED);
jobRelaunch.setStartDateTime(LocalDateTime.now().minusHours(1));

when(jobRepository.findAllByStackIdOrderByStartDateTimeDesc("12")).thenReturn(List.of(job, jobStop, jobRelaunch));
when(jobRepository.findAllByStackIdOrderByScheduleTimeDesc("12")).thenReturn(List.of(job, jobStop, jobRelaunch));

// when
var cost = calculator.calculateRunningCostEstimation(stack);
Expand All @@ -161,7 +154,7 @@ void stacksWithModuleHavingNoCost_shouldHaveZeroCost() {
job.start();
job.end(JobStatus.APPLY_FINISHED);
job.setStartDateTime(LocalDateTime.now().minusDays(2));
when(jobRepository.findAllByStackIdOrderByStartDateTimeDesc("12")).thenReturn(List.of(job));
when(jobRepository.findAllByStackIdOrderByScheduleTimeDesc("12")).thenReturn(List.of(job));

// but a module with no cost
var module = new TerraformModule();
Expand Down
2 changes: 2 additions & 0 deletions src/test/resources/db/40_job.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ gaia.job.insert([
{
"_id" : "32e4c316-287a-48ba-9c49-dd1b1a0204c8",
"stackId" : "de28a01f-257a-448d-8e1b-00e4e3a41db2",
"scheduleTime" : ISODate("2020-02-03T18:03:12.227Z"),
"startDateTime" : ISODate("2020-02-03T18:03:12.227Z"),
"endDateTime" : ISODate("2020-02-03T18:03:24.323Z"),
"type" : "RUN",
Expand Down Expand Up @@ -31,6 +32,7 @@ gaia.job.insert([
{
"_id" : "5e856dc7-6bed-465f-abf1-02980206ab2a",
"stackId" : "de28a01f-257a-448d-8e1b-00e4e3a41db2",
"scheduleTime" : ISODate("2020-02-05T07:01:30.875Z"),
"startDateTime" : ISODate("2020-02-05T07:01:30.875Z"),
"endDateTime" : ISODate("2020-02-05T07:02:18.625Z"),
"type" : "RUN",
Expand Down

0 comments on commit 614fa6d

Please sign in to comment.