Class WeightedAverageBuildDurationCalculator
- java.lang.Object
-
- jetbrains.buildServer.serverSide.impl.timeEstimation.WeightedAverageBuildDurationCalculator
-
- All Implemented Interfaces:
BuildDurationCalculator
- Direct Known Subclasses:
WeightedAverageMSDBuildDurationCalculator
public class WeightedAverageBuildDurationCalculator extends Object implements BuildDurationCalculator
- Author:
- Pavel.Sher Date: 02.08.2007
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classWeightedAverageBuildDurationCalculator.BuildDataprotected static classWeightedAverageBuildDurationCalculator.BuildTypeDataprotected static classWeightedAverageBuildDurationCalculator.StageValue
-
Field Summary
Fields Modifier and Type Field Description static StringESTIMATOR_TOTAL_AGENT_APPROACH_KEYstatic StringESTIMATOR_TOTAL_APPROACH_KEYstatic StringORDER_IDstatic StringUSESTAGES_PROPERTY_KEY
-
Constructor Summary
Constructors Constructor Description WeightedAverageBuildDurationCalculator(SQLRunnerEx sqlRunner, EventDispatcher<BuildServerListener> dispatcher, ProjectManager projectManager)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbuildFinished(SFinishedBuild build, Map<String,Long> completedStages)longcalculateAgentBuildDuration(String buildTypeId, BuildAgent agent)Calculates estimated duration of a build of the specified build type on the specified agent considering only the time build spent on agent.longcalculateBuildDuration(String buildTypeId)Calculates estimated duration of a build of the specified build type.protected longcalculateBuildDuration(String buildTypeId, String agentName, String... stagesToUse)longcalculateBuildDuration(String buildTypeId, BuildAgent agent)Calculates estimated duration of a build of the specified build type on the specified agent.protected doublecalculateWeightedMeanForStage(String agentName, Iterable<WeightedAverageBuildDurationCalculator.StageValue> values)longestimateTimeLeftFor(RunningBuildEx build, long timestamp)Estimates time for the given build to complete from the given (timestamp) pivotprotected WeightedAverageBuildDurationCalculator.BuildTypeDatagetStoredStageData(String buildTypeId)static Collection<String>getWellKnownStages()booleanhasDataForAgent(String buildTypeId, BuildAgent agent)voidsetBuildHistory(BuildHistory history)voidsetIgnoreTooShortBuilds(boolean ignore)protected booleanshouldSkip(String buildTypeId, String agentName, long totalBuildDuration)static booleanshouldUseTotal(String buildTypeId)StringtoString()
-
-
-
Field Detail
-
ESTIMATOR_TOTAL_APPROACH_KEY
public static final String ESTIMATOR_TOTAL_APPROACH_KEY
- See Also:
- Constant Field Values
-
ESTIMATOR_TOTAL_AGENT_APPROACH_KEY
public static final String ESTIMATOR_TOTAL_AGENT_APPROACH_KEY
- See Also:
- Constant Field Values
-
USESTAGES_PROPERTY_KEY
public static final String USESTAGES_PROPERTY_KEY
- See Also:
- Constant Field Values
-
ORDER_ID
public static final String ORDER_ID
-
-
Constructor Detail
-
WeightedAverageBuildDurationCalculator
public WeightedAverageBuildDurationCalculator(@NotNull SQLRunnerEx sqlRunner, @NotNull EventDispatcher<BuildServerListener> dispatcher, @NotNull ProjectManager projectManager)
-
-
Method Detail
-
getWellKnownStages
@NotNull public static Collection<String> getWellKnownStages()
-
buildFinished
protected void buildFinished(@NotNull SFinishedBuild build, @NotNull Map<String,Long> completedStages)
-
setIgnoreTooShortBuilds
public void setIgnoreTooShortBuilds(boolean ignore)
-
shouldSkip
protected boolean shouldSkip(@NotNull String buildTypeId, String agentName, long totalBuildDuration)
-
getStoredStageData
@Nullable protected WeightedAverageBuildDurationCalculator.BuildTypeData getStoredStageData(String buildTypeId)
-
calculateBuildDuration
public long calculateBuildDuration(@NotNull String buildTypeId, @NotNull BuildAgent agent)Description copied from interface:BuildDurationCalculatorCalculates estimated duration of a build of the specified build type on the specified agent.- Specified by:
calculateBuildDurationin interfaceBuildDurationCalculator- Parameters:
buildTypeId- build type id.agent- build agent.- Returns:
- Estimated time in milliseconds. -1 if an estimate cannot be calculated for some reason (e.g. lack of historical data).
-
calculateBuildDuration
public long calculateBuildDuration(@NotNull String buildTypeId)Description copied from interface:BuildDurationCalculatorCalculates estimated duration of a build of the specified build type.- Specified by:
calculateBuildDurationin interfaceBuildDurationCalculator- Returns:
- Estimated time in milliseconds. -1 if an estimate cannot be calculated for some reason (e.g. lack of historical data).
-
calculateAgentBuildDuration
public long calculateAgentBuildDuration(@NotNull String buildTypeId, @NotNull BuildAgent agent)Description copied from interface:BuildDurationCalculatorCalculates estimated duration of a build of the specified build type on the specified agent considering only the time build spent on agent.- Specified by:
calculateAgentBuildDurationin interfaceBuildDurationCalculator- Parameters:
buildTypeId- build type id.agent- build agent.- Returns:
- Estimated time in milliseconds. -1 if an estimate cannot be calculated for some reason (e.g. lack of historical data).
-
hasDataForAgent
public boolean hasDataForAgent(@NotNull String buildTypeId, @NotNull BuildAgent agent)- Specified by:
hasDataForAgentin interfaceBuildDurationCalculator- Parameters:
buildTypeId- build type idagent- agent- Returns:
- true if calculator has data for specified build configuration and agent (i.e. build of specified build configuration has been executed on the specified agent).
-
setBuildHistory
public void setBuildHistory(@NotNull BuildHistory history)
-
calculateBuildDuration
protected long calculateBuildDuration(@NotNull String buildTypeId, @Nullable String agentName, String... stagesToUse)
-
calculateWeightedMeanForStage
protected double calculateWeightedMeanForStage(@Nullable String agentName, @NotNull Iterable<WeightedAverageBuildDurationCalculator.StageValue> values)
-
estimateTimeLeftFor
public long estimateTimeLeftFor(@NotNull RunningBuildEx build, long timestamp)Description copied from interface:BuildDurationCalculatorEstimates time for the given build to complete from the given (timestamp) pivot- Specified by:
estimateTimeLeftForin interfaceBuildDurationCalculator- Parameters:
build- target buildtimestamp- pivot to base estimate upon- Returns:
- estimation for the time left until completion
-
shouldUseTotal
public static boolean shouldUseTotal(@NotNull String buildTypeId)
-
-