summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/modules/vector-sets/tests/debug_digest.py
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:40:55 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:40:55 +0100
commit5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda (patch)
tree1acdfa5220cd13b7be43a2a01368e80d306473ca /examples/redis-unstable/modules/vector-sets/tests/debug_digest.py
parentc7ab12bba64d9c20ccd79b132dac475f7bc3923e (diff)
downloadcrep-5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda.tar.gz
Add Redis source code for testing
Diffstat (limited to 'examples/redis-unstable/modules/vector-sets/tests/debug_digest.py')
-rw-r--r--examples/redis-unstable/modules/vector-sets/tests/debug_digest.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/redis-unstable/modules/vector-sets/tests/debug_digest.py b/examples/redis-unstable/modules/vector-sets/tests/debug_digest.py
new file mode 100644
index 0000000..78f06d8
--- /dev/null
+++ b/examples/redis-unstable/modules/vector-sets/tests/debug_digest.py
@@ -0,0 +1,39 @@
+from test import TestCase, generate_random_vector
+import struct
+
+class DebugDigestTest(TestCase):
+ def getname(self):
+ return "[regression] DEBUG DIGEST-VALUE with attributes"
+
+ def test(self):
+ # Generate random vectors
+ vec1 = generate_random_vector(4)
+ vec2 = generate_random_vector(4)
+ vec_bytes1 = struct.pack('4f', *vec1)
+ vec_bytes2 = struct.pack('4f', *vec2)
+
+ # Add vectors to the key, one with attribute, one without
+ self.redis.execute_command('VADD', self.test_key, 'FP32', vec_bytes1, f'{self.test_key}:item:1')
+ self.redis.execute_command('VADD', self.test_key, 'FP32', vec_bytes2, f'{self.test_key}:item:2', 'SETATTR', '{"color":"red"}')
+
+ # Call DEBUG DIGEST-VALUE on the key
+ try:
+ digest1 = self.redis.execute_command('DEBUG', 'DIGEST-VALUE', self.test_key)
+ assert digest1 is not None, "DEBUG DIGEST-VALUE should return a value"
+
+ # Change attribute and verify digest changes
+ self.redis.execute_command('VSETATTR', self.test_key, f'{self.test_key}:item:2', '{"color":"blue"}')
+
+ digest2 = self.redis.execute_command('DEBUG', 'DIGEST-VALUE', self.test_key)
+ assert digest2 is not None, "DEBUG DIGEST-VALUE should return a value after attribute change"
+ assert digest1 != digest2, "Digest should change when an attribute is modified"
+
+ # Remove attribute and verify digest changes again
+ self.redis.execute_command('VSETATTR', self.test_key, f'{self.test_key}:item:2', '')
+
+ digest3 = self.redis.execute_command('DEBUG', 'DIGEST-VALUE', self.test_key)
+ assert digest3 is not None, "DEBUG DIGEST-VALUE should return a value after attribute removal"
+ assert digest2 != digest3, "Digest should change when an attribute is removed"
+
+ except Exception as e:
+ raise AssertionError(f"DEBUG DIGEST-VALUE command failed: {str(e)}")