diff --git a/src/main/java/ru/dragonestia/loadbalancer/config/TestConfig.java b/src/main/java/ru/dragonestia/loadbalancer/config/TestConfig.java new file mode 100644 index 0000000..79a0027 --- /dev/null +++ b/src/main/java/ru/dragonestia/loadbalancer/config/TestConfig.java @@ -0,0 +1,33 @@ +package ru.dragonestia.loadbalancer.config; + +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.lang.NonNull; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import ru.dragonestia.loadbalancer.interceptor.DebugInterceptor; +import ru.dragonestia.loadbalancer.model.Node; +import ru.dragonestia.loadbalancer.model.type.LoadBalancingMethod; +import ru.dragonestia.loadbalancer.repository.NodeRepository; + +@Profile("test") +@Configuration +@RequiredArgsConstructor +public class TestConfig implements WebMvcConfigurer { + + private final NodeRepository nodeRepository; + + @Override + public void addInterceptors(@NonNull InterceptorRegistry registry) { + registry.addInterceptor(new DebugInterceptor()); + } + + @Bean + void createNodes() { + nodeRepository.createNode(new Node("game-servers", LoadBalancingMethod.ROUND_ROBIN)); + nodeRepository.createNode(new Node("game-lobbies", LoadBalancingMethod.LEAST_PICKED)); + nodeRepository.createNode(new Node("hub", LoadBalancingMethod.SEQUENTIAL_FILLING)); + } +} diff --git a/src/main/java/ru/dragonestia/loadbalancer/interceptor/DebugInterceptor.java b/src/main/java/ru/dragonestia/loadbalancer/interceptor/DebugInterceptor.java new file mode 100644 index 0000000..1acbb1b --- /dev/null +++ b/src/main/java/ru/dragonestia/loadbalancer/interceptor/DebugInterceptor.java @@ -0,0 +1,24 @@ +package ru.dragonestia.loadbalancer.interceptor; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.log4j.Log4j2; +import org.springframework.lang.NonNull; +import org.springframework.web.servlet.HandlerInterceptor; + +import java.util.Arrays; + +@Log4j2(topic = "DEBUG INTERCEPTOR") +public class DebugInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) { + log.info("[" + request.getMethod() + "] " + request.getRequestURI()); + var map = request.getParameterMap(); + + for (String key : map.keySet()) { + log.info(" " + key + ": " + Arrays.toString(map.get(key))); + } + return true; + } +}