package com.intrbiz.bergamot.worker.engine.dummy; import java.security.SecureRandom; import com.intrbiz.bergamot.model.message.check.ExecuteCheck; import com.intrbiz.bergamot.model.message.result.ActiveResultMO; import com.intrbiz.bergamot.worker.engine.AbstractExecutor; /** * Execute randomised dummy checks, which changes state randomly */ public class RandomExecutor extends AbstractExecutor<DummyEngine> { public static final String NAME = "random"; private SecureRandom random = new SecureRandom(); public RandomExecutor() { super(); } @Override public boolean accept(ExecuteCheck task) { return DummyEngine.NAME.equals(task.getEngine()) && NAME.equals(task.getExecutor()); } @Override public void execute(ExecuteCheck executeCheck) { // apply a threshold to a random double from 0 - 1 long start = System.nanoTime(); this.publishActiveResult(executeCheck, new ActiveResultMO().fromCheck(executeCheck) .applyGreaterThanThreshold( this.random.nextDouble(), executeCheck.getDoubleParameter("warning", 0.7D), executeCheck.getDoubleParameter("critical", 0.9D), executeCheck.getParameter("output", "") ) .runtime(((double)(System.nanoTime() - start)) / 1_000_000D) ); } }