/******************************************************************************************************************* * * Updates the statistics for a new fingerprint computed. * ******************************************************************************************************************/ void onFingerprintComputed (final @ListensTo @Nonnull FingerprintComputedMessage message) { log.trace("onFingerprintComputed({})", message); processedFileCount++; processedDataSize += message.getPath().toFile().length(); final Collaboration collaboration = message.getCollaboration(); final long elapsedTime = collaboration.getDuration().getMillis(); final double speed = (processedDataSize / M10) / (elapsedTime / K10); final int eta = 1000 * (int)(((totalDataSize - processedDataSize) / M10) / speed); fields.setProcessed(String.format("%.1f MB in %d files", processedDataSize / M10, processedFileCount)); fields.setTotal(String.format("%.1f MB in %d files", totalDataSize / M10, totalFileCount)); fields.setElapsedTime(periodFormatter.print(new Duration(truncatedToSecond(elapsedTime)).toPeriod())); fields.setRemainingTime(periodFormatter.print(new Duration(truncatedToSecond(eta)).toPeriod())); fields.setSpeed(String.format("%.1f MB/s", speed)); fields.setPending(Integer.toString(collaboration.getDeliveringMessagesCount())); fields.setRunning(Integer.toString(collaboration.getRunningThreadsCount())); fields.setProgress(processedDataSize / (float)totalDataSize); fields.setProgressLabel(String.format("%.1f %%", 100 * fields.getProgress())); }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private void onConfirmMeasurement (final @ListensTo @Nonnull ConfirmMeasurementMessage message) { log.info("onConfirmMeasurement()"); presentation.hideInvitationToOperateOnTheSensor(); continueAction.setEnabled(false); cancelAction.setEnabled(false); collaborationPendingUserIntervention.resume(suspensionToken, new Runnable() { @Override public void run() { presentation.renderWhiteCellAt(currentPosition); presentation.showMeasureInProgress(); new MeasurementRequest().sendLater(MEASUREMENT_DELAY, MILLISECONDS); } }); suspensionToken = null; collaborationPendingUserIntervention = NULL_COLLABORATION; }
/******************************************************************************************************************* * * ******************************************************************************************************************/ private void onCancel (final @ListensTo @Nonnull CancelMessage message) { log.info("onCancel()"); cancelAction.setEnabled(false); if (suspensionToken != null) { collaborationPendingUserIntervention.resumeAndDie(suspensionToken); suspensionToken = null; collaborationPendingUserIntervention = NULL_COLLABORATION; } presentation.dismiss(); }
@Test public void must_measure() throws InterruptedException { final Collaboration collaboration = new MeasurementRequest().send(); collaboration.waitForCompletion(); Thread.sleep(1000); // FIXME: to receive CollaborationCompleted messages.verifyCollaborationStarted(); messages.verify(MeasurementRequest.class); messages.verify(MeasurementMessage.class); // messages.verify(DisplayDiscoveryMessage.class).with("displayNames", new Equals(Arrays.asList("SwitchResX4 - Color LCD"))); messages.verifyCollaborationCompleted(); } }
/******************************************************************************************************************* * * Invites the user to properly position the sensor. * ******************************************************************************************************************/ private void inviteToPositionTheSensor (final @Nonnull Collaboration collaboration) { log.info("inviteToPositionTheSensor()"); collaborationPendingUserIntervention = collaboration; suspensionToken = collaborationPendingUserIntervention.suspend(); presentation.renderSensorPlacementInvitationCellAt(currentPosition); eventuallyMoveOutControlPanel(); continueAction.setEnabled(true); cancelAction.setEnabled(true); }
@Test public void must_discover_displays() throws InterruptedException { final Collaboration collaboration = new DisplayDiscoveryQueryMessage().send(); collaboration.waitForCompletion(); Thread.sleep(1000); // FIXME: to receive CollaborationCompleted messages.verifyCollaborationStarted(); messages.verify(DisplayDiscoveryQueryMessage.class); messages.verify(DisplayDiscoveryMessage.class).with("displayNames", new Equals(Arrays.asList("SwitchResX4 - Color LCD"))); messages.verifyCollaborationCompleted(); } }
collaboration.waitForCompletion();