Skip to content

Java: add IT for pubsub#400

Merged
Yury-Fridlyand merged 17 commits intojava/integ_yuryf_pubsubfrom
java/dev_yuryf_pubsub_tests
Jun 29, 2024
Merged

Java: add IT for pubsub#400
Yury-Fridlyand merged 17 commits intojava/integ_yuryf_pubsubfrom
java/dev_yuryf_pubsub_tests

Conversation

@Yury-Fridlyand
Copy link
Copy Markdown

@Yury-Fridlyand Yury-Fridlyand commented Jun 28, 2024

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
if (client instanceof RedisClusterClient) {
((RedisClusterClient) client).customCommand(new String[] {"unsubscribe"}).get();
((RedisClusterClient) client).customCommand(new String[] {"punsubscribe"}).get();
((RedisClusterClient) client).customCommand(new String[] {"sunsubscribe"}).get();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this necessary, or do we clean it up when we destroy the client?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it is not needed, but I want to explicitly unsubscribe in case if a client isn't GC'ed and remains active/connected.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The client gets close()'d right after these commands run, so I wouldn't think there's a risk of it not getting cleaned up here (not necessarily GC'd).

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
…va/dev_yuryf_pubsub_tests

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@ParameterizedTest(name = "use callback = {0}")
@ValueSource(booleans = {true, false})
public void sharded_pubsub(boolean useCallback) {
assumeTrue(REDIS_VERSION.isGreaterThanOrEqualTo("7.0.0"), "This feature added in redis 7");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redis -> Valkey?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This goes to the test report only. Valkey <7 doesn't exist. Still need to update that?

@SuppressWarnings("unchecked")
@ParameterizedTest(name = "standalone = {0}, use callback = {1}")
@MethodSource("getTwoBoolPermutations")
public void exact_happy_path(boolean standalone, boolean useCallback) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add comments similar to what was in the Python port?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added references to python tests

var sender = (RedisClusterClient) createClient(false);
clients.addAll(List.of(listener, sender));

assertEquals(1L, sender.spublish(channel, message).get());
Copy link
Copy Markdown

@jduo jduo Jun 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add a publishAndWait() helper since this is used alot. Could have it take in an expected result from publish and a Message... varargs so you can include the assertion in it.

standalone ? PubSubChannelMode.PATTERN : PubSubClusterChannelMode.PATTERN,
Set.of(pattern));

for (var i = 0; i < numChannels; i++) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This nested loop also shows up in alot of tests. Refactor to GenerateChannelsAndMessages() that takes in output channel and message lists.

}

// TODO add following tests from https://github.com/aws/glide-for-redis/pull/1643
// test_pubsub_exact_happy_path_coexistence
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still todo?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are blocked by getPubSubMessage, which is not implemented

private void skipTestsOnMac() {
assumeFalse(
System.getProperty("os.name").toLowerCase().contains("mac"),
"PubSub doesn't work on mac OS");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

really?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shocking content

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@Yury-Fridlyand Yury-Fridlyand merged commit 5939973 into java/integ_yuryf_pubsub Jun 29, 2024
@Yury-Fridlyand Yury-Fridlyand deleted the java/dev_yuryf_pubsub_tests branch June 29, 2024 20:02
jamesx-improving pushed a commit that referenced this pull request Jul 1, 2024
* Java: Add client configuration for subscribing to channels. (#381)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* More TODOs for the god of TODOs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add `PUBLISH` and `SPUBLISH` commands. (#391)

* Add `PUBLISH` and `SPUBLISH` commands.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix the test.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java client: receive pubsub messages (#385)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Receive pushes (subscibed messages).

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename a class.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java: add IT for pubsub (#400)

* Add some tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Test fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Experiment

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Uncomment test timeout.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update function signature.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
cyip10 pushed a commit that referenced this pull request Jul 16, 2024
* Java: Add client configuration for subscribing to channels. (#381)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* More TODOs for the god of TODOs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add `PUBLISH` and `SPUBLISH` commands. (#391)

* Add `PUBLISH` and `SPUBLISH` commands.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix the test.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java client: receive pubsub messages (#385)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Receive pushes (subscibed messages).

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename a class.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java: add IT for pubsub (#400)

* Add some tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Test fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Experiment

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Uncomment test timeout.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update function signature.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Yury-Fridlyand added a commit that referenced this pull request Jun 6, 2025
* Java: Add client configuration for subscribing to channels. (#381)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* More TODOs for the god of TODOs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add `PUBLISH` and `SPUBLISH` commands. (#391)

* Add `PUBLISH` and `SPUBLISH` commands.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix the test.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java client: receive pubsub messages (#385)

* Add client configuartion for subscribing to channels.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* CLIPPY I HATE YOU

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Get and store callback.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Fix tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rework configuration and add docs.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Config rework.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* docs

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Receive pushes (subscibed messages).

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Rename a class.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Java: add IT for pubsub (#400)

* Add some tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Test fixes.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Experiment

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add more tests.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* I HATE YOU SPOTLESS

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Uncomment test timeout.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Typo fix.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Update function signature.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Address PR comments.

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>

---------

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants