From: Arran Cudbard-Bell Date: Thu, 2 Dec 2021 15:28:47 +0000 (-0600) Subject: Test the redis cache module X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b586d2899ca377ad1a68035a27799a3f8fda9569;p=thirdparty%2Ffreeradius-server.git Test the redis cache module --- diff --git a/src/tests/modules/cache_redis/all.mk b/src/tests/modules/cache_redis/all.mk new file mode 100644 index 00000000000..6060444c56d --- /dev/null +++ b/src/tests/modules/cache_redis/all.mk @@ -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 index 00000000000..a04d741a639 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-bin.attrs @@ -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 index 00000000000..f6c111070a9 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-bin.unlang @@ -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 index 00000000000..a0066073116 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-logic.attrs @@ -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 index 00000000000..0324cbc1458 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-logic.unlang @@ -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 index 00000000000..87ef7fff32f --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-bin.attrs @@ -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 index 00000000000..d85ce080d81 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-bin.unlang @@ -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 index 00000000000..a7d10459ef0 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-logic.attrs @@ -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 index 00000000000..48d72a8eb66 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-logic.unlang @@ -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 index 00000000000..d95f6f741f3 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-update.attrs @@ -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 index 00000000000..b9f8b60d3f4 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-method-update.unlang @@ -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 index 00000000000..9c862b6ffe8 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-update.attrs @@ -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 index 00000000000..04c32eaa12f --- /dev/null +++ b/src/tests/modules/cache_redis/cache-update.unlang @@ -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 index 00000000000..6bcf20e8548 --- /dev/null +++ b/src/tests/modules/cache_redis/cache-xlat.attrs @@ -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 index 00000000000..d910eabbceb --- /dev/null +++ b/src/tests/modules/cache_redis/cache-xlat.unlang @@ -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 index 00000000000..514bdee21a6 --- /dev/null +++ b/src/tests/modules/cache_redis/map.attrs @@ -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 index 00000000000..b78102b7dee --- /dev/null +++ b/src/tests/modules/cache_redis/module.conf @@ -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] + } +}