Skip to content

Package: AbstractCommandApplication$Result

AbstractCommandApplication$Result

nameinstructionbranchcomplexitylinemethod
AbstractCommandApplication.Result(String, String, int, boolean)
M: 21 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 8 C: 0
0%
M: 1 C: 0
0%
getReturnCode()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getStandardError()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getStandardOutput()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
isTimeout()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2017, 2022 Red Hat Inc and others
3: *
4: * This program and the accompanying materials are made
5: * available under the terms of the Eclipse Public License 2.0
6: * which is available at https://www.eclipse.org/legal/epl-2.0/
7: *
8: * SPDX-License-Identifier: EPL-2.0
9: *
10: * Contributors:
11: * Red Hat Inc - initial API and implementation
12: *******************************************************************************/
13: package org.eclipse.kapua.kura.simulator.app.command;
14:
15: import org.eclipse.kapua.kura.simulator.app.AbstractDefaultApplication;
16: import org.eclipse.kapua.kura.simulator.app.Request;
17: import org.eclipse.kapua.kura.simulator.payload.Metrics;
18:
19: import java.util.HashMap;
20: import java.util.Map;
21: import java.util.Objects;
22:
23: public abstract class AbstractCommandApplication extends AbstractDefaultApplication {
24:
25: public static class Result {
26:
27: private final String standardOutput;
28: private final String standardError;
29: private final int returnCode;
30: private final boolean timeout;
31:
32: public Result(final String standardOutput, final String standardError, final int returnCode,
33: final boolean timeout) {
34: Objects.requireNonNull(standardOutput);
35: Objects.requireNonNull(standardError);
36:
37: this.standardOutput = standardOutput;
38: this.standardError = standardError;
39: this.returnCode = returnCode;
40: this.timeout = timeout;
41: }
42:
43: public String getStandardOutput() {
44: return standardOutput;
45: }
46:
47: public String getStandardError() {
48: return standardError;
49: }
50:
51: public int getReturnCode() {
52: return returnCode;
53: }
54:
55: public boolean isTimeout() {
56: return timeout;
57: }
58: }
59:
60: public abstract Result executeCommand(String command);
61:
62: public AbstractCommandApplication() {
63: super("CMD-V1");
64: }
65:
66: @Override
67: protected void processRequest(final Request request) {
68: if (!"EXEC/command".equals(request.getMessage().getTopic().render(0, 2))) {
69: request.replyNotFound();
70: return;
71: }
72:
73: final String command = Metrics.getAsString(request.getMetrics(), "command.command");
74:
75: final Result resultValue = executeCommand(command);
76: if (resultValue == null) {
77: throw new IllegalStateException("Failed to execute command");
78: }
79:
80: final Map<String, Object> result = new HashMap<>();
81: result.put("command.stdout", resultValue.getStandardOutput());
82: result.put("command.stderr", resultValue.getStandardError());
83: result.put("command.exit.code", resultValue.getReturnCode());
84: result.put("command.timedout", resultValue.isTimeout());
85: request.replySuccess().send(result);
86: }
87:
88: }