Skip to content

Commit

Permalink
Address TDIGEST.ADD changes (#71)
Browse files Browse the repository at this point in the history
  • Loading branch information
sazzad16 authored Oct 6, 2022
1 parent 8f33d96 commit 7484492
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 45 deletions.
9 changes: 4 additions & 5 deletions src/main/java/io/rebloom/client/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -820,13 +820,12 @@ public Map<String, Object> tdigestInfo(String key) {
}

@Override
public void tdigestAdd(String key, TDigestValueWeight... valueWeights) {
byte[][] args = new byte[1 + 2 * valueWeights.length][];
public void tdigestAdd(String key, double... values) {
byte[][] args = new byte[1 + values.length][];
int ain = 0;
args[ain++] = SafeEncoder.encode(key);
for (TDigestValueWeight vw : valueWeights) {
args[ain++] = Protocol.toByteArray(vw.getValue());
args[ain++] = Protocol.toByteArray(vw.getWeight());
for (double v : values) {
args[ain++] = Protocol.toByteArray(v);
}
try (Jedis jedis = _conn()) {
String response = sendCommand(jedis, TDigestCommand.ADD, args).getStatusCodeReply();
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/rebloom/client/td/TDigest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public interface TDigest {

Map<String, Object> tdigestInfo(String key);

void tdigestAdd(String key, TDigestValueWeight... valueWeights);
void tdigestAdd(String key, double... values);

List<Double> tdigestCDF(String key, double... value);

Expand Down
20 changes: 0 additions & 20 deletions src/main/java/io/rebloom/client/td/TDigestValueWeight.java

This file was deleted.

43 changes: 24 additions & 19 deletions src/test/java/io/rebloom/client/TDigestTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import io.rebloom.client.td.TDigestValueWeight;
import java.util.Map;
import java.util.Random;
import org.junit.Test;
Expand Down Expand Up @@ -49,7 +48,7 @@ public void reset() {
cl.tdigestReset("reset");
assertMergedUnmergedNodes("reset", 0, 0);

cl.tdigestAdd("reset", randomAddParam(), randomAddParam(), randomAddParam());
cl.tdigestAdd("reset", randomValue(), randomValue(), randomValue());
assertMergedUnmergedNodes("reset", 0, 3);

cl.tdigestReset("reset");
Expand All @@ -60,10 +59,10 @@ public void reset() {
public void add() {
cl.tdigestCreate("tdadd", 100);

cl.tdigestAdd("tdadd", randomAddParam());
cl.tdigestAdd("tdadd", randomValue());
assertMergedUnmergedNodes("tdadd", 0, 1);

cl.tdigestAdd("tdadd", randomAddParam(), randomAddParam(), randomAddParam(), randomAddParam());
cl.tdigestAdd("tdadd", randomValue(), randomValue(), randomValue(), randomValue());
assertMergedUnmergedNodes("tdadd", 0, 5);
}

Expand All @@ -87,8 +86,10 @@ public void merge() {
cl.tdigestMerge("td2", "td4m");
assertMergedUnmergedNodes("td2", 0, 0);

cl.tdigestAdd("td2", definedAddParam(1, 1), definedAddParam(1, 1), definedAddParam(1, 1));
cl.tdigestAdd("td4m", definedAddParam(1, 100), definedAddParam(1, 100));
// cl.tdigestAdd("td2", definedAddParam(1, 1), definedAddParam(1, 1), definedAddParam(1, 1));
// cl.tdigestAdd("td4m", definedAddParam(1, 100), definedAddParam(1, 100));
cl.tdigestAdd("td2", 1, 1, 1);
cl.tdigestAdd("td4m", 1, 1);

cl.tdigestMerge("td2", "td4m");
assertMergedUnmergedNodes("td2", 3, 2);
Expand Down Expand Up @@ -117,8 +118,8 @@ public void cdf() {
cl.tdigestCreate("tdcdf", 100);
assertEquals(singletonList(Double.NaN), cl.tdigestCDF("tdcdf", 50));

cl.tdigestAdd("tdcdf", definedAddParam(1, 1), definedAddParam(1, 1), definedAddParam(1, 1));
cl.tdigestAdd("tdcdf", definedAddParam(100, 1), definedAddParam(100, 1));
cl.tdigestAdd("tdcdf", 1, 1, 1);
cl.tdigestAdd("tdcdf", 100, 100);
assertEquals(singletonList(0.6), cl.tdigestCDF("tdcdf", 50));
cl.tdigestCDF("tdcdf", 25, 50, 75);
}
Expand All @@ -135,8 +136,8 @@ public void quantile() {
cl.tdigestCreate("tdqnt", 100);
assertEquals(singletonList(Double.NaN), cl.tdigestQuantile("tdqnt", 0.5));

cl.tdigestAdd("tdqnt", definedAddParam(1, 1), definedAddParam(1, 1), definedAddParam(1, 1));
cl.tdigestAdd("tdqnt", definedAddParam(100, 1), definedAddParam(100, 1));
cl.tdigestAdd("tdqnt", 1, 1, 1);
cl.tdigestAdd("tdqnt", 100, 100);
assertEquals(singletonList(1.0), cl.tdigestQuantile("tdqnt", 0.5));
}

Expand All @@ -162,17 +163,21 @@ public void minAndMax() {
// assertTrue((Object) cl.tdigestMin(key) instanceof Double);
// assertTrue((Object) cl.tdigestMax(key) instanceof Double);

cl.tdigestAdd(key, definedAddParam(2, 1));
cl.tdigestAdd(key, definedAddParam(5, 1));
cl.tdigestAdd(key, 2);
cl.tdigestAdd(key, 5);
assertEquals(2d, cl.tdigestMin(key), 0.01);
assertEquals(5d, cl.tdigestMax(key), 0.01);
}

private static TDigestValueWeight randomAddParam() {
return new TDigestValueWeight(random.nextDouble() * 10000, Math.abs(random.nextInt()) + 1l);
}

private static TDigestValueWeight definedAddParam(double value, long weight) {
return new TDigestValueWeight(value, weight);
//
// private static TDigestValueWeight randomAddParam() {
// return new TDigestValueWeight(random.nextDouble() * 10000, Math.abs(random.nextInt()) + 1l);
// }
//
// private static TDigestValueWeight definedAddParam(double value, long weight) {
// return new TDigestValueWeight(value, weight);
// }

private static double randomValue() {
return random.nextDouble() * 10000;
}
}

0 comments on commit 7484492

Please sign in to comment.