]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add tests for memcached cache driver
authorNick Porter <nick@portercomputing.co.uk>
Wed, 18 Dec 2024 13:45:56 +0000 (13:45 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Wed, 18 Dec 2024 18:40:37 +0000 (18:40 +0000)
13 files changed:
src/tests/modules/cache_memcached/all.mk [new file with mode: 0644]
src/tests/modules/cache_memcached/cache-logic.attrs [new symlink]
src/tests/modules/cache_memcached/cache-logic.unlang [new symlink]
src/tests/modules/cache_memcached/cache-method-logic.attrs [new symlink]
src/tests/modules/cache_memcached/cache-method-logic.unlang [new symlink]
src/tests/modules/cache_memcached/cache-method-update.attrs [new symlink]
src/tests/modules/cache_memcached/cache-method-update.unlang [new symlink]
src/tests/modules/cache_memcached/cache-update.attrs [new symlink]
src/tests/modules/cache_memcached/cache-update.unlang [new symlink]
src/tests/modules/cache_memcached/cache-xlat.attrs [new symlink]
src/tests/modules/cache_memcached/cache-xlat.unlang [new symlink]
src/tests/modules/cache_memcached/map.attrs [new symlink]
src/tests/modules/cache_memcached/module.conf [new file with mode: 0644]

diff --git a/src/tests/modules/cache_memcached/all.mk b/src/tests/modules/cache_memcached/all.mk
new file mode 100644 (file)
index 0000000..5369857
--- /dev/null
@@ -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 (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_memcached/cache-logic.unlang b/src/tests/modules/cache_memcached/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_memcached/cache-method-logic.attrs b/src/tests/modules/cache_memcached/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_memcached/cache-method-logic.unlang b/src/tests/modules/cache_memcached/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_memcached/cache-method-update.attrs b/src/tests/modules/cache_memcached/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_memcached/cache-method-update.unlang b/src/tests/modules/cache_memcached/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_memcached/cache-update.attrs b/src/tests/modules/cache_memcached/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_memcached/cache-update.unlang b/src/tests/modules/cache_memcached/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_memcached/cache-xlat.attrs b/src/tests/modules/cache_memcached/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_memcached/cache-xlat.unlang b/src/tests/modules/cache_memcached/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_memcached/map.attrs b/src/tests/modules/cache_memcached/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_memcached/module.conf b/src/tests/modules/cache_memcached/module.conf
new file mode 100644 (file)
index 0000000..74ef669
--- /dev/null
@@ -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]
+       }
+}