//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.metrics; import com.codahale.metrics.Timer; /** * Class to do pipeline level metrics, for example how long documents take to process * * */ public class PipelineMetrics { private String pipelineName; private Timer.Context documentTimerContext; private static final String DOCUMENT_TIMER = "documentProcessingTime"; /** * Construct a new PipelineMetrics instance * * @param pipelineName Name of the pipeline */ public PipelineMetrics(String pipelineName){ this.pipelineName = pipelineName; } /** * Return the name of the pipeline associated with this PipelineMetrics instance * * @return */ public String getPipelineName(){ return pipelineName; } /** * Start timing the processing of a document */ public void startDocumentProcess(){ finishDocumentProcess(); //Check we've finished the timing of the previous document documentTimerContext = MetricsFactory.getInstance().getTimer(pipelineName, DOCUMENT_TIMER).time(); } /** * Finish timing the processing of a document */ public void finishDocumentProcess(){ if(documentTimerContext != null){ documentTimerContext.stop(); documentTimerContext = null; } } }