package com.zy.core.thread.impl.station;
|
|
import com.alibaba.fastjson.JSON;
|
import com.core.common.SpringUtils;
|
import com.zy.asrs.entity.DeviceConfig;
|
import com.zy.common.utils.RedisUtil;
|
import com.zy.core.enums.RedisKeyType;
|
import com.zy.core.model.CommandResponse;
|
import com.zy.core.model.command.StationCommand;
|
import com.zy.core.move.StationMoveCoordinator;
|
import com.zy.core.move.StationMoveSessionRegistry;
|
import com.zy.core.move.StationMoveSession;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import java.util.function.Function;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
class StationSegmentExecutorTest {
|
|
@Test
|
void sendSegmentWithRetry_skipsWhenRouteIsCancelPending() {
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
StationMoveCoordinator coordinator = new StationMoveCoordinator();
|
StationMoveSessionRegistry sessionRegistry = new StationMoveSessionRegistry();
|
RedisUtil redisUtil = mock(RedisUtil.class);
|
@SuppressWarnings("unchecked")
|
Function<StationCommand, CommandResponse> commandSender = mock(Function.class);
|
|
ReflectionTestUtils.setField(coordinator, "sessionRegistry", sessionRegistry);
|
ReflectionTestUtils.setField(coordinator, "redisUtil", redisUtil);
|
ReflectionTestUtils.setField(sessionRegistry, "redisUtil", redisUtil);
|
when(applicationContext.getBean(StationMoveCoordinator.class)).thenReturn(coordinator);
|
SpringUtils.init(applicationContext);
|
|
StationSegmentExecutor executor = new StationSegmentExecutor(new DeviceConfig(), redisUtil, commandSender);
|
|
StationCommand command = new StationCommand();
|
command.setTaskNo(10492);
|
command.setStationId(186);
|
command.setTargetStaNo(124);
|
command.setRouteVersion(23);
|
|
StationMoveSession session = new StationMoveSession();
|
session.setTaskNo(10492);
|
session.setRouteVersion(23);
|
session.setStatus(StationMoveSession.STATUS_CANCEL_PENDING);
|
|
when(redisUtil.get(RedisKeyType.STATION_MOVE_SESSION_.key + 10492))
|
.thenReturn(JSON.toJSONString(session));
|
when(redisUtil.get(RedisKeyType.DEVICE_STATION_MOVE_RESET.key + 10492)).thenReturn(null);
|
when(commandSender.apply(any())).thenReturn(new CommandResponse(true));
|
|
Boolean result = ReflectionTestUtils.invokeMethod(
|
executor,
|
"sendSegmentWithRetry",
|
command,
|
null,
|
null,
|
186
|
);
|
|
assertFalse(Boolean.TRUE.equals(result));
|
verify(commandSender, never()).apply(any());
|
}
|
}
|