All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.SingularityTaskHealthcheckResult Maven / Gradle / Ivy

The newest version!
package com.hubspot.singularity;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.collect.ComparisonChain;
import com.hubspot.mesos.JavaUtils;

public class SingularityTaskHealthcheckResult extends SingularityTaskIdHolder implements Comparable {

  private final Optional statusCode;
  private final Optional durationMillis;
  private final Optional responseBody;
  private final Optional errorMessage;
  private final long timestamp;

  @JsonCreator
  public SingularityTaskHealthcheckResult(@JsonProperty("statusCode") Optional statusCode, @JsonProperty("duration") Optional durationMillis, @JsonProperty("timestamp") long timestamp,
      @JsonProperty("responseBody") Optional responseBody, @JsonProperty("errorMessage") Optional errorMessage, @JsonProperty("taskId") SingularityTaskId taskId) {
    super(taskId);

    this.statusCode = statusCode;
    this.errorMessage = errorMessage;
    this.durationMillis = durationMillis;
    this.timestamp = timestamp;
    this.responseBody = responseBody;
  }

  @Override
  public int compareTo(SingularityTaskHealthcheckResult o) {
    return ComparisonChain.start()
        .compare(timestamp, o.getTimestamp())
        .compare(o.getTaskId().getId(), getTaskId().getId())
        .result();
  }

  @Override
  public int hashCode() {
    return Objects.hashCode(getTaskId(), statusCode, durationMillis, responseBody, errorMessage, timestamp);
  }

  @Override
  public boolean equals(Object other) {
    if (this == other) {
        return true;
    }
    if (other == null || other.getClass() != this.getClass()) {
        return false;
    }

    SingularityTaskHealthcheckResult that = (SingularityTaskHealthcheckResult) other;

    return Objects.equal(this.statusCode, that.statusCode)
            && Objects.equal(this.getTaskId(), that.getTaskId())
            && Objects.equal(this.durationMillis, that.durationMillis)
            && Objects.equal(this.responseBody, that.responseBody)
            && Objects.equal(this.errorMessage, that.errorMessage)
            && Objects.equal(this.timestamp, that.timestamp);
  }

  public Optional getStatusCode() {
    return statusCode;
  }

  public Optional getDurationMillis() {
    return durationMillis;
  }

  public Optional getErrorMessage() {
    return errorMessage;
  }

  public long getTimestamp() {
    return timestamp;
  }

  public Optional getResponseBody() {
    return responseBody;
  }

  @JsonIgnore
  public boolean isFailed() {
    return getErrorMessage().isPresent() || (getStatusCode().isPresent() && !JavaUtils.isHttpSuccess(getStatusCode().get()));
  }

  @Override
  public String toString() {
    return "SingularityTaskHealthcheckResult [statusCode=" + statusCode + ", durationMillis=" + durationMillis + ", timestamp=" + timestamp + ", responseBody="
        + responseBody + ", errorMessage=" + errorMessage + ", taskId=" + getTaskId() + "]";
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy