use of com.automatak.dnp3.AnalogOutputInt32 in project solarnetwork-node by SolarNetwork.
the class OutstationServceTests method handleAnalogInt32WithTaskExecutor.
@Test
public void handleAnalogInt32WithTaskExecutor() throws InterruptedException {
// given
TestOutstationService service = createOutstationService();
CapturingExecutorService executor = new CapturingExecutorService(newSingleThreadExecutor());
service.setTaskExecutor(new TaskExecutorAdapter(executor));
final String controlId = "/foo/limiter";
ControlConfig cConfig = new ControlConfig(null, controlId, ControlType.Analog);
service.setControlConfigs(new ControlConfig[] { cConfig });
Capture<Instruction> instrCaptor = Capture.newInstance();
expect(instructionService.executeInstruction(capture(instrCaptor))).andAnswer(new IAnswer<InstructionStatus>() {
@Override
public InstructionStatus answer() throws Throwable {
return createStatus(instrCaptor.getValue(), Completed);
}
});
// when
replayAll();
AnalogOutputInt32 cmd = new AnalogOutputInt32(321456, CommandStatus.SUCCESS);
CommandStatus status = service.getCommandHandler().operateAOI32(cmd, 0, OperateType.DirectOperate);
// wait for bg task
executor.shutdown();
executor.awaitTermination(2, TimeUnit.SECONDS);
// then
assertThat("Command OK", status, equalTo(CommandStatus.SUCCESS));
Instruction instr = instrCaptor.getValue();
assertThat("Instruction", instr.getTopic(), equalTo(InstructionHandler.TOPIC_SET_CONTROL_PARAMETER));
assertThat("Control ID param", instr.getParameterValue(controlId), equalTo(String.valueOf(cmd.value)));
assertThat("Instruction handled in background", executor.getCapturedFutures(), hasSize(1));
}
use of com.automatak.dnp3.AnalogOutputInt32 in project solarnetwork-node by SolarNetwork.
the class OutstationServceTests method handleAnalogInt32.
@Test
public void handleAnalogInt32() {
// given
TestOutstationService service = createOutstationService();
final String controlId = "/foo/limiter";
ControlConfig cConfig = new ControlConfig(null, controlId, ControlType.Analog);
service.setControlConfigs(new ControlConfig[] { cConfig });
Capture<Instruction> instrCaptor = Capture.newInstance();
expect(instructionService.executeInstruction(capture(instrCaptor))).andAnswer(new IAnswer<InstructionStatus>() {
@Override
public InstructionStatus answer() throws Throwable {
return createStatus(instrCaptor.getValue(), Completed);
}
});
// when
replayAll();
AnalogOutputInt32 cmd = new AnalogOutputInt32(321456, CommandStatus.SUCCESS);
CommandStatus status = service.getCommandHandler().operateAOI32(cmd, 0, OperateType.DirectOperate);
// then
assertThat("Command OK", status, equalTo(CommandStatus.SUCCESS));
Instruction instr = instrCaptor.getValue();
assertThat("Instruction", instr.getTopic(), equalTo(InstructionHandler.TOPIC_SET_CONTROL_PARAMETER));
assertThat("Control ID param", instr.getParameterValue(controlId), equalTo(String.valueOf(cmd.value)));
}
Aggregations