From: Nick Porter Date: Wed, 18 Dec 2024 13:45:56 +0000 (+0000) Subject: Add tests for memcached cache driver X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ef59c6d28844e80db2d1b1ef702a855f3058a28;p=thirdparty%2Ffreeradius-server.git Add tests for memcached cache driver --- diff --git a/src/tests/modules/cache_memcached/all.mk b/src/tests/modules/cache_memcached/all.mk new file mode 100644 index 00000000000..53698579272 --- /dev/null +++ b/src/tests/modules/cache_memcached/all.mk @@ -0,0 +1,7 @@ +# +# Test the "memcached" cache module driver +# +cache_memcached.test: + +# Don't test memcached driver if CACHE_MEMCACHED_TEST_SERVER ENV is not set +cache_memcached_require_test_server := 1 diff --git a/src/tests/modules/cache_memcached/cache-logic.attrs b/src/tests/modules/cache_memcached/cache-logic.attrs new file mode 120000 index 00000000000..a0066073116 --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-logic.attrs @@ -0,0 +1 @@ +../cache_rbtree/cache-logic.attrs \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/cache-logic.unlang b/src/tests/modules/cache_memcached/cache-logic.unlang new file mode 120000 index 00000000000..0324cbc1458 --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-logic.unlang @@ -0,0 +1 @@ +../cache_rbtree/cache-logic.unlang \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/cache-method-logic.attrs b/src/tests/modules/cache_memcached/cache-method-logic.attrs new file mode 120000 index 00000000000..a7d10459ef0 --- /dev/null +++ b/src/tests/modules/cache_memcached/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_memcached/cache-method-logic.unlang b/src/tests/modules/cache_memcached/cache-method-logic.unlang new file mode 120000 index 00000000000..48d72a8eb66 --- /dev/null +++ b/src/tests/modules/cache_memcached/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_memcached/cache-method-update.attrs b/src/tests/modules/cache_memcached/cache-method-update.attrs new file mode 120000 index 00000000000..d95f6f741f3 --- /dev/null +++ b/src/tests/modules/cache_memcached/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_memcached/cache-method-update.unlang b/src/tests/modules/cache_memcached/cache-method-update.unlang new file mode 120000 index 00000000000..b9f8b60d3f4 --- /dev/null +++ b/src/tests/modules/cache_memcached/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_memcached/cache-update.attrs b/src/tests/modules/cache_memcached/cache-update.attrs new file mode 120000 index 00000000000..9c862b6ffe8 --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-update.attrs @@ -0,0 +1 @@ +../cache_rbtree/cache-update.attrs \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/cache-update.unlang b/src/tests/modules/cache_memcached/cache-update.unlang new file mode 120000 index 00000000000..04c32eaa12f --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-update.unlang @@ -0,0 +1 @@ +../cache_rbtree/cache-update.unlang \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/cache-xlat.attrs b/src/tests/modules/cache_memcached/cache-xlat.attrs new file mode 120000 index 00000000000..6bcf20e8548 --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-xlat.attrs @@ -0,0 +1 @@ +../cache_rbtree/cache-xlat.attrs \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/cache-xlat.unlang b/src/tests/modules/cache_memcached/cache-xlat.unlang new file mode 120000 index 00000000000..d910eabbceb --- /dev/null +++ b/src/tests/modules/cache_memcached/cache-xlat.unlang @@ -0,0 +1 @@ +../cache_rbtree/cache-xlat.unlang \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/map.attrs b/src/tests/modules/cache_memcached/map.attrs new file mode 120000 index 00000000000..514bdee21a6 --- /dev/null +++ b/src/tests/modules/cache_memcached/map.attrs @@ -0,0 +1 @@ +../cache_rbtree/map.attrs \ No newline at end of file diff --git a/src/tests/modules/cache_memcached/module.conf b/src/tests/modules/cache_memcached/module.conf new file mode 100644 index 00000000000..74ef66921bc --- /dev/null +++ b/src/tests/modules/cache_memcached/module.conf @@ -0,0 +1,122 @@ +# Used by cache-logic +cache { + driver = "memcached" + + memcached { + options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" + } + + key = "$ENV{MODULE_TEST_UNLANG}%{Filter-Id}" + ttl = 5 + + update { + &Callback-Id := &control.Callback-Id[0] + &NAS-Port := &control.NAS-Port[0] + &control += &reply + } + + add_stats = yes +} + +cache cache_update { + driver = "memcached" + + memcached { + options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" + } + + key = "$ENV{MODULE_TEST_UNLANG}%{Filter-Id}" + ttl = 5 + + # + # 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) + &Filter-Id += &NAS-Port[*] + + # Cache the result of an exec + &Callback-Id := `/bin/echo 'echo test'` + + # Create three string values and overwrite the middle one + &Login-LAT-Service += 'foo' + &Login-LAT-Service += 'bar' + &Login-LAT-Service += 'baz' + + &Login-LAT-Service[1] := 'rab' + + # Create three string values, then remove one + &Login-LAT-Node += 'foo' + &Login-LAT-Node += 'bar' + &Login-LAT-Node += 'baz' + + &Login-LAT-Node -= 'bar' + } +} + +# +# Test some exotic keys +# +# Not on memcached yet - it has limitations in the character set for the key +#cache cache_bin_key_octets { +# driver = "memcached" + +# memcached { +# options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" +# } + +# key = &Class +# ttl = 5 + +# update { +# &Callback-Id := &Callback-Id[0] +# } +#} + +#cache cache_bin_key_ipaddr { +# driver = "memcached" + +# memcached { +# options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" +# } + +# key = &Framed-IP-Address +# ttl = 5 + +# update { +# &Callback-Id := &Callback-Id[0] +# } +#} + +cache cache_empty_update { + driver = "memcached" + + memcached { + options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" + } + + key = "%{Filter-Id}" + ttl = 5 +} + +# Regression test for literal data +cache static_key { + driver = "memcached" + + memcached { + options = "--SERVER=$ENV{CACHE_MEMCACHED_TEST_SERVER}" + } + + key = "I-Am-A-Static-Key" + ttl = 5 + + update { + &Callback-Id := &Callback-Id[0] + } +}