]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix to add unit test for lruhash space that exercises the routines.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 27 Mar 2024 12:33:46 +0000 (13:33 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 27 Mar 2024 12:33:46 +0000 (13:33 +0100)
doc/Changelog
testdata/subnet_cached_size.crpl [new file with mode: 0644]

index 2d46e719972826b142d366d987a9647ea090bb77..3fbd270269ad575fc0fc03fb4f941bbac00de853 100644 (file)
@@ -4,6 +4,7 @@
          memory usage increased beyond expectations.
        - Fix for #1032, add safeguard to make table space positive.
        - Fix comment in lruhash space function.
+       - Fix to add unit test for lruhash space that exercises the routines.
 
 25 March 2024: Yorgos
        - Merge #831 from Pierre4012: Improve Windows NSIS installer
diff --git a/testdata/subnet_cached_size.crpl b/testdata/subnet_cached_size.crpl
new file mode 100644 (file)
index 0000000..d221d0d
--- /dev/null
@@ -0,0 +1,308 @@
+; Ask the same question twice. Check to see second is answered
+; from cache
+
+server:
+       trust-anchor: "example.com.    3600    IN      DS      2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b"
+       val-override-date: "20070916134226"
+       trust-anchor-signaling: no
+       target-fetch-policy: "0 0 0 0 0"
+       send-client-subnet: 1.2.3.4
+       max-client-subnet-ipv4: 17
+       module-config: "subnetcache validator iterator"
+       verbosity: 3
+       fake-sha1: yes
+       fake-dsa: yes
+       access-control: 127.0.0.0/8 allow_snoop
+       qname-minimisation: "no"
+       minimal-responses: no
+       ; the size for the edns subnet cache
+       msg-cache-size: 1500
+
+stub-zone:
+       name: "."
+       stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
+CONFIG_END
+
+SCENARIO_BEGIN Test subnet cached response size
+
+; K.ROOT-SERVERS.NET.
+RANGE_BEGIN 0 100
+       ADDRESS 193.0.14.129
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       . IN NS
+               SECTION ANSWER
+                       . IN NS K.ROOT-SERVERS.NET.
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                               ;; we expect to receive empty
+                       HEX_EDNSDATA_END
+                       K.ROOT-SERVERS.NET.     IN      A       193.0.14.129
+       ENTRY_END
+
+       ENTRY_BEGIN
+               MATCH opcode qtype qname
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       www.example.com. IN A
+               SECTION AUTHORITY
+                       com.    IN NS   a.gtld-servers.net.
+               SECTION ADDITIONAL
+                       a.gtld-servers.net.     IN      A       192.5.6.30
+       ENTRY_END
+RANGE_END
+
+; a.gtld-servers.net.
+RANGE_BEGIN 0 100
+       ADDRESS 192.5.6.30
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       com. IN NS
+               SECTION ANSWER
+                       com.    IN NS   a.gtld-servers.net.
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                               ;; we expect to receive empty
+                       HEX_EDNSDATA_END
+                       a.gtld-servers.net.     IN      A       192.5.6.30
+       ENTRY_END
+
+       ENTRY_BEGIN
+               MATCH opcode qtype qname
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       www.example.com. IN A
+               SECTION AUTHORITY
+                       example.com.    IN NS   ns.example.com.
+               SECTION ADDITIONAL
+                       ns.example.com.         IN      A       1.2.3.4
+       ENTRY_END
+RANGE_END
+
+; ns.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.4
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       example.com. IN NS
+               SECTION ANSWER
+                       example.com.    IN NS   ns.example.com.
+                       example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                               ;; we expect to receive empty
+                       HEX_EDNSDATA_END
+                       ns.example.com.         IN      A       1.2.3.4
+                       ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+       ENTRY_END
+
+       ; response to DNSKEY priming query
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       example.com. IN DNSKEY
+               SECTION ANSWER
+                       example.com.    3600    IN      DNSKEY  256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}
+                       example.com.    3600    IN      RRSIG   DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854}
+               SECTION AUTHORITY
+                       example.com.    IN NS   ns.example.com.
+                       example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                               ;; we expect to receive empty
+                       HEX_EDNSDATA_END
+                       ns.example.com.         IN      A       1.2.3.4
+                       ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+       ENTRY_END
+
+       ; response to query of interest
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id copy_ednsdata_assume_clientsubnet
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       www.example.com. IN A
+               SECTION ANSWER
+                       www.example.com. IN A   10.20.30.40
+                       ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854}
+               SECTION AUTHORITY
+                       example.com.    IN NS   ns.example.com.
+                       example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                                                       ; client is 127.0.0.1
+                               00 08           ; OPC
+                               00 07           ; option length
+                               00 01           ; Family
+                               11 00           ; source mask, scopemask
+                               7f 00 00        ; address
+                       HEX_EDNSDATA_END
+                       ns.example.com.         IN      A       1.2.3.4
+                       www.example.com.        3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854}
+       ENTRY_END
+
+       ENTRY_BEGIN
+               MATCH opcode qtype qname ednsdata
+               ADJUST copy_id copy_ednsdata_assume_clientsubnet
+               REPLY QR NOERROR
+               SECTION QUESTION
+                       www.example.com. IN A
+               SECTION ANSWER
+                       www.example.com. IN A   10.20.30.43
+                       www.example.com.        3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. AFC5G+z0jWt132hDuTIFOva59cZ7MTd+ex/osuoiQhIIuWFAr9xoZz8=
+               SECTION AUTHORITY
+                       example.com.    IN NS   ns.example.com.
+                       example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+               SECTION ADDITIONAL
+                       HEX_EDNSDATA_BEGIN
+                                                       ; client is 127.3.0.1
+                               00 08           ; OPC
+                               00 07           ; option length
+                               00 01           ; Family
+                               11 00           ; source mask, scopemask
+                               7f 03 00        ; address
+                       HEX_EDNSDATA_END
+                       ns.example.com.         IN      A       1.2.3.4
+                       ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854}
+       ENTRY_END
+RANGE_END
+
+STEP 1 QUERY
+ENTRY_BEGIN
+       HEX_ANSWER_BEGIN;
+               00 00 01 00 00 01 00 00         ;ID 0
+               00 00 00 01 03 77 77 77         ; www.example.com A? (DO)
+               07 65 78 61 6d 70 6c 65
+               03 63 6f 6d 00 00 01 00
+               01 00 00 29 10 00 00 00
+               80 00 00 0b
+
+               00 08 00 07                                     ; OPC, optlen
+               00 01 11 00                                     ; ip4, scope 17, source 0
+               7f 00 00                                        ;127.0.0.0/17
+       HEX_ANSWER_END
+ENTRY_END
+
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ednsdata
+       REPLY QR RD RA AD NOERROR
+       SECTION QUESTION
+               www.example.com. IN A
+       SECTION ANSWER
+               www.example.com. IN A   10.20.30.40
+               www.example.com.        3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854}
+       SECTION AUTHORITY
+               example.com.    IN NS   ns.example.com.
+               example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+                                               ; client is 127.0.0.1
+                       00 08           ; OPC
+                       00 07           ; option length
+                       00 01           ; Family
+                       11 11           ; source mask, scopemask
+                       7f 00 00        ; address
+               HEX_EDNSDATA_END
+               ns.example.com.         IN      A       1.2.3.4
+               ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854}
+ENTRY_END
+
+STEP 11 QUERY
+
+ENTRY_BEGIN
+       HEX_ANSWER_BEGIN;
+               00 00 00 00 00 01 00 00         ;ID 0, no RD
+               00 00 00 01 03 77 77 77         ; www.example.com A? (DO)
+               07 65 78 61 6d 70 6c 65
+               03 63 6f 6d 00 00 01 00
+               01 00 00 29 10 00 00 00
+               80 00 00 0b
+
+               00 08 00 07                                     ; OPC, optlen
+               00 01 12 00                                     ; ip4, scope 18, source 0
+               7f 00 00                                        ;127.0.0.0/18
+       HEX_ANSWER_END
+ENTRY_END
+
+STEP 20 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ednsdata
+       REPLY QR RA AD NOERROR
+       SECTION QUESTION
+               www.example.com. IN A
+       SECTION ANSWER
+               www.example.com. IN A   10.20.30.40
+               www.example.com.        3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854}
+       SECTION AUTHORITY
+               example.com.    IN NS   ns.example.com.
+               example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+                                               ; client is 127.0.0.1
+                       00 08           ; OPC
+                       00 07           ; option length
+                       00 01           ; Family
+                       12 11           ; source mask, scopemask
+                       7f 00 00        ; address
+               HEX_EDNSDATA_END
+               ns.example.com.         IN      A       1.2.3.4
+               ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854}
+ENTRY_END
+
+; update the cache entry
+STEP 30 QUERY
+ENTRY_BEGIN
+       HEX_ANSWER_BEGIN;
+               00 00 01 00 00 01 00 00         ;ID 0
+               00 00 00 01 03 77 77 77         ; www.example.com A? (DO)
+               07 65 78 61 6d 70 6c 65
+               03 63 6f 6d 00 00 01 00
+               01 00 00 29 10 00 00 00
+               80 00 00 0b
+
+               00 08 00 07                                     ; OPC, optlen
+               00 01 11 00                                     ; ip4, scope 17, source 0
+               7f 03 00                                        ;127.3.0.0/17
+       HEX_ANSWER_END
+ENTRY_END
+
+STEP 40 CHECK_ANSWER
+ENTRY_BEGIN
+       MATCH all ednsdata
+       REPLY QR RD RA AD NOERROR
+       SECTION QUESTION
+               www.example.com. IN A
+       SECTION ANSWER
+               www.example.com. IN A   10.20.30.43
+               www.example.com.        3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. AFC5G+z0jWt132hDuTIFOva59cZ7MTd+ex/osuoiQhIIuWFAr9xoZz8=
+       SECTION AUTHORITY
+               example.com.    IN NS   ns.example.com.
+               example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+       SECTION ADDITIONAL
+               HEX_EDNSDATA_BEGIN
+                                               ; client is 127.3.0.1
+                       00 08           ; OPC
+                       00 07           ; option length
+                       00 01           ; Family
+                       11 11           ; source mask, scopemask
+                       7f 03 00        ; address
+               HEX_EDNSDATA_END
+               ns.example.com.         IN      A       1.2.3.4
+               ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854}
+ENTRY_END
+
+SCENARIO_END