Сервис представляет собой REST API для сбора и анализа метеорологических данных. Ключевые возможности:
- Регистрация сенсоров с валидацией данных
- Сохранение измерений температуры и осадков
- Аналитика (история измерений, статистика дождливых дней
- Имитация работы датчиков через тестового клиента
- Сам сервис:
- Java 17+, Spring Boot 3.x
- Spring Web (REST controllers)
- Spring Data JPA + Hibernate
- СУБД: PostgreSQL
- Клиент:
- RestTemplate для HTTP-запросов
- Java Faker для генерации тестовых данных
- XChart для визуализации
Проект включает многоуровневое тестирование:
- Модульные тесты (JUnit 5 + Mockito):
- Тестирование сервисов и валидаторов
- Mocking репозиториев
- Интеграционные тесты:
- @DataJpaTest для репозиториев
- @WebMvcTest для контроллеров
- Тестирование сквозных сценариев
- Клиентское тестирование:
- Автоматическая отправка 1000+ запросов
- Проверка корректности ответов
- Валидация полученных данных
Пример теста контроллера:
@WebMvcTest(SensorController.class)
class SensorControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void registerSensor_ValidData_ReturnsOk() throws Exception {
mockMvc.perform(post("/sensors/registration")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"Test Sensor\"}"))
.andExpect(status().isOk());
}
}