]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Test the redis cache module
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 2 Dec 2021 15:28:47 +0000 (09:28 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 2 Dec 2021 17:15:08 +0000 (11:15 -0600)
17 files changed:
src/tests/modules/cache_redis/all.mk [new file with mode: 0644]
src/tests/modules/cache_redis/cache-bin.attrs [new symlink]
src/tests/modules/cache_redis/cache-bin.unlang [new symlink]
src/tests/modules/cache_redis/cache-logic.attrs [new symlink]
src/tests/modules/cache_redis/cache-logic.unlang [new symlink]
src/tests/modules/cache_redis/cache-method-bin.attrs [new symlink]
src/tests/modules/cache_redis/cache-method-bin.unlang [new symlink]
src/tests/modules/cache_redis/cache-method-logic.attrs [new symlink]
src/tests/modules/cache_redis/cache-method-logic.unlang [new symlink]
src/tests/modules/cache_redis/cache-method-update.attrs [new symlink]
src/tests/modules/cache_redis/cache-method-update.unlang [new symlink]
src/tests/modules/cache_redis/cache-update.attrs [new symlink]
src/tests/modules/cache_redis/cache-update.unlang [new symlink]
src/tests/modules/cache_redis/cache-xlat.attrs [new symlink]
src/tests/modules/cache_redis/cache-xlat.unlang [new symlink]
src/tests/modules/cache_redis/map.attrs [new symlink]
src/tests/modules/cache_redis/module.conf [new file with mode: 0644]

diff --git a/src/tests/modules/cache_redis/all.mk b/src/tests/modules/cache_redis/all.mk
new file mode 100644 (file)
index 0000000..6060444
--- /dev/null
@@ -0,0 +1,7 @@
+#
+#  Test the "redis" module
+#
+redis_rbtree.test:
+
+# Don't test redis if REDIS_TEST_SERVER ENV is not set
+redis_require_test_server := 1
diff --git a/src/tests/modules/cache_redis/cache-bin.attrs b/src/tests/modules/cache_redis/cache-bin.attrs
new file mode 120000 (symlink)
index 0000000..a04d741
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-bin.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-bin.unlang b/src/tests/modules/cache_redis/cache-bin.unlang
new file mode 120000 (symlink)
index 0000000..f6c1110
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-bin.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-logic.attrs b/src/tests/modules/cache_redis/cache-logic.attrs
new file mode 120000 (symlink)
index 0000000..a006607
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-logic.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-logic.unlang b/src/tests/modules/cache_redis/cache-logic.unlang
new file mode 120000 (symlink)
index 0000000..0324cbc
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-logic.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-bin.attrs b/src/tests/modules/cache_redis/cache-method-bin.attrs
new file mode 120000 (symlink)
index 0000000..87ef7ff
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-bin.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-bin.unlang b/src/tests/modules/cache_redis/cache-method-bin.unlang
new file mode 120000 (symlink)
index 0000000..d85ce08
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-bin.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-logic.attrs b/src/tests/modules/cache_redis/cache-method-logic.attrs
new file mode 120000 (symlink)
index 0000000..a7d1045
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-logic.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-logic.unlang b/src/tests/modules/cache_redis/cache-method-logic.unlang
new file mode 120000 (symlink)
index 0000000..48d72a8
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-logic.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-update.attrs b/src/tests/modules/cache_redis/cache-method-update.attrs
new file mode 120000 (symlink)
index 0000000..d95f6f7
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-update.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-method-update.unlang b/src/tests/modules/cache_redis/cache-method-update.unlang
new file mode 120000 (symlink)
index 0000000..b9f8b60
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-method-update.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-update.attrs b/src/tests/modules/cache_redis/cache-update.attrs
new file mode 120000 (symlink)
index 0000000..9c862b6
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-update.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-update.unlang b/src/tests/modules/cache_redis/cache-update.unlang
new file mode 120000 (symlink)
index 0000000..04c32ea
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-update.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-xlat.attrs b/src/tests/modules/cache_redis/cache-xlat.attrs
new file mode 120000 (symlink)
index 0000000..6bcf20e
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-xlat.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/cache-xlat.unlang b/src/tests/modules/cache_redis/cache-xlat.unlang
new file mode 120000 (symlink)
index 0000000..d910eab
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/cache-xlat.unlang
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/map.attrs b/src/tests/modules/cache_redis/map.attrs
new file mode 120000 (symlink)
index 0000000..514bdee
--- /dev/null
@@ -0,0 +1 @@
+../cache_rbtree/map.attrs
\ No newline at end of file
diff --git a/src/tests/modules/cache_redis/module.conf b/src/tests/modules/cache_redis/module.conf
new file mode 100644 (file)
index 0000000..b78102b
--- /dev/null
@@ -0,0 +1,114 @@
+# Used by cache-logic
+cache {
+       driver = "rlm_cache_redis"
+
+       redis {
+               server = $ENV{REDIS_TEST_SERVER}:30001
+               server = $ENV{REDIS_TEST_SERVER}:30002
+               server = $ENV{REDIS_TEST_SERVER}:30003
+               server = $ENV{REDIS_TEST_SERVER}:30004
+               server = $ENV{REDIS_TEST_SERVER}:30005
+               server = $ENV{REDIS_TEST_SERVER}:30006
+       }
+
+       key = "%{Tmp-String-0}"
+       ttl = 2
+
+       update {
+               &request.Tmp-String-1 := &control.Tmp-String-1[0]
+               &request.Tmp-Integer-0 := &control.Tmp-Integer-0[0]
+               &control += &reply
+       }
+
+       add_stats = yes
+}
+
+cache cache_update {
+       driver = "rlm_cache_redis"
+
+       redis {
+               server = $ENV{REDIS_TEST_SERVER}:30001
+               server = $ENV{REDIS_TEST_SERVER}:30002
+               server = $ENV{REDIS_TEST_SERVER}:30003
+               server = $ENV{REDIS_TEST_SERVER}:30004
+               server = $ENV{REDIS_TEST_SERVER}:30005
+               server = $ENV{REDIS_TEST_SERVER}:30006
+       }
+
+       key = "%{Tmp-String-0}"
+       ttl = 2
+
+       #
+       #  Update sections in the cache module use very similar
+       #  logic to update sections in unlang, except the result
+       #  of evaluating the RHS isn't applied until the cache
+       #  entry is merged.
+       #
+       update {
+               # Copy reply to session-state
+               &session-state += &reply
+
+               # Implicit cast between types (and multivalue copy)
+               &Tmp-String-0 += &Tmp-Integer-0[*]
+
+               # Cache the result of an exec
+               &Tmp-String-1 := `/bin/echo 'echo test'`
+
+               # Create three string values and overwrite the middle one
+               &Tmp-String-2 += 'foo'
+               &Tmp-String-2 += 'bar'
+               &Tmp-String-2 += 'baz'
+
+               &Tmp-String-2[1] := 'rab'
+
+               # Create three string values, then remove one
+               &Tmp-String-3 += 'foo'
+               &Tmp-String-3 += 'bar'
+               &Tmp-String-3 += 'baz'
+
+               &Tmp-String-3 -= 'bar'
+       }
+}
+
+#
+#  Test some exotic keys
+#
+cache cache_bin_key_octets {
+       driver = "rlm_cache_redis"
+
+       redis {
+               server = $ENV{REDIS_TEST_SERVER}:30001
+               server = $ENV{REDIS_TEST_SERVER}:30002
+               server = $ENV{REDIS_TEST_SERVER}:30003
+               server = $ENV{REDIS_TEST_SERVER}:30004
+               server = $ENV{REDIS_TEST_SERVER}:30005
+               server = $ENV{REDIS_TEST_SERVER}:30006
+       }
+
+       key = &Tmp-Octets-0
+       ttl = 2
+
+       update {
+               &Tmp-String-1 := &Tmp-String-1[0]
+       }
+}
+
+cache cache_bin_key_ipaddr {
+       driver = "rlm_cache_redis"
+
+       redis {
+               server = $ENV{REDIS_TEST_SERVER}:30001
+               server = $ENV{REDIS_TEST_SERVER}:30002
+               server = $ENV{REDIS_TEST_SERVER}:30003
+               server = $ENV{REDIS_TEST_SERVER}:30004
+               server = $ENV{REDIS_TEST_SERVER}:30005
+               server = $ENV{REDIS_TEST_SERVER}:30006
+       }
+
+       key = &Tmp-IP-Address-0
+       ttl = 2
+
+       update {
+               &Tmp-String-1 := &Tmp-String-1[0]
+       }
+}