From 031cca7c1cea4dad0b37446d3ae2565aa7494f73 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 1 Mar 2016 17:12:59 +0100 Subject: [PATCH 1/4] Removed sleep. Signed-off-by: Kai Zimmermann --- .../simulator/amqp/SpReceiverService.java | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java index 6f0ac732e..ee8ae1a0e 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java @@ -13,7 +13,6 @@ import java.util.Map; import org.eclipse.hawkbit.dmf.amqp.api.EventTopic; import org.eclipse.hawkbit.dmf.amqp.api.MessageHeaderKey; import org.eclipse.hawkbit.dmf.amqp.api.MessageType; -import org.eclipse.hawkbit.dmf.json.model.ActionStatus; import org.eclipse.hawkbit.dmf.json.model.DownloadAndUpdateRequest; import org.eclipse.hawkbit.simulator.AbstractSimulatedDevice; import org.eclipse.hawkbit.simulator.DeviceSimulatorUpdater; @@ -139,31 +138,25 @@ public class SpReceiverService extends ReceiverService { DownloadAndUpdateRequest.class); final Long actionId = downloadAndUpdateRequest.getActionId(); - try { - Thread.sleep(1_000); - } catch (final InterruptedException e) { - LOGGER.error("Sleep interrupted", e); - } - - spSenderService.sendActionStatusMessage(tenant, ActionStatus.RUNNING, - "device Simulator retrieved update request. proceeding with simulation.", actionId); - deviceUpdater.startUpdate(tenant, thingId, actionId, downloadAndUpdateRequest.getSoftwareModules().get(0) - .getModuleVersion(), new UpdaterCallback() { - @Override - public void updateFinished(final AbstractSimulatedDevice device, final Long actionId) { - switch (device.getResponseStatus()) { - case SUCCESSFUL: - spSenderService.finishUpdateProcess(new SimulatedUpdate(device.getTenant(), device.getId(), - actionId), "Simulation complete!"); - break; - case ERROR: - spSenderService.finishUpdateProcessWithError(new SimulatedUpdate(device.getTenant(), - device.getId(), actionId), "Simulation complete with error!"); - break; - default: - break; - } - } - }); + deviceUpdater.startUpdate(tenant, thingId, actionId, + downloadAndUpdateRequest.getSoftwareModules().get(0).getModuleVersion(), new UpdaterCallback() { + @Override + public void updateFinished(final AbstractSimulatedDevice device, final Long actionId) { + switch (device.getResponseStatus()) { + case SUCCESSFUL: + spSenderService.finishUpdateProcess( + new SimulatedUpdate(device.getTenant(), device.getId(), actionId), + "Simulation complete!"); + break; + case ERROR: + spSenderService.finishUpdateProcessWithError( + new SimulatedUpdate(device.getTenant(), device.getId(), actionId), + "Simulation complete with error!"); + break; + default: + break; + } + } + }); } } From b7f94891a4e792fdbde780ee159a664c221e9306 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 3 Mar 2016 10:15:59 +0100 Subject: [PATCH 2/4] Migrated to lambda --- .../simulator/amqp/SpReceiverService.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java index ee8ae1a0e..1c314d56f 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java @@ -14,9 +14,7 @@ import org.eclipse.hawkbit.dmf.amqp.api.EventTopic; import org.eclipse.hawkbit.dmf.amqp.api.MessageHeaderKey; import org.eclipse.hawkbit.dmf.amqp.api.MessageType; import org.eclipse.hawkbit.dmf.json.model.DownloadAndUpdateRequest; -import org.eclipse.hawkbit.simulator.AbstractSimulatedDevice; import org.eclipse.hawkbit.simulator.DeviceSimulatorUpdater; -import org.eclipse.hawkbit.simulator.DeviceSimulatorUpdater.UpdaterCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; @@ -139,23 +137,20 @@ public class SpReceiverService extends ReceiverService { final Long actionId = downloadAndUpdateRequest.getActionId(); deviceUpdater.startUpdate(tenant, thingId, actionId, - downloadAndUpdateRequest.getSoftwareModules().get(0).getModuleVersion(), new UpdaterCallback() { - @Override - public void updateFinished(final AbstractSimulatedDevice device, final Long actionId) { - switch (device.getResponseStatus()) { - case SUCCESSFUL: - spSenderService.finishUpdateProcess( - new SimulatedUpdate(device.getTenant(), device.getId(), actionId), - "Simulation complete!"); - break; - case ERROR: - spSenderService.finishUpdateProcessWithError( - new SimulatedUpdate(device.getTenant(), device.getId(), actionId), - "Simulation complete with error!"); - break; - default: - break; - } + downloadAndUpdateRequest.getSoftwareModules().get(0).getModuleVersion(), (device, actionId1) -> { + switch (device.getResponseStatus()) { + case SUCCESSFUL: + spSenderService.finishUpdateProcess( + new SimulatedUpdate(device.getTenant(), device.getId(), actionId1), + "Simulation complete!"); + break; + case ERROR: + spSenderService.finishUpdateProcessWithError( + new SimulatedUpdate(device.getTenant(), device.getId(), actionId1), + "Simulation complete with error!"); + break; + default: + break; } }); } From cfe83755771f548816fea728eeadc4e6c805189a Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 3 Mar 2016 10:16:19 +0100 Subject: [PATCH 3/4] Made update execution more random --- .../org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java index 075f30ba0..2ea86fcde 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java @@ -63,7 +63,7 @@ public class DeviceSimulatorUpdater { device.setSwversion(swVersion); eventbus.post(new InitUpdate(device)); threadPool.schedule(new DeviceSimulatorUpdateThread(device, spSenderService, actionId, eventbus, callback), - 2000, TimeUnit.MILLISECONDS); + (new Random().nextInt(10_000) + 2000), TimeUnit.MILLISECONDS); } private static final class DeviceSimulatorUpdateThread implements Runnable { From da66e81157555727ae725f7f98742323a537ae2c Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 3 Mar 2016 12:51:01 +0100 Subject: [PATCH 4/4] Set proper random generation. Signed-off-by: Kai Zimmermann --- .../eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java index 2ea86fcde..b8b5011aa 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java @@ -62,8 +62,9 @@ public class DeviceSimulatorUpdater { device.setProgress(0.0); device.setSwversion(swVersion); eventbus.post(new InitUpdate(device)); + threadPool.schedule(new DeviceSimulatorUpdateThread(device, spSenderService, actionId, eventbus, callback), - (new Random().nextInt(10_000) + 2000), TimeUnit.MILLISECONDS); + 2_000, TimeUnit.MILLISECONDS); } private static final class DeviceSimulatorUpdateThread implements Runnable { @@ -91,7 +92,7 @@ public class DeviceSimulatorUpdater { if (newProgress < 1.0) { threadPool.schedule( new DeviceSimulatorUpdateThread(device, spSenderService, actionId, eventbus, callback), - rndSleep.nextInt(3000), TimeUnit.MILLISECONDS); + rndSleep.nextInt(5_000), TimeUnit.MILLISECONDS); } else { callback.updateFinished(device, actionId); }