summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/support/response_transformers.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/tests/support/response_transformers.tcl')
-rw-r--r--examples/redis-unstable/tests/support/response_transformers.tcl110
1 files changed, 0 insertions, 110 deletions
diff --git a/examples/redis-unstable/tests/support/response_transformers.tcl b/examples/redis-unstable/tests/support/response_transformers.tcl
deleted file mode 100644
index 99c1ebb..0000000
--- a/examples/redis-unstable/tests/support/response_transformers.tcl
+++ /dev/null
@@ -1,110 +0,0 @@
-# Tcl client library - used by the Redis test
-#
-# 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).
-#
-# This file contains a bunch of commands whose purpose is to transform
-# a RESP3 response to RESP2
-# Why is it needed?
-# When writing the reply_schema part in COMMAND DOCS we decided to use
-# the existing tests in order to verify the schemas (see logreqres.c)
-# The problem was that many tests were relying on the RESP2 structure
-# of the response (e.g. HRANDFIELD WITHVALUES in RESP2: {f1 v1 f2 v2}
-# vs. RESP3: {{f1 v1} {f2 v2}}).
-# Instead of adjusting the tests to expect RESP3 responses (a lot of
-# changes in many files) we decided to transform the response to RESP2
-# when running with --force-resp3
-
-package require Tcl 8.5
-
-namespace eval response_transformers {}
-
-# Transform a map response into an array of tuples (tuple = array with 2 elements)
-# Used for XREAD[GROUP]
-proc transfrom_map_to_tupple_array {argv response} {
- set tuparray {}
- foreach {key val} $response {
- set tmp {}
- lappend tmp $key
- lappend tmp $val
- lappend tuparray $tmp
- }
- return $tuparray
-}
-
-# Transform an array of tuples to a flat array
-proc transfrom_tuple_array_to_flat_array {argv response} {
- set flatarray {}
- foreach pair $response {
- lappend flatarray {*}$pair
- }
- return $flatarray
-}
-
-# With HRANDFIELD, we only need to transform the response if the request had WITHVALUES
-# (otherwise the returned response is a flat array in both RESPs)
-proc transfrom_hrandfield_command {argv response} {
- foreach ele $argv {
- if {[string compare -nocase $ele "WITHVALUES"] == 0} {
- return [transfrom_tuple_array_to_flat_array $argv $response]
- }
- }
- return $response
-}
-
-# With some zset commands, we only need to transform the response if the request had WITHSCORES
-# (otherwise the returned response is a flat array in both RESPs)
-proc transfrom_zset_withscores_command {argv response} {
- foreach ele $argv {
- if {[string compare -nocase $ele "WITHSCORES"] == 0} {
- return [transfrom_tuple_array_to_flat_array $argv $response]
- }
- }
- return $response
-}
-
-# With ZPOPMIN/ZPOPMAX, we only need to transform the response if the request had COUNT (3rd arg)
-# (otherwise the returned response is a flat array in both RESPs)
-proc transfrom_zpopmin_zpopmax {argv response} {
- if {[llength $argv] == 3} {
- return [transfrom_tuple_array_to_flat_array $argv $response]
- }
- return $response
-}
-
-set ::trasformer_funcs {
- XREAD transfrom_map_to_tupple_array
- XREADGROUP transfrom_map_to_tupple_array
- HRANDFIELD transfrom_hrandfield_command
- ZRANDMEMBER transfrom_zset_withscores_command
- ZRANGE transfrom_zset_withscores_command
- ZRANGEBYSCORE transfrom_zset_withscores_command
- ZRANGEBYLEX transfrom_zset_withscores_command
- ZREVRANGE transfrom_zset_withscores_command
- ZREVRANGEBYSCORE transfrom_zset_withscores_command
- ZREVRANGEBYLEX transfrom_zset_withscores_command
- ZUNION transfrom_zset_withscores_command
- ZDIFF transfrom_zset_withscores_command
- ZINTER transfrom_zset_withscores_command
- ZPOPMIN transfrom_zpopmin_zpopmax
- ZPOPMAX transfrom_zpopmin_zpopmax
-}
-
-proc ::response_transformers::transform_response_if_needed {id argv response} {
- if {![::redis::should_transform_to_resp2 $id] || $::redis::readraw($id)} {
- return $response
- }
-
- set key [string toupper [lindex $argv 0]]
- if {![dict exists $::trasformer_funcs $key]} {
- return $response
- }
-
- set transform [dict get $::trasformer_funcs $key]
-
- return [$transform $argv $response]
-}