summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl')
-rw-r--r--examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl67
1 files changed, 67 insertions, 0 deletions
diff --git a/examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl b/examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl
new file mode 100644
index 0000000..57b550a
--- /dev/null
+++ b/examples/redis-unstable/tests/unit/cluster/sharded-pubsub.tcl
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2009-Present, Redis Ltd.
+# All rights reserved.
+#
+# Licensed under your choice of (a) the Redis Source Available License 2.0
+# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the
+# GNU Affero General Public License v3 (AGPLv3).
+#
+# Portions of this file are available under BSD3 terms; see REDISCONTRIBUTIONS for more information.
+#
+
+start_cluster 1 1 {tags {external:skip cluster}} {
+ set primary_id 0
+ set replica1_id 1
+
+ set primary [Rn $primary_id]
+ set replica [Rn $replica1_id]
+
+ test "Sharded pubsub publish behavior within multi/exec" {
+ foreach {node} {primary replica} {
+ set node [set $node]
+ $node MULTI
+ $node SPUBLISH ch1 "hello"
+ $node EXEC
+ }
+ }
+
+ test "Sharded pubsub within multi/exec with cross slot operation" {
+ $primary MULTI
+ $primary SPUBLISH ch1 "hello"
+ $primary GET foo
+ catch {$primary EXEC} err
+ assert_match {CROSSSLOT*} $err
+ }
+
+ test "Sharded pubsub publish behavior within multi/exec with read operation on primary" {
+ $primary MULTI
+ $primary SPUBLISH foo "hello"
+ $primary GET foo
+ $primary EXEC
+ } {0 {}}
+
+ test "Sharded pubsub publish behavior within multi/exec with read operation on replica" {
+ $replica MULTI
+ $replica SPUBLISH foo "hello"
+ catch {[$replica GET foo]} err
+ assert_match {MOVED*} $err
+ catch {[$replica EXEC]} err
+ assert_match {EXECABORT*} $err
+ }
+
+ test "Sharded pubsub publish behavior within multi/exec with write operation on primary" {
+ $primary MULTI
+ $primary SPUBLISH foo "hello"
+ $primary SET foo bar
+ $primary EXEC
+ } {0 OK}
+
+ test "Sharded pubsub publish behavior within multi/exec with write operation on replica" {
+ $replica MULTI
+ $replica SPUBLISH foo "hello"
+ catch {[$replica SET foo bar]} err
+ assert_match {MOVED*} $err
+ catch {[$replica EXEC]} err
+ assert_match {EXECABORT*} $err
+ }
+}