View Javadoc
1   package org.wikimedia.search.extra.latency;
2   
3   import java.io.IOException;
4   import java.util.List;
5   import java.util.Set;
6   
7   import org.elasticsearch.common.io.stream.StreamInput;
8   import org.elasticsearch.common.io.stream.StreamOutput;
9   import org.elasticsearch.common.io.stream.Writeable;
10  import org.elasticsearch.common.unit.TimeValue;
11  
12  import lombok.Getter;
13  
14  public interface SearchLatencyProbe {
15  
16      @Getter
17      class LatencyStat implements Writeable {
18          private final String bucket;
19          private final double percentile;
20          private final TimeValue latency;
21  
22          LatencyStat(String bucket, double percentile, TimeValue latency) {
23              this.bucket = bucket;
24              this.percentile = percentile;
25              this.latency = latency;
26          }
27  
28          LatencyStat(StreamInput in) throws IOException {
29              this.bucket = in.readString();
30              this.percentile = in.readDouble();
31              this.latency = in.readTimeValue();
32          }
33  
34          public void writeTo(StreamOutput out) throws IOException {
35              out.writeString(bucket);
36              out.writeDouble(this.percentile);
37              out.writeTimeValue(latency);
38          }
39      }
40  
41      long getMillisAtPercentile(String bucket, double percentile);
42      List<LatencyStat> getLatencyStats(Set<Double> latencies);
43  }
44