Skip to content

Commit ad266e4

Browse files
authored
fix(684): remove failing preview_visits cleanup and add test for Prev… (#685)
1 parent 17ce3d5 commit ad266e4

File tree

3 files changed

+73
-17
lines changed

3 files changed

+73
-17
lines changed

src/main/java/com/dedicatedcode/reitti/controller/api/ingestion/gpslogger/GPSLoggerIngestionApiController.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,9 @@
33
import com.dedicatedcode.reitti.controller.api.ingestion.owntracks.OwntracksFriendResponse;
44
import com.dedicatedcode.reitti.dto.LocationPoint;
55
import com.dedicatedcode.reitti.dto.OwntracksLocationRequest;
6-
import com.dedicatedcode.reitti.dto.ReittiRemoteInfo;
7-
import com.dedicatedcode.reitti.model.geo.RawLocationPoint;
8-
import com.dedicatedcode.reitti.model.integration.ReittiIntegration;
96
import com.dedicatedcode.reitti.model.security.User;
10-
import com.dedicatedcode.reitti.model.security.UserSharing;
11-
import com.dedicatedcode.reitti.repository.RawLocationPointJdbcService;
127
import com.dedicatedcode.reitti.repository.UserJdbcService;
13-
import com.dedicatedcode.reitti.repository.UserSharingJdbcService;
14-
import com.dedicatedcode.reitti.service.AvatarService;
158
import com.dedicatedcode.reitti.service.LocationBatchingService;
16-
import com.dedicatedcode.reitti.service.RequestFailedException;
17-
import com.dedicatedcode.reitti.service.RequestTemporaryFailedException;
18-
import com.dedicatedcode.reitti.service.integration.ReittiIntegrationService;
199
import org.slf4j.Logger;
2010
import org.slf4j.LoggerFactory;
2111
import org.springframework.http.HttpStatus;
@@ -29,8 +19,9 @@
2919
import org.springframework.web.bind.annotation.RequestMapping;
3020
import org.springframework.web.bind.annotation.RestController;
3121

32-
import java.time.Instant;
33-
import java.util.*;
22+
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.Map;
3425

3526
@RestController
3627
@RequestMapping("/api/v1/ingest")
@@ -46,14 +37,14 @@ public GPSLoggerIngestionApiController(UserJdbcService userJdbcService,
4637
}
4738

4839
@PostMapping("/gpslogger")
49-
public ResponseEntity<?> receiveOwntracksData(@RequestBody OwntracksLocationRequest request) {
40+
public ResponseEntity<?> receiveData(@RequestBody OwntracksLocationRequest request) {
5041
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
5142
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
5243
User user = this.userJdbcService.findByUsername(userDetails.getUsername()).orElseThrow(() -> new UsernameNotFoundException(userDetails.getUsername()));
5344

5445
try {
5546
if (!request.isLocationUpdate()) {
56-
logger.debug("Ignoring non-location Owntracks message of type: {}", request.getType());
47+
logger.debug("Ignoring non-location GpsLogger message of type: {}", request.getType());
5748
// Return empty array for non-location messages
5849
return ResponseEntity.ok(new ArrayList<OwntracksFriendResponse>());
5950
}
@@ -68,7 +59,7 @@ public ResponseEntity<?> receiveOwntracksData(@RequestBody OwntracksLocationRequ
6859
}
6960

7061
this.locationBatchingService.addLocationPoint(user, locationPoint);
71-
logger.debug("Successfully received and queued Owntracks location point for user {}",
62+
logger.debug("Successfully received and queued GpsLogger location point for user {}",
7263
user.getUsername());
7364

7465
return ResponseEntity.ok(Collections.emptyList());

src/main/java/com/dedicatedcode/reitti/service/PreviewCleanupJob.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@ public void cleanUp() {
2727
int params = this.jdbcTemplate.update("DELETE FROM preview_visit_detection_parameters WHERE preview_created_at < ?", lastDay);
2828
int trips = this.jdbcTemplate.update("DELETE FROM preview_trips WHERE preview_created_at < ?", lastDay);
2929
int processedVisits = this.jdbcTemplate.update("DELETE FROM preview_processed_visits WHERE preview_created_at < ?", lastDay);
30-
int visits = this.jdbcTemplate.update("DELETE FROM preview_visits WHERE preview_created_at < ?", lastDay);
3130
int places = this.jdbcTemplate.update("DELETE FROM preview_significant_places WHERE preview_created_at < ?", lastDay);
3231
int points = this.jdbcTemplate.update("DELETE FROM preview_raw_location_points WHERE preview_created_at < ?", lastDay);
33-
log.debug("Preview data cleanup finished in [{}] ms with [{}] records", System.currentTimeMillis() - start, params + trips + processedVisits + visits + places + points);
32+
log.debug("Preview data cleanup finished in [{}] ms with [{}] records", System.currentTimeMillis() - start, params + trips + processedVisits + places + points);
3433
}
3534
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.dedicatedcode.reitti.service;
2+
3+
import com.dedicatedcode.reitti.IntegrationTest;
4+
import com.dedicatedcode.reitti.TestingService;
5+
import com.dedicatedcode.reitti.model.processing.DetectionParameter;
6+
import com.dedicatedcode.reitti.model.processing.RecalculationState;
7+
import com.dedicatedcode.reitti.model.security.User;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Test;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.jdbc.core.JdbcTemplate;
12+
13+
import java.sql.Timestamp;
14+
import java.time.Instant;
15+
import java.util.UUID;
16+
17+
import static org.junit.jupiter.api.Assertions.*;
18+
19+
@IntegrationTest
20+
class PreviewCleanupJobTest {
21+
22+
@Autowired
23+
private PreviewCleanupJob previewCleanupJob;
24+
25+
@Autowired
26+
private JdbcTemplate jdbcTemplate;
27+
28+
@Autowired
29+
private VisitDetectionPreviewService visitDetectionPreviewService;
30+
31+
@Autowired
32+
private TestingService testingService;
33+
34+
private User user;
35+
36+
@BeforeEach
37+
void setUp() {
38+
this.user = testingService.randomUser();
39+
}
40+
41+
@Test
42+
void shouldRunCleanUpJob() {
43+
Instant now = Instant.now();
44+
DetectionParameter config = new DetectionParameter(null,
45+
new DetectionParameter.VisitDetection(100, 100),
46+
new DetectionParameter.VisitMerging(1, 100, 100),
47+
new DetectionParameter.LocationDensity(50.0, 100),
48+
now,
49+
RecalculationState.NEEDED);
50+
String previewId = this.visitDetectionPreviewService.startPreview(user, config, now);
51+
52+
this.jdbcTemplate.update("UPDATE preview_significant_places SET preview_created_at = ? WHERE preview_id = ?", Timestamp.from(now.minusSeconds(259200)), previewId);
53+
this.jdbcTemplate.update("UPDATE preview_raw_location_points SET preview_created_at = ? WHERE preview_id = ?", Timestamp.from(now.minusSeconds(259200)), previewId);
54+
this.jdbcTemplate.update("UPDATE preview_processed_visits SET preview_created_at = ? WHERE preview_id = ?", Timestamp.from(now.minusSeconds(259200)), previewId);
55+
this.jdbcTemplate.update("UPDATE preview_trips SET preview_created_at = ? WHERE preview_id = ?", Timestamp.from(now.minusSeconds(259200)), previewId);
56+
this.jdbcTemplate.update("UPDATE preview_visit_detection_parameters SET preview_created_at = ? WHERE preview_id = ?", Timestamp.from(now.minusSeconds(259200)), previewId);
57+
58+
this.previewCleanupJob.cleanUp();
59+
60+
assertEquals(0, jdbcTemplate.queryForObject("SELECT COUNT(*) FROM preview_processed_visits WHERE preview_id = ?", Integer.class, previewId));
61+
assertEquals(0, jdbcTemplate.queryForObject("SELECT COUNT(*) FROM preview_raw_location_points WHERE preview_id = ?", Integer.class, previewId));
62+
assertEquals(0, jdbcTemplate.queryForObject("SELECT COUNT(*) FROM preview_significant_places WHERE preview_id = ?", Integer.class, previewId));
63+
assertEquals(0, jdbcTemplate.queryForObject("SELECT COUNT(*) FROM preview_trips WHERE preview_id = ?", Integer.class, previewId));
64+
assertEquals(0, jdbcTemplate.queryForObject("SELECT COUNT(*) FROM preview_visit_detection_parameters WHERE preview_id = ?", Integer.class, previewId));
65+
}
66+
}

0 commit comments

Comments
 (0)