package com.hubspot.singularity;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.primitives.Longs;
public class SingularityDisasterDataPoint implements Comparable<SingularityDisasterDataPoint> {
private final long timestamp;
private final int numActiveTasks;
private final int numPendingTasks;
private final int numLateTasks;
private final long avgTaskLagMillis;
private final int numLostTasks;
private final int numActiveSlaves;
private final int numLostSlaves;
@JsonCreator
public SingularityDisasterDataPoint(@JsonProperty("timestamp") long timestamp,
@JsonProperty("numActiveTasks") int numActiveTasks,
@JsonProperty("numPendingTasks") int numPendingTasks,
@JsonProperty("numLateTasks") int numLateTasks,
@JsonProperty("avgTaskLagMillis") long avgTaskLagMillis,
@JsonProperty("numLostTasks") int numLostTasks,
@JsonProperty("numActiveSlaves") int numActiveSlaves,
@JsonProperty("numLostSlaves") int numLostSlaves) {
this.timestamp = timestamp;
this.numActiveTasks = numActiveTasks;
this.numPendingTasks = numPendingTasks;
this.numLateTasks = numLateTasks;
this.avgTaskLagMillis = avgTaskLagMillis;
this.numLostTasks = numLostTasks;
this.numActiveSlaves = numActiveSlaves;
this.numLostSlaves = numLostSlaves;
}
public long getTimestamp() {
return timestamp;
}
public int getNumActiveTasks() {
return numActiveTasks;
}
public int getNumPendingTasks() {
return numPendingTasks;
}
public int getNumLateTasks() {
return numLateTasks;
}
public long getAvgTaskLagMillis() {
return avgTaskLagMillis;
}
public int getNumLostTasks() {
return numLostTasks;
}
public int getNumActiveSlaves() {
return numActiveSlaves;
}
public int getNumLostSlaves() {
return numLostSlaves;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
SingularityDisasterDataPoint that = (SingularityDisasterDataPoint) o;
return timestamp == that.timestamp &&
numActiveTasks == that.numActiveTasks &&
numPendingTasks == that.numPendingTasks &&
numLateTasks == that.numLateTasks &&
avgTaskLagMillis == that.avgTaskLagMillis &&
numLostTasks == that.numLostTasks &&
numActiveSlaves == that.numActiveSlaves &&
numLostSlaves == that.numLostSlaves;
}
@Override
public int hashCode() {
return Objects.hash(timestamp, numActiveTasks, numPendingTasks, numLateTasks, avgTaskLagMillis, numLostTasks, numActiveSlaves, numLostSlaves);
}
@Override
public String toString() {
return "SingularityDisasterDataPoint{" +
"timestamp=" + timestamp +
", numActiveTasks=" + numActiveTasks +
", numPendingTasks=" + numPendingTasks +
", numLateTasks=" + numLateTasks +
", avgTaskLagMillis=" + avgTaskLagMillis +
", numLostTasks=" + numLostTasks +
", numActiveSlaves=" + numActiveSlaves +
", numLostSlaves=" + numLostSlaves +
'}';
}
@Override
public int compareTo(SingularityDisasterDataPoint o) {
return Longs.compare(o.getTimestamp(), this.timestamp);
}
}