Search in sources :

Example 1 with AnalogOutputInt32

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));
}
Also used : ControlConfig(net.solarnetwork.node.io.dnp3.domain.ControlConfig) InstructionStatus(net.solarnetwork.node.reactor.InstructionStatus) AnalogOutputInt32(com.automatak.dnp3.AnalogOutputInt32) CapturingExecutorService(net.solarnetwork.node.test.CapturingExecutorService) Instruction(net.solarnetwork.node.reactor.Instruction) TaskExecutorAdapter(org.springframework.core.task.support.TaskExecutorAdapter) CommandStatus(com.automatak.dnp3.enums.CommandStatus) Test(org.junit.Test)

Example 2 with AnalogOutputInt32

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)));
}
Also used : ControlConfig(net.solarnetwork.node.io.dnp3.domain.ControlConfig) InstructionStatus(net.solarnetwork.node.reactor.InstructionStatus) AnalogOutputInt32(com.automatak.dnp3.AnalogOutputInt32) CommandStatus(com.automatak.dnp3.enums.CommandStatus) Instruction(net.solarnetwork.node.reactor.Instruction) Test(org.junit.Test)

Aggregations

AnalogOutputInt32 (com.automatak.dnp3.AnalogOutputInt32)2 CommandStatus (com.automatak.dnp3.enums.CommandStatus)2 ControlConfig (net.solarnetwork.node.io.dnp3.domain.ControlConfig)2 Instruction (net.solarnetwork.node.reactor.Instruction)2 InstructionStatus (net.solarnetwork.node.reactor.InstructionStatus)2 Test (org.junit.Test)2 CapturingExecutorService (net.solarnetwork.node.test.CapturingExecutorService)1 TaskExecutorAdapter (org.springframework.core.task.support.TaskExecutorAdapter)1