- Re-cloned zonemaster-ldns with --recurse-submodules so the bundled ldns C library source (including Changelog and configure.ac) is present - Added autoconf, automake, libtool to Dockerfile.backend ldns-build stage so libtoolize + autoreconf can generate ldns/configure during make Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
844 lines
16 KiB
Python
Executable File
844 lines
16 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
#
|
|
# ldns_buffer testing script.
|
|
#
|
|
# Do not use constructs that differ between Python 2 and 3.
|
|
# Use write on stdout or stderr.
|
|
#
|
|
|
|
|
|
import ldns
|
|
import sys
|
|
import os
|
|
import inspect
|
|
|
|
|
|
class_name = "ldns_buffer"
|
|
method_name = None
|
|
error_detected = False
|
|
|
|
|
|
def set_error():
|
|
"""
|
|
Writes an error message and sets error flag.
|
|
"""
|
|
global class_name
|
|
global method_name
|
|
global error_detected
|
|
error_detected = True
|
|
sys.stderr.write("(line %d): malfunctioning method %s.\n" % \
|
|
(inspect.currentframe().f_back.f_lineno, method_name))
|
|
|
|
|
|
# Buffer creation.
|
|
capacity = 1024
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.__init__()"
|
|
try:
|
|
buf = ldns.ldns_buffer(1024)
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.__str__()"
|
|
buf.printf("abcedf")
|
|
try:
|
|
string = buf.__str__()
|
|
except:
|
|
set_error()
|
|
if not isinstance(string, str):
|
|
# Should be string.
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.at()"
|
|
try:
|
|
ret = buf.at(512)
|
|
except:
|
|
set_error()
|
|
try:
|
|
# Must raise TypeError.
|
|
ret = buf.at("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.available()"
|
|
try:
|
|
ret = buf.available(capacity)
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, bool):
|
|
# Should be bool.
|
|
set_error()
|
|
if not buf.available(capacity):
|
|
# Should return True.
|
|
set_error()
|
|
if buf.available(capacity + 1):
|
|
# Should return False.
|
|
set_error()
|
|
try:
|
|
# Must raise TypeError.
|
|
ret = buf.available("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# # Must raise ValueError.
|
|
# ret = buf.available("")
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.available_at()"
|
|
try:
|
|
ret = buf.available_at(512, capacity - 512)
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, bool):
|
|
# Should be bool.
|
|
set_error()
|
|
if not buf.available_at(512, capacity - 512):
|
|
# Should return True.
|
|
set_error()
|
|
if buf.available_at(512, capacity - 512 + 1):
|
|
# Should return False.
|
|
set_error()
|
|
try:
|
|
# Must raise TypeError.
|
|
ret = buf.available_at("", 1)
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
try:
|
|
# Must raise TypeError.
|
|
ret = buf.available_at(1, "")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# # Must raise ValueError.
|
|
# ret = buf.available_at(-1, 512)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
# try:
|
|
# # Must raise ValueError.
|
|
# ret = buf.available_at(512, -1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.begin()"
|
|
try:
|
|
ret = buf.begin()
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.capacity()"
|
|
try:
|
|
ret = buf.capacity()
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
# Should be int.
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.clear()"
|
|
try:
|
|
buf.clear()
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.copy()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
# buf2 = ldns.ldns_buffer(10)
|
|
# buf2.printf("abcdef")
|
|
# try:
|
|
# buf.copy(buf2)
|
|
# print buf.capacity()
|
|
# print buf2.capacity()
|
|
# except:
|
|
# set_error()
|
|
# buf.printf("2")
|
|
# print buf
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.current()"
|
|
try:
|
|
ret = buf.current()
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.end()"
|
|
try:
|
|
ret = buf.end()
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.export()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.flip()"
|
|
buf.printf("abcdef")
|
|
try:
|
|
buf.flip()
|
|
except:
|
|
set_error()
|
|
# if buf.remaining() != capacity:
|
|
# # Should be at beginning.
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.getc()"
|
|
buf.printf("a")
|
|
buf.rewind()
|
|
try:
|
|
ret = buf.getc()
|
|
except:
|
|
set_error()
|
|
if ret != ord("a"):
|
|
set_error()
|
|
# Test return value for -1
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.invariant()"
|
|
try:
|
|
buf.invariant()
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.limit()"
|
|
try:
|
|
ret = buf.limit()
|
|
except:
|
|
set_error()
|
|
if ret != capacity:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.position()"
|
|
try:
|
|
ret = buf.position()
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.printf()"
|
|
try:
|
|
ret = buf.printf("abcdef")
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, int):
|
|
set_error()
|
|
try:
|
|
ret = buf.printf(10)
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_at()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u16()"
|
|
buf.printf("aac")
|
|
buf.rewind()
|
|
try:
|
|
ret = buf.read_u16()
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != (ord("a") * 0x0101):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u16_at()"
|
|
buf.printf("abbc")
|
|
try:
|
|
ret = buf.read_u16_at(1)
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != (ord("b") * 0x0101):
|
|
set_error()
|
|
try:
|
|
ret = buf.read_u16_at("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf.read_u16_at(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u32()"
|
|
buf.printf("aaaac")
|
|
buf.rewind()
|
|
try:
|
|
ret = buf.read_u32()
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, int):
|
|
set_error()
|
|
if ret != (ord("a") * 0x01010101):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u32_at()"
|
|
buf.printf("abbbbc")
|
|
try:
|
|
ret = buf.read_u32_at(1)
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, int):
|
|
set_error()
|
|
if ret != (ord("b") * 0x01010101):
|
|
set_error()
|
|
try:
|
|
ret = buf.read_u32_at("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf.read_u32_at(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u8()"
|
|
buf.printf("ac")
|
|
buf.rewind()
|
|
try:
|
|
ret = buf.read_u8()
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != ord("a"):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.read_u8_at()"
|
|
buf.printf("abc")
|
|
try:
|
|
ret = buf.read_u8_at(1)
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != ord("b"):
|
|
set_error()
|
|
try:
|
|
ret = buf.read_u8_at("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf.read_u8_at(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.remaining()"
|
|
buf.printf("abcdef")
|
|
try:
|
|
ret = buf.remaining()
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != (capacity - 6):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.remaining_at()"
|
|
buf.printf("abcdef")
|
|
try:
|
|
ret = buf.remaining_at(1)
|
|
except:
|
|
set_error()
|
|
if (not isinstance(ret, int)) and (not isinstance(ret, long)):
|
|
set_error()
|
|
if ret != (capacity - 1):
|
|
set_error()
|
|
try:
|
|
ret = buf.remaining_at("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf.remaining_at(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.reserve()"
|
|
buf2 = ldns.ldns_buffer(512)
|
|
try:
|
|
ret = buf2.reserve(1024)
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, bool):
|
|
set_error()
|
|
try:
|
|
ret = buf2.reserve("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf2.reserve(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.rewind()"
|
|
buf.printf("abcdef")
|
|
try:
|
|
buf.rewind()
|
|
except:
|
|
set_error()
|
|
if buf.position() != 0:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.set_capacity()"
|
|
try:
|
|
ret = buf.set_capacity(capacity)
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, bool):
|
|
set_error()
|
|
try:
|
|
ret = buf.set_capacity("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# ret = buf.set_capacity(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.set_limit()"
|
|
try:
|
|
buf.set_limit(0)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.set_limit("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.set_limit(-1)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.set_position()"
|
|
try:
|
|
buf.set_position(0)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.set_position("")
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.set_position(-1)
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.skip()"
|
|
try:
|
|
buf.skip(10)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.skip(-1)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.skip("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.status()"
|
|
try:
|
|
ret = buf.status()
|
|
except:
|
|
set_error()
|
|
# Returned status is an integer.
|
|
if not isinstance(ret, int):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.status_ok()"
|
|
try:
|
|
ret = buf.status_ok()
|
|
except:
|
|
set_error()
|
|
if not isinstance(ret, bool):
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_at()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_string()"
|
|
try:
|
|
buf.write_string("abcdef")
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.write_sring(-1)
|
|
# set_error()
|
|
# except TypeError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
sys.stderr.write("%s not tested for parameter correctness.\n" % \
|
|
(method_name))
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_string_at()"
|
|
sys.stderr.write("%s not tested.\n" % (method_name))
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u16()"
|
|
try:
|
|
buf.write_u16(ord("b") * 0x0101)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u16("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u16_at()"
|
|
buf.printf("a")
|
|
try:
|
|
buf.write_u16_at(1, ord("b") * 0x0101)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u16_at("", ord("b") * 0x0101)
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.write_u16_at(-1, ord("b") * 0x0101)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
try:
|
|
buf.write_u16_at(1, "")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u32()"
|
|
try:
|
|
buf.write_u32(ord("b") * 0x01010101)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u32("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u32_at()"
|
|
buf.printf("a")
|
|
try:
|
|
buf.write_u32_at(1, ord("b") * 0x01010101)
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u32_at("", ord("b") * 0x01010101)
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.write_u32_at(-1, ord("b") * 0x01010101)
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
try:
|
|
buf.write_u32_at(1, "")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u8()"
|
|
try:
|
|
buf.write_u8(ord("b"))
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u8("")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
buf.clear()
|
|
|
|
|
|
#if not error_detected:
|
|
if True:
|
|
method_name = "ldns_buffer.write_u8_at()"
|
|
buf.printf("a")
|
|
try:
|
|
buf.write_u8_at(1, ord("b"))
|
|
except:
|
|
set_error()
|
|
try:
|
|
buf.write_u8_at("", ord("b"))
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
# try:
|
|
# buf.write_u8_at(-1, ord("b"))
|
|
# set_error()
|
|
# except ValueError:
|
|
# pass
|
|
# except:
|
|
# set_error()
|
|
try:
|
|
buf.write_u8_at(1, "")
|
|
set_error()
|
|
except TypeError:
|
|
pass
|
|
except:
|
|
set_error()
|
|
|
|
|
|
if not error_detected:
|
|
sys.stdout.write("%s: passed.\n" % (os.path.basename(__file__)))
|
|
else:
|
|
sys.stdout.write("%s: errors detected.\n" % (os.path.basename(__file__)))
|
|
sys.exit(1)
|