forked from valkey-io/valkey-glide
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add sync and async clients both to tests. (#12)
* Add sync and async clients both to tests. Signed-off-by: Yury-Fridlyand <[email protected]> * Minor fixes. Signed-off-by: Yury-Fridlyand <[email protected]> --------- Signed-off-by: Yury-Fridlyand <[email protected]>
- Loading branch information
1 parent
9817802
commit 5a4f738
Showing
11 changed files
with
284 additions
and
116 deletions.
There are no files selected for viewing
16 changes: 16 additions & 0 deletions
16
java/jabushka/benchmarks/src/main/java/javabushka/client/AsyncClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package javabushka.client; | ||
|
||
import java.util.concurrent.Future; | ||
|
||
public interface AsyncClient extends Client { | ||
|
||
long DEFAULT_TIMEOUT = 1000; | ||
|
||
Future<?> asyncSet(String key, String value); | ||
|
||
Future<String> asyncGet(String key); | ||
|
||
<T> T waitForResult(Future<T> future); | ||
|
||
<T> T waitForResult(Future<T> future, long timeout); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
java/jabushka/benchmarks/src/main/java/javabushka/client/Client.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package javabushka.client; | ||
|
||
import javabushka.client.utils.ConnectionSettings; | ||
|
||
public interface Client { | ||
void connectToRedis(); | ||
|
||
void connectToRedis(ConnectionSettings connectionSettings); | ||
|
||
default void closeConnection() {} | ||
|
||
String getName(); | ||
} |
7 changes: 7 additions & 0 deletions
7
java/jabushka/benchmarks/src/main/java/javabushka/client/SyncClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package javabushka.client; | ||
|
||
public interface SyncClient extends Client { | ||
void set(String key, String value); | ||
|
||
String get(String key); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
java/jabushka/benchmarks/src/main/java/javabushka/client/jedis/JedisPseudoAsyncClient.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package javabushka.client.jedis; | ||
|
||
import java.util.concurrent.CompletableFuture; | ||
import java.util.concurrent.Future; | ||
import java.util.concurrent.TimeUnit; | ||
import javabushka.client.AsyncClient; | ||
|
||
// Jedis doesn't provide async API | ||
// https://github.com/redis/jedis/issues/241 | ||
public class JedisPseudoAsyncClient extends JedisClient implements AsyncClient { | ||
@Override | ||
public Future<?> asyncSet(String key, String value) { | ||
return CompletableFuture.runAsync(() -> super.set(key, value)); | ||
} | ||
|
||
@Override | ||
public Future<String> asyncGet(String key) { | ||
return CompletableFuture.supplyAsync(() -> super.get(key)); | ||
} | ||
|
||
@Override | ||
public <T> T waitForResult(Future<T> future) { | ||
return waitForResult(future, DEFAULT_TIMEOUT); | ||
} | ||
|
||
@Override | ||
public <T> T waitForResult(Future<T> future, long timeout) { | ||
try { | ||
return future.get(timeout, TimeUnit.MILLISECONDS); | ||
} catch (Exception ignored) { | ||
return null; | ||
} | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "Jedis pseudo-async"; | ||
} | ||
} |
Oops, something went wrong.