[
https://issues.apache.org/jira/browse/BROOKLYN-547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16240819#comment-16240819
]
ASF GitHub Bot commented on BROOKLYN-547:
-----------------------------------------
Github user duncangrant commented on a diff in the pull request:
https://github.com/apache/brooklyn-server/pull/881#discussion_r149190906
--- Diff:
software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java
---
@@ -294,4 +309,63 @@ public void
testCmdNotInheritedFromParentOfSoftwareProcess() throws Exception {
assertExecHasOnlyOnce(RecordingSshTool.getExecCmds(),
"preInstallCommand");
assertExecHasOnlyOnce(RecordingSshTool.getExecCmds(),
"launchCommand");
}
+
+ @Test
+ public void testUseSshMonitoringDisabled() throws Exception {
+ // Setup a custom health-check that returns true after launch is
called,
+ // and false after stop is called.
+ final AtomicBoolean customHealth = new AtomicBoolean(false);
+
+ RecordingSshTool.setCustomResponse(".*launchCommand.*", new
CustomResponseGenerator() {
+ @Override public CustomResponse generate(ExecParams
execParams) throws Exception {
+ customHealth.set(true);
+ return new CustomResponse(0, "", "");
+ }});
+ RecordingSshTool.setCustomResponse(".*stopCommand.*", new
CustomResponseGenerator() {
+ @Override public CustomResponse generate(ExecParams
execParams) throws Exception {
+ customHealth.set(false);
+ return new CustomResponse(0, "", "");
+ }});
+
+ // The entity polls for the custom-health; it populates the
service-up-indicators using that.
+ VanillaSoftwareProcess entity =
app.createAndManageChild(EntitySpec.create(VanillaSoftwareProcess.class)
+ .configure(VanillaSoftwareProcess.USE_SSH_MONITORING,
false)
+
.configure(VanillaSoftwareProcess.SERVICE_PROCESS_IS_RUNNING_POLL_PERIOD,
Duration.ONE_MILLISECOND)
+ .configure(VanillaSoftwareProcess.LAUNCH_COMMAND,
"launchCommand")
+ .configure(VanillaSoftwareProcess.CHECK_RUNNING_COMMAND,
"checkRunningCommand")
+ .configure(VanillaSoftwareProcess.STOP_COMMAND,
"stopCommand")
+ .addInitializer(new
FunctionSensor<Boolean>(ConfigBag.newInstance()
+ .configure(FunctionSensor.SENSOR_NAME,
"myCustomHealth")
+ .configure(FunctionSensor.SUPPRESS_DUPLICATES,
true)
+ .configure(FunctionSensor.SENSOR_PERIOD,
Duration.ONE_MILLISECOND)
+ .configure(FunctionSensor.FUNCTION, new
Callable<Boolean>() {
+ public Boolean call() {
+ return customHealth.get();
+ }})
+ ))
+ .enricher(EnricherSpec.create(UpdatingMap.class)
+ .configure(UpdatingMap.SOURCE_SENSOR,
Sensors.newBooleanSensor("myCustomHealth"))
+ .configure(UpdatingMap.TARGET_SENSOR,
Attributes.SERVICE_NOT_UP_INDICATORS)
+ .configure(UpdatingMap.COMPUTING, Functions.forMap(
+ MutableMap.of(true, null, false,
"custom-health-is-false"),
+ "custom-health-unknown")))
+ );
+
+ // Start the entity
+ app.start(ImmutableList.of(loc));
+ EntityAsserts.assertAttributeEqualsEventually(entity,
Attributes.SERVICE_UP, true);
+
+ // Expect to have ssh "checkRunningCommand" called once during
startup, and not again
+ assertExecHasAtLeastOnce(RecordingSshTool.getExecCmds(),
"checkRunningCommand");
+
+ RecordingSshTool.clearCmdHistory();
+ Asserts.succeedsContinually(ImmutableMap.of("timeout",
Duration.millis(100)), new Runnable() {
+ public void run() {
+ assertExecHasNever(RecordingSshTool.getExecCmds(),
"checkRunningCommand");
+ }});
+
+ // Restart (see https://issues.apache.org/jira/browse/BROOKLYN-547)
+ entity.restart();
--- End diff --
Should test SERVICE_UP false first?
> VanillaSoftwareProcess.restart fails if sshMonitoring disabled
> --------------------------------------------------------------
>
> Key: BROOKLYN-547
> URL: https://issues.apache.org/jira/browse/BROOKLYN-547
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Aled Sage
>
> When using {{VanillaSoftwareProcess}} with {{sshMonitoring.enabled: false}},
> the entity is set on fire if you call the {{restart}} effector.
> This is because... when the entity transitions to service.isUp=false during
> the restart, it triggers the enricher
> {{UpdatingNotUpFromServiceProcessIsRunning}}, which populates the
> service-not-up-indicator with {{service.process.isRunning}}. This is never
> cleared because we are not polling over ssh for the check-running.
> A solution would be to remove this enricher in {{VanillaSoftwareProcess}}, if
> ssh-monitoring is disabled.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)