function will simply be removed.
'''
- HARDCODED_DATASRC_CLASS = RRClass.IN()
+ HARDCODED_DATASRC_CLASS = RRClass.IN
file, is_default = cc_session.get_remote_config_value("Auth",
"database_file")
# See xfrout.py:get_db_file() for this trick:
READ_ZONE_DB_FILE = TESTDATA_PATH + "rwtest.sqlite3" # original, to be copied
TEST_ZONE_NAME = Name('example.org')
TEST_ZONE_NAME_STR = TEST_ZONE_NAME.to_text()
-UPDATE_RRTYPE = RRType.SOA()
+UPDATE_RRTYPE = RRType.SOA
TEST_QID = 5353 # arbitrary chosen
-TEST_RRCLASS = RRClass.IN()
+TEST_RRCLASS = RRClass.IN
TEST_RRCLASS_STR = TEST_RRCLASS.to_text()
TEST_SERVER6 = ('2001:db8::53', 53, 0, 0)
TEST_CLIENT6 = ('2001:db8::1', 53000, 0, 0)
# By default (in our faked config) it should be derived from the
# test data source
rrclass, datasrc_client = self.ddns_server._datasrc_info
- self.assertEqual(RRClass.IN(), rrclass)
+ self.assertEqual(RRClass.IN, rrclass)
self.assertEqual(DataSourceClient.SUCCESS,
datasrc_client.find_zone(Name('example.org'))[0])
{'database_file': './notexistentdir/somedb.sqlite3'}
self.__cc_session.add_remote_config_by_name('Auth')
rrclass, datasrc_client = self.ddns_server._datasrc_info
- self.assertEqual(RRClass.IN(), rrclass)
+ self.assertEqual(RRClass.IN, rrclass)
self.assertRaises(isc.datasrc.Error,
datasrc_client.find_zone, Name('example.org'))
self.__faked_result = UPDATE_DROP
# Put the same RR twice in the prerequisite section. We should see
# them as separate RRs.
- dummy_record = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS(),
+ dummy_record = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS,
RRTTL(0))
- dummy_record.add_rdata(Rdata(RRType.NS(), TEST_RRCLASS, "ns.example"))
+ dummy_record.add_rdata(Rdata(RRType.NS, TEST_RRCLASS, "ns.example"))
self.server.handle_request((self.__sock, TEST_SERVER6, TEST_CLIENT6,
create_msg(prereq=[dummy_record,
dummy_record])))
self._zone_class = RRClass(options.zone_class)
except isc.dns.InvalidRRClass as ex:
raise BadArgument('Invalid zone class: ' + str(ex))
- if self._zone_class != RRClass.IN():
+ if self._zone_class != RRClass.IN:
raise BadArgument("RR class is not supported: " +
str(self._zone_class))
self.assertEqual(DATASRC_CONFIG, self.__runner._datasrc_config)
self.assertEqual('sqlite3', self.__runner._datasrc_type) # default
self.assertEqual(10000, self.__runner._report_interval) # default
- self.assertEqual(RRClass.IN(), self.__runner._zone_class) # default
+ self.assertEqual(RRClass.IN, self.__runner._zone_class) # default
self.assertEqual('INFO', self.__runner._log_severity) # default
self.assertEqual(0, self.__runner._log_debuglevel)
'memory')
def __common_load_setup(self):
- self.__runner._zone_class = RRClass.IN()
+ self.__runner._zone_class = RRClass.IN
self.__runner._zone_name = TEST_ZONE_NAME
self.__runner._zone_file = NEW_ZONE_TXT_FILE
self.__runner._datasrc_type = 'sqlite3'
self.assertEqual(client.NOTFOUND, result)
return
self.assertEqual(client.SUCCESS, result)
- result, rrset, _ = finder.find(zone_name, RRType.SOA())
+ result, rrset, _ = finder.find(zone_name, RRType.SOA)
if soa_txt:
self.assertEqual(finder.SUCCESS, result)
self.assertEqual(soa_txt, rrset.to_text())
#
TEST_ZONE_NAME_STR = "example.com."
TEST_ZONE_NAME = Name(TEST_ZONE_NAME_STR)
-TEST_RRCLASS = RRClass.IN()
+TEST_RRCLASS = RRClass.IN
TEST_RRCLASS_STR = 'IN'
TEST_DB_FILE = 'db_file'
TEST_MASTER_IPV4_ADDRESS = '127.0.0.1'
TSIG_KEY = TSIGKey("example.com:SFuWd/q99SzF8Yzd1QbB9g==")
# SOA intended to be used for the new SOA as a result of transfer.
-soa_rdata = Rdata(RRType.SOA(), TEST_RRCLASS,
+soa_rdata = Rdata(RRType.SOA, TEST_RRCLASS,
'master.example.com. admin.example.com. ' +
'1234 3600 1800 2419200 7200')
-soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA(), RRTTL(3600))
+soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA, RRTTL(3600))
soa_rrset.add_rdata(soa_rdata)
# SOA intended to be used for the current SOA at the secondary side.
# Note that its serial is smaller than that of soa_rdata.
-begin_soa_rdata = Rdata(RRType.SOA(), TEST_RRCLASS,
+begin_soa_rdata = Rdata(RRType.SOA, TEST_RRCLASS,
'master.example.com. admin.example.com. ' +
'1230 3600 1800 2419200 7200')
-begin_soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA(), RRTTL(3600))
+begin_soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA, RRTTL(3600))
begin_soa_rrset.add_rdata(begin_soa_rdata)
-example_axfr_question = Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.AXFR())
-example_soa_question = Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA())
+example_axfr_question = Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.AXFR)
+example_soa_question = Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA)
default_questions = [example_axfr_question]
default_answers = [soa_rrset]
zone names.
'''
- if name == TEST_ZONE_NAME and rrtype == RRType.SOA():
+ if name == TEST_ZONE_NAME and rrtype == RRType.SOA:
return (ZoneFinder.SUCCESS, begin_soa_rrset, 0)
if name == Name('no-soa.example'):
return (ZoneFinder.NXDOMAIN, None, 0)
if name == Name('dup-soa.example'):
- dup_soa_rrset = RRset(name, TEST_RRCLASS, RRType.SOA(), RRTTL(0))
+ dup_soa_rrset = RRset(name, TEST_RRCLASS, RRType.SOA, RRTTL(0))
dup_soa_rrset.add_rdata(begin_soa_rdata)
dup_soa_rrset.add_rdata(soa_rdata)
return (ZoneFinder.SUCCESS, dup_soa_rrset, 0)
TEST_RRCLASS, None, threading.Event(),
TEST_MASTER_IPV4_ADDRINFO)
self.conn.init_socket()
- self.begin_soa = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA(),
+ self.begin_soa = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA,
RRTTL(3600))
- self.begin_soa.add_rdata(Rdata(RRType.SOA(), TEST_RRCLASS,
+ self.begin_soa.add_rdata(Rdata(RRType.SOA, TEST_RRCLASS,
'm. r. 1230 0 0 0 0'))
- self.ns_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS(),
+ self.ns_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS,
RRTTL(3600))
- self.ns_rrset.add_rdata(Rdata(RRType.NS(), TEST_RRCLASS,
+ self.ns_rrset.add_rdata(Rdata(RRType.NS, TEST_RRCLASS,
'ns.example.com'))
- self.a_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.A(),
+ self.a_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.A,
RRTTL(3600))
- self.a_rrset.add_rdata(Rdata(RRType.A(), TEST_RRCLASS, '192.0.2.1'))
+ self.a_rrset.add_rdata(Rdata(RRType.A, TEST_RRCLASS, '192.0.2.1'))
self.conn._datasrc_client = MockDataSourceClient()
self.conn._diff = Diff(self.conn._datasrc_client, TEST_ZONE_NAME)
self.ns_rrset)
def test_handle_ixfr_uptodate(self):
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
self.conn._request_serial = isc.dns.Serial(1234) # same as soa_rrset
self.assertTrue(self.state.handle_rr(self.conn, soa_rrset))
self.assertEqual(type(XfrinIXFRUptodate()),
type(self.conn.get_xfrstate()))
def test_handle_ixfr_uptodate2(self):
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
self.conn._request_serial = isc.dns.Serial(1235) # > soa_rrset
self.assertTrue(self.state.handle_rr(self.conn, soa_rrset))
self.assertEqual(type(XfrinIXFRUptodate()),
def test_handle_ixfr_uptodate3(self):
# Similar to the previous case, but checking serial number arithmetic
# comparison
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
self.conn._request_serial = isc.dns.Serial(0xffffffff)
self.assertTrue(self.state.handle_rr(self.conn, soa_rrset))
self.assertEqual(type(XfrinFirstData()),
def test_handle_axfr_uptodate(self):
# "request serial" should matter only for IXFR
- self.conn._request_type = RRType.AXFR()
+ self.conn._request_type = RRType.AXFR
self.conn._request_serial = isc.dns.Serial(1234) # same as soa_rrset
self.assertTrue(self.state.handle_rr(self.conn, soa_rrset))
self.assertEqual(type(XfrinFirstData()),
def setUp(self):
super().setUp()
self.state = XfrinFirstData()
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
# arbitrary chosen serial < 1234:
self.conn._request_serial = isc.dns.Serial(1230)
self.conn._diff = None # should be replaced in the AXFR case
def test_handle_ixfr_begin_soa(self):
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
self.assertFalse(self.state.handle_rr(self.conn, self.begin_soa))
self.assertEqual(type(XfrinIXFRDeleteSOA()),
type(self.conn.get_xfrstate()))
def test_handle_axfr(self):
# If the original type is AXFR, other conditions aren't considered,
# and AXFR processing will continue
- self.conn._request_type = RRType.AXFR()
+ self.conn._request_type = RRType.AXFR
self.assertFalse(self.state.handle_rr(self.conn, self.begin_soa))
self.assertEqual(type(XfrinAXFR()), type(self.conn.get_xfrstate()))
# First, push a starting SOA inside. This should be OK, nothing checked
# yet.
self.state.handle_rr(self.conn, self.begin_soa)
- end_soa_rdata = Rdata(RRType.SOA(), TEST_RRCLASS,
+ end_soa_rdata = Rdata(RRType.SOA, TEST_RRCLASS,
'm. r. 1234 0 0 0 0')
- end_soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA(),
+ end_soa_rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA,
RRTTL(3600))
end_soa_rrset.add_rdata(end_soa_rdata)
# This would try to finish up. But the TSIG pretends not everything is
self.conn.reply_data += bogus_data
def _create_a(self, address):
- rrset = RRset(Name('a.example.com'), TEST_RRCLASS, RRType.A(),
+ rrset = RRset(Name('a.example.com'), TEST_RRCLASS, RRType.A,
RRTTL(3600))
- rrset.add_rdata(Rdata(RRType.A(), TEST_RRCLASS, address))
+ rrset.add_rdata(Rdata(RRType.A, TEST_RRCLASS, address))
return rrset
def _create_soa(self, serial):
- rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA(),
+ rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.SOA,
RRTTL(3600))
rdata_str = 'm. r. ' + serial + ' 3600 1800 2419200 7200'
- rrset.add_rdata(Rdata(RRType.SOA(), TEST_RRCLASS, rdata_str))
+ rrset.add_rdata(Rdata(RRType.SOA, TEST_RRCLASS, rdata_str))
return rrset
def _create_ns(self, nsname='ns.'+TEST_ZONE_NAME_STR):
- rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS(), RRTTL(3600))
- rrset.add_rdata(Rdata(RRType.NS(), TEST_RRCLASS, nsname))
+ rrset = RRset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.NS, RRTTL(3600))
+ rrset.add_rdata(Rdata(RRType.NS, TEST_RRCLASS, nsname))
return rrset
def _set_test_zone(self, zone_name):
c.close()
def test_init_chclass(self):
- c = MockXfrinConnection({}, TEST_ZONE_NAME, RRClass.CH(), None,
+ c = MockXfrinConnection({}, TEST_ZONE_NAME, RRClass.CH, None,
threading.Event(), TEST_MASTER_IPV4_ADDRINFO)
c.init_socket()
- axfrmsg = c._create_query(RRType.AXFR())
+ axfrmsg = c._create_query(RRType.AXFR)
self.assertEqual(axfrmsg.get_question()[0].get_class(),
- RRClass.CH())
+ RRClass.CH)
c.close()
def test_create_query(self):
# Actual tests start here
# SOA query
- msg = self.conn._create_query(RRType.SOA())
- check_query(RRType.SOA(), None)
+ msg = self.conn._create_query(RRType.SOA)
+ check_query(RRType.SOA, None)
# AXFR query
- msg = self.conn._create_query(RRType.AXFR())
- check_query(RRType.AXFR(), None)
+ msg = self.conn._create_query(RRType.AXFR)
+ check_query(RRType.AXFR, None)
# IXFR query
- msg = self.conn._create_query(RRType.IXFR())
- check_query(RRType.IXFR(), begin_soa_rrset)
+ msg = self.conn._create_query(RRType.IXFR)
+ check_query(RRType.IXFR, begin_soa_rrset)
self.assertEqual(1230, self.conn._request_serial.get_value())
def test_create_ixfr_query_fail(self):
self._set_test_zone(Name('no-such-zone.example'))
self.assertRaises(XfrinException, self.conn._create_query,
- RRType.IXFR())
+ RRType.IXFR)
self._set_test_zone(Name('partial-match-zone.example'))
self.assertRaises(XfrinException, self.conn._create_query,
- RRType.IXFR())
+ RRType.IXFR)
self._set_test_zone(Name('no-soa.example'))
self.assertRaises(XfrinException, self.conn._create_query,
- RRType.IXFR())
+ RRType.IXFR)
self._set_test_zone(Name('dup-soa.example'))
self.conn._zone_soa = self.conn._get_zone_soa()
self.assertRaises(XfrinException, self.conn._create_query,
- RRType.IXFR())
+ RRType.IXFR)
def test_send_query(self):
def message_has_tsig(data):
# soa request with tsig
self.conn._tsig_key = TSIG_KEY
- self.conn._send_query(RRType.SOA())
+ self.conn._send_query(RRType.SOA)
self.assertTrue(message_has_tsig(self.conn.query_data[2:]))
# axfr request with tsig
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.assertTrue(message_has_tsig(self.conn.query_data[2:]))
def test_response_with_invalid_msg(self):
def test_response_with_tsigfail(self):
self.conn._tsig_key = TSIG_KEY
# server tsig check fail, return with RCODE 9 (NOTAUTH)
- self.conn._send_query(RRType.SOA())
+ self.conn._send_query(RRType.SOA)
self.conn.reply_data = \
self.conn.create_response_data(rcode=Rcode.NOTAUTH())
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
def test_response_without_end_soa(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data()
# This should result in timeout in the asyncore loop. We emulate
# that situation in recv() by emptying the reply data buffer.
self.conn._handle_xfrin_responses)
def test_response_bad_qid(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(bad_qid=True)
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
self.conn._tsig_key = TSIG_KEY
self.conn._tsig_ctx_creator = \
lambda key: self.__create_mock_tsig(key, TSIGError.BAD_SIG)
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(
rcode=Rcode.SERVFAIL())
# xfrin should check TSIG before other part of incoming message
self.conn._tsig_key = TSIG_KEY
self.conn._tsig_ctx_creator = \
lambda key: self.__create_mock_tsig(key, TSIGError.BAD_KEY)
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(bad_qid=True)
# xfrin should check TSIG before other part of incoming message
# validate log message for XfrinException
self.conn._handle_xfrin_responses)
def test_response_non_response(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(response=False)
self.assertRaises(XfrinException, self.conn._handle_xfrin_responses)
def test_response_error_code(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(
rcode=Rcode.SERVFAIL())
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
def test_response_multi_question(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(
questions=[example_axfr_question, example_axfr_question])
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
def test_response_non_response(self):
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(response = False)
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
self.conn.response_generator = self._create_soa_response_data
self.soa_response_params['questions'] = [Question(Name('example.org'),
TEST_RRCLASS,
- RRType.SOA())]
+ RRType.SOA)]
self.assertRaises(XfrinProtocolError, self.conn._check_soa_serial)
def test_soacheck_question_class_mismatch(self):
self.conn.response_generator = self._create_soa_response_data
self.soa_response_params['questions'] = [Question(TEST_ZONE_NAME,
- RRClass.CH(),
- RRType.SOA())]
+ RRClass.CH,
+ RRType.SOA)]
self.assertRaises(XfrinProtocolError, self.conn._check_soa_serial)
def test_soacheck_question_type_mismatch(self):
self.conn.response_generator = self._create_soa_response_data
self.soa_response_params['questions'] = [Question(TEST_ZONE_NAME,
TEST_RRCLASS,
- RRType.AAAA())]
+ RRType.AAAA)]
self.assertRaises(XfrinProtocolError, self.conn._check_soa_serial)
def test_soacheck_no_soa(self):
def test_soacheck_soa_class_mismatch(self):
self.conn.response_generator = self._create_soa_response_data
- soa = RRset(TEST_ZONE_NAME, RRClass.CH(), RRType.SOA(), RRTTL(0))
- soa.add_rdata(Rdata(RRType.SOA(), RRClass.CH(), 'm. r. 1234 0 0 0 0'))
+ soa = RRset(TEST_ZONE_NAME, RRClass.CH, RRType.SOA, RRTTL(0))
+ soa.add_rdata(Rdata(RRType.SOA, RRClass.CH, 'm. r. 1234 0 0 0 0'))
self.soa_response_params['answers'] = [soa]
self.assertRaises(XfrinProtocolError, self.conn._check_soa_serial)
def test_response_shutdown(self):
self.conn.response_generator = self._create_normal_response_data
self.conn._shutdown_event.set()
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.assertRaises(XfrinException, self.conn._handle_xfrin_responses)
def test_response_timeout(self):
def test_response_bad_message(self):
self.conn.response_generator = self._create_broken_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.assertRaises(Exception, self.conn._handle_xfrin_responses)
def test_axfr_response(self):
# A simple normal case: AXFR consists of SOA, NS, then trailing SOA.
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
self._create_ns(),
soa_rrset]
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
'''
ns_rr = self._create_ns()
a_rr = self._create_a('192.0.2.1')
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.AXFR())],
+ RRType.AXFR)],
# begin serial=1230, end serial=1234. end will be used.
answers=[begin_soa_rrset, ns_rr, a_rr, soa_rrset])
self.conn._handle_xfrin_responses()
'''
ns_rr = self._create_ns()
a_rr = self._create_a('192.0.2.1')
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.AXFR())],
+ RRType.AXFR)],
answers=[soa_rrset, ns_rr, a_rr, soa_rrset, a_rr])
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
'''
self.axfr_response_params['question_1st'] = \
- [Question(Name('mismatch.example'), TEST_RRCLASS, RRType.AXFR())]
+ [Question(Name('mismatch.example'), TEST_RRCLASS, RRType.AXFR)]
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
'''
self.axfr_response_params['question_1st'] = \
- [Question(TEST_ZONE_NAME, RRClass.CH(), RRType.AXFR())]
+ [Question(TEST_ZONE_NAME, RRClass.CH, RRType.AXFR)]
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
'''
# returning IXFR in question to AXFR query
self.axfr_response_params['question_1st'] = \
- [Question(TEST_ZONE_NAME, RRClass.CH(), RRType.IXFR())]
+ [Question(TEST_ZONE_NAME, RRClass.CH, RRType.IXFR)]
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
'''
self.axfr_response_params['question_1st'] = []
self.conn.response_generator = self._create_normal_response_data
- self.conn._send_query(RRType.AXFR())
+ self.conn._send_query(RRType.AXFR)
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
check_diffs(self.assertEqual,
super().setUp()
self.conn._query_id = self.conn.qid = 1035
self.conn._request_serial = isc.dns.Serial(1230)
- self.conn._request_type = RRType.IXFR()
+ self.conn._request_type = RRType.IXFR
self.conn._datasrc_client = MockDataSourceClient()
XfrinInitialSOA().set_xfrstate(self.conn, XfrinInitialSOA())
'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset, soa_rrset])
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinIXFREnd()), type(self.conn.get_xfrstate()))
'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset,
# removing one A in serial 1230
begin_soa_rrset, self._create_a('192.0.2.1'),
'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset])
self.conn.reply_data += self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset])
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinIXFREnd()), type(self.conn.get_xfrstate()))
def test_ixfr_response_uptodate(self):
'''IXFR response indicates the zone is new enough'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[begin_soa_rrset])
self.assertRaises(XfrinZoneUptodate, self.conn._handle_xfrin_responses)
# no diffs should have been committed
'''
# SOA sequence is out-of-sync
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset,
self._create_soa('1235')])
self.assertRaises(XfrinProtocolError,
specification, but it is how BIND 9 works and we do the same.
'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset, soa_rrset,
self._create_a('192.0.2.1')])
self.assertRaises(XfrinProtocolError,
'''
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[begin_soa_rrset, soa_rrset])
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
ns_rr = self._create_ns()
a_rr = self._create_a('192.0.2.1')
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, ns_rr, a_rr, soa_rrset])
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
ns_rr = self._create_ns()
a_rr = self._create_a('192.0.2.1')
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, ns_rr, a_rr, begin_soa_rrset])
self.conn._handle_xfrin_responses()
self.assertEqual(type(XfrinAXFREnd()), type(self.conn.get_xfrstate()))
ns_rr = self._create_ns()
a_rr = self._create_a('192.0.2.1')
self.conn.reply_data = self.conn.create_response_data(
- questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR())],
+ questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS, RRType.IXFR)],
answers=[soa_rrset, ns_rr, a_rr, soa_rrset, a_rr])
self.assertRaises(XfrinProtocolError,
self.conn._handle_xfrin_responses)
def create_ixfr_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.IXFR())],
+ RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset, soa_rrset])
self.conn.response_generator = create_ixfr_response
- self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR))
# Check some details of the IXFR protocol processing
self.assertEqual(type(XfrinIXFREnd()), type(self.conn.get_xfrstate()))
qmsg.from_wire(qdata, len(qdata))
self.assertEqual(1, qmsg.get_rr_count(Message.SECTION_QUESTION))
self.assertEqual(TEST_ZONE_NAME, qmsg.get_question()[0].get_name())
- self.assertEqual(RRType.IXFR(), qmsg.get_question()[0].get_type())
+ self.assertEqual(RRType.IXFR, qmsg.get_question()[0].get_type())
self.assertEqual(1, self.conn._transfer_stats.message_count)
self.assertEqual(0, self.conn._transfer_stats.axfr_rr_count)
def create_ixfr_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.IXFR())],
+ RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset,
self._create_soa('1235')])
self.conn.response_generator = create_ixfr_response
- self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR))
def test_do_xfrin_fail2(self):
'''IXFR fails due to a bogus DNS message.
'''
self._create_broken_response_data()
- self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR))
def test_do_xfrin_uptodate(self):
'''IXFR is (gracefully) aborted because serial is not new
def create_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.IXFR())],
+ RRType.IXFR)],
answers=[begin_soa_rrset])
self.conn.response_generator = create_response
- self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR))
self.assertEqual(1, self.conn._transfer_stats.message_count)
self.assertEqual(0, self.conn._transfer_stats.axfr_rr_count)
def get_zone_serial(self):
result, finder = self.conn._datasrc_client.find_zone(TEST_ZONE_NAME)
self.assertEqual(DataSourceClient.SUCCESS, result)
- result, soa, _ = finder.find(TEST_ZONE_NAME, RRType.SOA())
+ result, soa, _ = finder.find(TEST_ZONE_NAME, RRType.SOA)
self.assertEqual(ZoneFinder.SUCCESS, result)
self.assertEqual(1, soa.get_rdata_count())
return get_soa_serial(soa.get_rdata()[0])
def create_ixfr_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.IXFR())],
+ RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset, soa_rrset])
self.conn.response_generator = create_ixfr_response
# Confirm xfrin succeeds and SOA is updated
self.assertEqual(1230, self.get_zone_serial().get_value())
- self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.IXFR))
self.assertEqual(1234, self.get_zone_serial().get_value())
# Also confirm the corresponding diffs are stored in the diffs table
def create_ixfr_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.IXFR())],
+ RRType.IXFR)],
answers=[soa_rrset, begin_soa_rrset, soa_rrset,
self._create_soa('1235')])
self.conn.response_generator = create_ixfr_response
self.assertEqual(1230, self.get_zone_serial().get_value())
- self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR))
self.assertEqual(1230, self.get_zone_serial().get_value())
def test_do_ixfrin_nozone_sqlite3(self):
self._set_test_zone(Name('nosuchzone.example'))
- self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR()))
+ self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, RRType.IXFR))
# This should fail even before starting state transition
self.assertEqual(None, self.conn.get_xfrstate())
# Confirm xfrin succeeds and SOA is updated, A RR is deleted.
self.assertEqual(1230, self.get_zone_serial().get_value())
self.assertTrue(self.record_exist(Name('dns01.example.com'),
- RRType.A()))
+ RRType.A))
self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, type))
self.assertEqual(1234, self.get_zone_serial().get_value())
self.assertFalse(self.record_exist(Name('dns01.example.com'),
- RRType.A()))
+ RRType.A))
def test_do_ixfrin_axfr_sqlite3(self):
'''AXFR-style IXFR.
'''
- self.axfr_check(RRType.IXFR())
+ self.axfr_check(RRType.IXFR)
def test_do_axfrin_sqlite3(self):
'''AXFR.
'''
- self.axfr_check(RRType.AXFR())
+ self.axfr_check(RRType.AXFR)
def axfr_failure_check(self, type):
'''Similar to the previous two tests, but xfrin fails due to error.
self.assertEqual(1230, self.get_zone_serial().get_value())
self.assertTrue(self.record_exist(Name('dns01.example.com'),
- RRType.A()))
+ RRType.A))
self.assertEqual(XFRIN_FAIL, self.conn.do_xfrin(False, type))
self.assertEqual(1230, self.get_zone_serial().get_value())
self.assertTrue(self.record_exist(Name('dns01.example.com'),
- RRType.A()))
+ RRType.A))
def test_do_xfrin_axfr_sqlite3_fail(self):
'''Failure case for AXFR-style IXFR.
'''
- self.axfr_failure_check(RRType.IXFR())
+ self.axfr_failure_check(RRType.IXFR)
def test_do_axfrin_sqlite3_fail(self):
'''Failure case for AXFR.
'''
- self.axfr_failure_check(RRType.AXFR())
+ self.axfr_failure_check(RRType.AXFR)
def test_do_axfrin_nozone_sqlite3(self):
'''AXFR test with an empty SQLite3 DB file, thus no target zone there.
def create_response():
self.conn.reply_data = self.conn.create_response_data(
questions=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.AXFR())],
+ RRType.AXFR)],
answers=[soa_rrset, self._create_ns(), soa_rrset])
self.conn.response_generator = create_response
self._set_test_zone(Name('example.com'))
- self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.AXFR()))
+ self.assertEqual(XFRIN_OK, self.conn.do_xfrin(False, RRType.AXFR))
self.assertEqual(type(XfrinAXFREnd()),
type(self.conn.get_xfrstate()))
self.assertEqual(1234, self.get_zone_serial().get_value())
self.assertFalse(self.record_exist(Name('dns01.example.com'),
- RRType.A()))
+ RRType.A))
class TestXfrinRecorder(unittest.TestCase):
def setUp(self):
# Normal, successful case. We only check that things are cleaned up
# at the tearDown time.
process_xfrin(self, self, TEST_ZONE_NAME, TEST_RRCLASS, None, None,
- self.master, False, None, RRType.AXFR(),
+ self.master, False, None, RRType.AXFR,
self.create_xfrinconn)
def test_process_xfrin_exception_on_connect(self):
# cleaned up.
self.do_raise_on_connect = True
process_xfrin(self, self, TEST_ZONE_NAME, TEST_RRCLASS, None, None,
- self.master, False, None, RRType.AXFR(),
+ self.master, False, None, RRType.AXFR,
self.create_xfrinconn)
def test_process_xfrin_exception_on_close(self):
self.do_raise_on_connect = True
self.do_raise_on_close = True
process_xfrin(self, self, TEST_ZONE_NAME, TEST_RRCLASS, None, None,
- self.master, False, None, RRType.AXFR(),
+ self.master, False, None, RRType.AXFR,
self.create_xfrinconn)
def test_process_xfrin_exception_on_publish(self):
# everything must still be cleaned up.
self.do_raise_on_publish = True
process_xfrin(self, self, TEST_ZONE_NAME, TEST_RRCLASS, None, None,
- self.master, False, None, RRType.AXFR(),
+ self.master, False, None, RRType.AXFR,
self.create_xfrinconn)
class TestXfrin(unittest.TestCase):
def test_parse_cmd_params_chclass(self):
self.args['zone_class'] = 'CH'
- self.assertEqual(self._do_parse_zone_name_class()[1], RRClass.CH())
+ self.assertEqual(self._do_parse_zone_name_class()[1], RRClass.CH)
def test_parse_cmd_params_bogusclass(self):
self.args['zone_class'] = 'XXX'
self.assertEqual(self.args['master'], self.xfr.xfrin_started_master_addr)
self.assertEqual(int(self.args['port']), self.xfr.xfrin_started_master_port)
# By default we use AXFR (for now)
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_retransfer_short_command1(self):
# try it when only specifying the zone name (of unknown zone)
self.assertEqual(int(TEST_MASTER_PORT),
self.xfr.xfrin_started_master_port)
# By default we use AXFR (for now)
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_notify(self):
# at this level, refresh is no different than retransfer.
self.xfr._max_transfers_in)
for zone_config in config_given['zones']:
zone_name = zone_config['name']
- zone_info = self.xfr._get_zone_info(Name(zone_name), RRClass.IN())
+ zone_info = self.xfr._get_zone_info(Name(zone_name), RRClass.IN)
self.assertEqual(str(zone_info.master_addr), zone_config['master_addr'])
self.assertEqual(zone_info.master_port, zone_config['master_port'])
if 'tsig_key' in zone_config:
def test_command_handler_retransfer_ixfr_enabled(self):
# If IXFR is explicitly enabled in config, IXFR will be used
self.common_ixfr_setup('retransfer', True)
- self.assertEqual(RRType.IXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.IXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_refresh_ixfr_enabled(self):
# Same for refresh
self.common_ixfr_setup('refresh', True)
- self.assertEqual(RRType.IXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.IXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_retransfer_with_tsig(self):
self.common_ixfr_setup('retransfer', False, 'example.com.key')
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_retransfer_with_tsig_bad_key(self):
# bad keys should not reach xfrin, but should they somehow,
def test_command_handler_refresh_with_tsig(self):
self.common_ixfr_setup('refresh', False, 'example.com.key')
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_refresh_with_tsig_bad_key(self):
# bad keys should not reach xfrin, but should they somehow,
# Similar to the previous case, but explicitly disabled. AXFR should
# be used.
self.common_ixfr_setup('retransfer', False)
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
def test_command_handler_refresh_ixfr_disabled(self):
# Same for refresh
self.common_ixfr_setup('refresh', False)
- self.assertEqual(RRType.AXFR(), self.xfr.xfrin_started_request_type)
+ self.assertEqual(RRType.AXFR, self.xfr.xfrin_started_request_type)
class TestXfrinMemoryZones(unittest.TestCase):
def setUp(self):
self.__rets = rets
published = rets[-1]
xfrin.process_xfrin(self, XfrinRecorder(), Name("example.org."),
- RRClass.IN(), None, None, None, True, None,
+ RRClass.IN, None, None, None, True, None,
request_type, self.__get_connection)
self.assertEqual([], self.__rets)
self.assertEqual(transfers, self.__transfers)
"""
Everything OK the first time, over IXFR.
"""
- self.__do_test([XFRIN_OK], [RRType.IXFR()], RRType.IXFR())
+ self.__do_test([XFRIN_OK], [RRType.IXFR], RRType.IXFR)
# Check there was loadzone command
self.assertTrue(self._send_cc_session.send_called)
self.assertTrue(self._send_cc_session.send_called_correctly)
"""
Everything OK the first time, over AXFR.
"""
- self.__do_test([XFRIN_OK], [RRType.AXFR()], RRType.AXFR())
+ self.__do_test([XFRIN_OK], [RRType.AXFR], RRType.AXFR)
def test_axfr_fail(self):
"""
to fail on AXFR, but succeed on IXFR and we didn't use IXFR in the first
place for some reason.
"""
- self.__do_test([XFRIN_FAIL], [RRType.AXFR()], RRType.AXFR())
+ self.__do_test([XFRIN_FAIL], [RRType.AXFR], RRType.AXFR)
def test_ixfr_fallback(self):
"""
The transfer fails over IXFR, but suceeds over AXFR. It should fall back
to it and say everything is OK.
"""
- self.__do_test([XFRIN_FAIL, XFRIN_OK], [RRType.IXFR(), RRType.AXFR()],
- RRType.IXFR())
+ self.__do_test([XFRIN_FAIL, XFRIN_OK], [RRType.IXFR, RRType.AXFR],
+ RRType.IXFR)
def test_ixfr_fail(self):
"""
(only once) and should try both before giving up.
"""
self.__do_test([XFRIN_FAIL, XFRIN_FAIL],
- [RRType.IXFR(), RRType.AXFR()], RRType.IXFR())
+ [RRType.IXFR, RRType.AXFR], RRType.IXFR)
def test_send_loadzone(self):
"""
Check the loadzone command is sent after successful transfer.
"""
- self.__do_test([XFRIN_OK], [RRType.IXFR()], RRType.IXFR())
+ self.__do_test([XFRIN_OK], [RRType.IXFR], RRType.IXFR)
self.assertTrue(self._send_cc_session.send_called)
self.assertTrue(self._send_cc_session.send_called_correctly)
self.assertTrue(self._send_cc_session.recv_called)
# (TODO: have similar support to get default values for command
# arguments as we do for config options)
DEFAULT_MASTER_PORT = 53
-DEFAULT_ZONE_CLASS = RRClass.IN()
+DEFAULT_ZONE_CLASS = RRClass.IN
__version__ = 'BIND10'
"""If the given argument is a string: checks if the given class is
a valid one, and returns an RRClass object if so.
Raises XfrinZoneInfoException if not.
- If it is None, this function returns the default RRClass.IN()"""
+ If it is None, this function returns the default RRClass.IN"""
if zone_class_str is None:
return DEFAULT_ZONE_CLASS
try:
class XfrinInitialSOA(XfrinState):
def handle_rr(self, conn, rr):
- if rr.get_type() != RRType.SOA():
+ if rr.get_type() != RRType.SOA:
raise XfrinProtocolError('First RR in zone transfer must be SOA ('
+ rr.get_type().to_text() + ' received)')
conn._end_serial = get_soa_serial(rr.get_rdata()[0])
- if conn._request_type == RRType.IXFR() and \
+ if conn._request_type == RRType.IXFR and \
conn._end_serial <= conn._request_serial:
logger.info(XFRIN_IXFR_UPTODATE, conn.zone_str(),
conn._request_serial, conn._end_serial)
http://www.ietf.org/mail-archive/web/dnsext/current/msg07908.html
'''
- if conn._request_type == RRType.IXFR() and \
- rr.get_type() == RRType.SOA() and \
+ if conn._request_type == RRType.IXFR and \
+ rr.get_type() == RRType.SOA and \
conn._request_serial == get_soa_serial(rr.get_rdata()[0]):
logger.debug(DBG_XFRIN_TRACE, XFRIN_GOT_INCREMENTAL_RESP,
conn.zone_str())
class XfrinIXFRDeleteSOA(XfrinState):
def handle_rr(self, conn, rr):
- if rr.get_type() != RRType.SOA():
+ if rr.get_type() != RRType.SOA:
# this shouldn't happen; should this occur it means an internal
# bug.
raise XfrinException(rr.get_type().to_text() +
class XfrinIXFRDelete(XfrinState):
def handle_rr(self, conn, rr):
- if rr.get_type() == RRType.SOA():
+ if rr.get_type() == RRType.SOA:
# This is the only place where current_serial is set
conn._current_serial = get_soa_serial(rr.get_rdata()[0])
self.set_xfrstate(conn, XfrinIXFRAddSOA())
class XfrinIXFRAddSOA(XfrinState):
def handle_rr(self, conn, rr):
- if rr.get_type() != RRType.SOA():
+ if rr.get_type() != RRType.SOA:
# this shouldn't happen; should this occur it means an internal
# bug.
raise XfrinException(rr.get_type().to_text() +
class XfrinIXFRAdd(XfrinState):
def handle_rr(self, conn, rr):
- if rr.get_type() == RRType.SOA():
+ if rr.get_type() == RRType.SOA:
# This SOA marks the end of a difference sequence
conn.get_transfer_stats().ixfr_changeset_count += 1
soa_serial = get_soa_serial(rr.get_rdata()[0])
Handle the RR by putting it into the zone.
"""
conn._diff.add_data(rr)
- if rr.get_type() == RRType.SOA():
+ if rr.get_type() == RRType.SOA:
# SOA means end. Don't commit it yet - we need to perform
# post-transfer checks
result, finder = self._datasrc_client.find_zone(self._zone_name)
if result != DataSourceClient.SUCCESS:
return None
- result, soa_rrset, _ = finder.find(self._zone_name, RRType.SOA())
+ result, soa_rrset, _ = finder.find(self._zone_name, RRType.SOA)
if result != ZoneFinder.SUCCESS:
logger.info(XFRIN_ZONE_NO_SOA, self.zone_str())
return None
if self._zone_soa is not None else None
# Set the authority section with our SOA for IXFR
- if query_type == RRType.IXFR():
+ if query_type == RRType.IXFR:
if self._zone_soa is None:
# (incremental) IXFR doesn't work without known SOA
raise XfrinException('Failed to create IXFR query due to no ' +
resp_question = msg.get_question()[0]
if resp_question.get_name() != self._zone_name or \
resp_question.get_class() != self._rrclass or \
- resp_question.get_type() != RRType.SOA():
+ resp_question.get_type() != RRType.SOA:
raise XfrinProtocolError('Invalid response to SOA query: '
'question mismatch: ' +
str(resp_question))
# Look into the answer section for SOA
soa = None
for rr in msg.get_section(Message.SECTION_ANSWER):
- if rr.get_type() == RRType.SOA():
+ if rr.get_type() == RRType.SOA:
if soa is not None:
raise XfrinProtocolError('SOA response had multiple SOAs')
soa = rr
# There should not be a CNAME record at top of zone.
- if rr.get_type() == RRType.CNAME():
+ if rr.get_type() == RRType.CNAME:
raise XfrinProtocolError('SOA query resulted in CNAME')
# If SOA is not found, try to figure out the reason then report it.
if soa is None:
# See if we have any SOA records in the authority section.
for rr in msg.get_section(Message.SECTION_AUTHORITY):
- if rr.get_type() == RRType.NS():
+ if rr.get_type() == RRType.NS:
raise XfrinProtocolError('SOA query resulted in referral')
- if rr.get_type() == RRType.SOA():
+ if rr.get_type() == RRType.SOA:
raise XfrinProtocolError('SOA query resulted in NODATA')
raise XfrinProtocolError('No SOA record found in response to ' +
'SOA query')
'''
- self._send_query(RRType.SOA())
+ self._send_query(RRType.SOA)
data_len = self._get_request_response(2)
msg_len = socket.htons(struct.unpack('H', data_len)[0])
soa_response = self._get_request_response(msg_len)
return XFRIN_OK
- def do_xfrin(self, check_soa, request_type=RRType.AXFR()):
+ def do_xfrin(self, check_soa, request_type=RRType.AXFR):
'''Do an xfr session by sending xfr request and parsing responses.'''
try:
self._request_type = request_type
# Right now RRType.[IA]XFR().to_text() is 'TYPExxx', so we need
# to hardcode here.
- req_str = 'IXFR' if request_type == RRType.IXFR() else 'AXFR'
+ req_str = 'IXFR' if request_type == RRType.IXFR else 'AXFR'
if check_soa:
self._check_soa_serial()
self.close()
ret = XFRIN_FAIL
if conn.connect_to_master():
ret = conn.do_xfrin(check_soa, request_type)
- if ret == XFRIN_FAIL and request_type == RRType.IXFR():
+ if ret == XFRIN_FAIL and request_type == RRType.IXFR:
# IXFR failed for some reason. It might mean the server can't
# handle it, or we don't have the zone or we are out of sync or
# whatever else. So we retry with with AXFR, as it may succeed
# in many such cases.
retry = True
- request_type = RRType.AXFR()
+ request_type = RRType.AXFR
logger.warn(XFRIN_XFR_TRANSFER_FALLBACK, conn.zone_str())
conn.close()
conn = None
xfrin_recorder.decrement(zone_name)
if exception is not None:
- typestr = "AXFR" if request_type == RRType.AXFR() else "IXFR"
+ typestr = "AXFR" if request_type == RRType.AXFR else "IXFR"
logger.error(XFRIN_XFR_PROCESS_FAILURE, typestr, zone_name.to_text(),
str(rrclass), str(exception))
logger.info(XFRIN_RETRANSFER_UNKNOWN_ZONE, zone_str)
answer = create_answer(1, errmsg)
else:
- request_type = RRType.AXFR()
+ request_type = RRType.AXFR
if zone_info.use_ixfr:
- request_type = RRType.IXFR()
+ request_type = RRType.IXFR
master_addr = zone_info.get_master_addr_info()
if notify_addr[0] == master_addr[0] and\
notify_addr[2] == master_addr[2]:
rrclass)
zone_info = self._get_zone_info(zone_name, rrclass)
tsig_key = None
- request_type = RRType.AXFR()
+ request_type = RRType.AXFR
if zone_info:
tsig_key = zone_info.get_tsig_key()
if zone_info.use_ixfr:
- request_type = RRType.IXFR()
+ request_type = RRType.IXFR
db_file = args.get('db_file') or self._get_db_file()
ret = self.xfrin_start(zone_name,
rrclass,
#
TEST_ZONE_NAME_STR = "example.com."
TEST_ZONE_NAME = Name(TEST_ZONE_NAME_STR)
-TEST_RRCLASS = RRClass.IN()
+TEST_RRCLASS = RRClass.IN
IXFR_OK_VERSION = 2011111802
IXFR_NG_VERSION = 2011111803
SOA_CURRENT_VERSION = 2011112001
zone names.
'''
- if name == Name('nosoa.example.com') and rrtype == RRType.SOA():
+ if name == Name('nosoa.example.com') and rrtype == RRType.SOA:
return (ZoneFinder.NXDOMAIN, None, 0)
- elif name == Name('multisoa.example.com') and rrtype == RRType.SOA():
+ elif name == Name('multisoa.example.com') and rrtype == RRType.SOA:
soa_rrset = create_soa(SOA_CURRENT_VERSION)
soa_rrset.add_rdata(soa_rrset.get_rdata()[0])
return (ZoneFinder.SUCCESS, soa_rrset, 0)
elif name == Name('maxserial.example.com'):
soa_rrset = create_soa(0xffffffff)
return (ZoneFinder.SUCCESS, soa_rrset, 0)
- elif rrtype == RRType.SOA():
+ elif rrtype == RRType.SOA:
return (ZoneFinder.SUCCESS, create_soa(SOA_CURRENT_VERSION), 0)
raise ValueError('Unexpected input to mock finder: bug in test case?')
msg.set_qid(query_id)
msg.set_opcode(Opcode.QUERY())
msg.set_rcode(Rcode.NOERROR())
- req_type = RRType.AXFR() if ixfr is None else RRType.IXFR()
+ req_type = RRType.AXFR if ixfr is None else RRType.IXFR
if with_question:
- msg.add_question(Question(zone_name, RRClass.IN(),
+ msg.add_question(Question(zone_name, RRClass.IN,
req_type if qtype is None else qtype))
- if req_type == RRType.IXFR():
- soa = RRset(zone_name, soa_class, RRType.SOA(), RRTTL(0))
+ if req_type == RRType.IXFR:
+ soa = RRset(zone_name, soa_class, RRType.SOA, RRTTL(0))
# In the RDATA only the serial matters.
for i in range(0, num_soa):
- soa.add_rdata(Rdata(RRType.SOA(), soa_class,
+ soa.add_rdata(Rdata(RRType.SOA, soa_class,
'm. r. ' + str(ixfr) + ' 1 1 1 1'))
msg.add_rrset(Message.SECTION_AUTHORITY, soa)
def set_request_type(self, type):
self.xfrsess._request_type = type
- if type == RRType.AXFR():
+ if type == RRType.AXFR:
self.xfrsess._request_typestr = 'AXFR'
else:
self.xfrsess._request_typestr = 'IXFR'
[{"action": "ACCEPT"}]),
{},
**self._counters)
- self.set_request_type(RRType.AXFR()) # test AXFR by default
+ self.set_request_type(RRType.AXFR) # test AXFR by default
self.mdata = self.create_request_data()
self.soa_rrset = create_soa(SOA_CURRENT_VERSION)
# some test replaces a module-wide function. We should ensure the
def test_parse_query_message(self):
# Valid AXFR
[get_rcode, get_msg] = self.xfrsess._parse_query_message(self.mdata)
- self.assertEqual(RRType.AXFR(), self.xfrsess._request_type)
+ self.assertEqual(RRType.AXFR, self.xfrsess._request_type)
self.assertEqual(get_rcode.to_text(), "NOERROR")
# Valid IXFR
request_data = self.create_request_data(ixfr=2011111801)
rcode, msg = self.xfrsess._parse_query_message(request_data)
- self.assertEqual(RRType.IXFR(), self.xfrsess._request_type)
+ self.assertEqual(RRType.IXFR, self.xfrsess._request_type)
self.assertEqual(Rcode.NOERROR(), rcode)
# Broken request: no question
# Broken request: invalid RR type (neither AXFR nor IXFR)
self.assertRaises(RuntimeError, self.xfrsess._parse_query_message,
- self.create_request_data(qtype=RRType.A()))
+ self.create_request_data(qtype=RRType.A))
# NOERROR
request_data = self.create_request_data(ixfr=IXFR_OK_VERSION)
# should be used.
self.xfrsess._acl = isc.acl.dns.REQUEST_LOADER.load([
{"from": "127.0.0.1", "action": "ACCEPT"}])
- acl = self.xfrsess._get_transfer_acl(Name('example.com'), RRClass.IN())
+ acl = self.xfrsess._get_transfer_acl(Name('example.com'), RRClass.IN)
self.assertEqual(acl, self.xfrsess._acl)
# install a per zone config with transfer ACL for example.com. Then
com_acl
self.assertEqual(com_acl,
self.xfrsess._get_transfer_acl(Name('example.com'),
- RRClass.IN()))
+ RRClass.IN))
self.assertEqual(self.xfrsess._acl,
self.xfrsess._get_transfer_acl(Name('example.org'),
- RRClass.IN()))
+ RRClass.IN))
# Name matching should be case insensitive.
self.assertEqual(com_acl,
self.xfrsess._get_transfer_acl(Name('EXAMPLE.COM'),
- RRClass.IN()))
+ RRClass.IN))
def test_send_data(self):
self.xfrsess._send_data(self.sock, self.mdata)
msg = self.getmsg()
msg.make_response()
# SOA record data with different cases
- soa_rrset = RRset(Name('Example.com.'), RRClass.IN(), RRType.SOA(),
+ soa_rrset = RRset(Name('Example.com.'), RRClass.IN, RRType.SOA,
RRTTL(3600))
- soa_rrset.add_rdata(Rdata(RRType.SOA(), RRClass.IN(),
+ soa_rrset.add_rdata(Rdata(RRType.SOA, RRClass.IN,
'master.Example.com. admin.exAmple.com. ' +
'2011112001 3600 1800 2419200 7200'))
msg.add_rrset(Message.SECTION_ANSWER, soa_rrset)
self.assertEqual(get_msg.get_rr_count(Message.SECTION_AUTHORITY), 0)
def test_trigger_send_message_with_last_soa(self):
- rrset_a = RRset(Name("example.com"), RRClass.IN(), RRType.A(), RRTTL(3600))
- rrset_a.add_rdata(Rdata(RRType.A(), RRClass.IN(), "192.0.2.1"))
+ rrset_a = RRset(Name("example.com"), RRClass.IN, RRType.A, RRTTL(3600))
+ rrset_a.add_rdata(Rdata(RRType.A, RRClass.IN, "192.0.2.1"))
msg = self.getmsg()
msg.make_response()
def test_xfrout_ixfr_setup(self):
self.xfrsess.ClientClass = MockDataSrcClient
- self.set_request_type(RRType.IXFR())
+ self.set_request_type(RRType.IXFR)
# Successful case of pure IXFR. A zone journal reader should be set
# up.
# query's RR class doesn't match the SOA's class
zone_name = TEST_ZONE_NAME # make sure the name matches this time
self.mdata = self.create_request_data(ixfr=IXFR_OK_VERSION,
- soa_class=RRClass.CH())
+ soa_class=RRClass.CH)
self.assertEqual(self.xfrsess._xfrout_setup(
self.getmsg(), zone_name, TEST_RRCLASS), Rcode.FORMERR())
self.assertEqual(reply_msg.get_rr_count(Message.SECTION_ANSWER), 2)
def test_reply_xfrout_query_axfr_with_tsig(self):
- rrset = RRset(Name('a.example.com'), RRClass.IN(), RRType.A(),
+ rrset = RRset(Name('a.example.com'), RRClass.IN, RRType.A,
RRTTL(3600))
- rrset.add_rdata(Rdata(RRType.A(), RRClass.IN(), '192.0.2.1'))
+ rrset.add_rdata(Rdata(RRType.A, RRClass.IN, '192.0.2.1'))
global xfrout
def get_rrset_len(rrset):
algorithm = hmac-md5)
'''
- soa = RRset(Name('.'), RRClass.IN(), RRType.SOA(), RRTTL(3600))
- soa.add_rdata(Rdata(RRType.SOA(), RRClass.IN(), '. . 0 0 0 0 0'))
+ soa = RRset(Name('.'), RRClass.IN, RRType.SOA, RRTTL(3600))
+ soa.add_rdata(Rdata(RRType.SOA, RRClass.IN, '. . 0 0 0 0 0'))
self.mdata = self.create_request_data(zone_name=Name('.'))
self.xfrsess._soa = soa
if tsig:
response = self.sock.read_msg(Message.PRESERVE_ORDER);
self.assertEqual(Rcode.NOERROR(), response.get_rcode())
self.check_axfr_stream(response)
- self.assertEqual(self.xfrsess._request_type, RRType.AXFR())
- self.assertNotEqual(self.xfrsess._request_type, RRType.IXFR())
+ self.assertEqual(self.xfrsess._request_type, RRType.AXFR)
+ self.assertNotEqual(self.xfrsess._request_type, RRType.IXFR)
self.assertEqual(self.get_counter('axfr_started'), 1)
self.assertEqual(self.get_counter('axfr_ended'), 1)
self.assertEqual(self.get_counter('ixfr_started'), 0)
self.assertEqual(Rcode.NOERROR(), response.get_rcode())
# This is an AXFR-style IXFR. So the question section should indicate
# that it's an IXFR resposne.
- self.assertEqual(RRType.IXFR(), response.get_question()[0].get_type())
+ self.assertEqual(RRType.IXFR, response.get_question()[0].get_type())
self.check_axfr_stream(response)
def test_ixfr_normal_session(self):
self.assertEqual(len(expected_records), len(actual_records))
for (expected_rr, actual_rr) in zip(expected_records, actual_records):
self.assertTrue(rrsets_equal(expected_rr, actual_rr))
- self.assertNotEqual(self.xfrsess._request_type, RRType.AXFR())
- self.assertEqual(self.xfrsess._request_type, RRType.IXFR())
+ self.assertNotEqual(self.xfrsess._request_type, RRType.AXFR)
+ self.assertEqual(self.xfrsess._request_type, RRType.IXFR)
self.assertEqual(self.get_counter('axfr_started'), 0)
self.assertEqual(self.get_counter('axfr_ended'), 0)
self.assertEqual(self.get_counter('ixfr_started'), 1)
# Identify the request type
self._request_type = question.get_type()
- if self._request_type == RRType.AXFR():
+ if self._request_type == RRType.AXFR:
self._request_typestr = 'AXFR'
- elif self._request_type == RRType.IXFR():
+ elif self._request_type == RRType.IXFR:
self._request_typestr = 'IXFR'
else:
# Likewise, this should be impossible.
result, finder = self._datasrc_client.find_zone(zone_name)
if result != DataSourceClient.SUCCESS:
return (Rcode.NOTAUTH(), None)
- result, soa_rrset, _ = finder.find(zone_name, RRType.SOA())
+ result, soa_rrset, _ = finder.find(zone_name, RRType.SOA)
if result != ZoneFinder.SUCCESS:
return (Rcode.SERVFAIL(), None)
# Especially for database-based zones, a working zone may be in
# Ignore data whose owner name is not the zone apex, and
# ignore non-SOA or different class of records.
if auth_rrset.get_name() != zone_name or \
- auth_rrset.get_type() != RRType.SOA() or \
+ auth_rrset.get_type() != RRType.SOA or \
auth_rrset.get_class() != zone_class:
continue
if auth_rrset.get_rdata_count() != 1:
self._server.get_db_file() + '"}'
self._datasrc_client = self.ClientClass('sqlite3', datasrc_config)
- if self._request_type == RRType.AXFR():
+ if self._request_type == RRType.AXFR:
return self.__axfr_setup(zone_name)
else:
return self.__ixfr_setup(request_msg, zone_name, zone_class)
try:
# increment Xfr starts by RRType
- if self._request_type == RRType.AXFR():
+ if self._request_type == RRType.AXFR:
self._inc_axfr_running()
else:
self._inc_ixfr_running()
format_addrinfo(self._remote), zone_str, err)
finally:
# decrement Xfr starts by RRType
- if self._request_type == RRType.AXFR():
+ if self._request_type == RRType.AXFR:
self._dec_axfr_running()
else:
self._dec_ixfr_running()
# For AXFR (or AXFR-style IXFR), in which case _jnl_reader is None,
# we should skip SOAs from the iterator.
- if self._jnl_reader is None and rrset.get_type() == RRType.SOA():
+ if self._jnl_reader is None and rrset.get_type() == RRType.SOA:
continue
# We calculate the maximum size of the RRset (i.e. the
zone_name = args.get('zone_name')
zone_class = args.get('zone_class')
if not zone_class:
- zone_class = str(RRClass.IN())
+ zone_class = str(RRClass.IN)
if zone_name:
logger.info(XFROUT_NOTIFY_COMMAND, zone_name, zone_class)
if self.send_notify(zone_name, zone_class):
Test the constructor. It should accept an RRClass. Check it
reject invalid inputs.
"""
- isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN())
- isc.datasrc.ConfigurableClientList(isc.dns.RRClass.CH())
+ isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN)
+ isc.datasrc.ConfigurableClientList(isc.dns.RRClass.CH)
# Not enough arguments
self.assertRaises(TypeError, isc.datasrc.ConfigurableClientList)
# Bad types of arguments
self.assertRaises(TypeError, isc.datasrc.ConfigurableClientList, "IN")
# Too many arguments
self.assertRaises(TypeError, isc.datasrc.ConfigurableClientList,
- isc.dns.RRClass.IN(), isc.dns.RRClass.IN())
+ isc.dns.RRClass.IN, isc.dns.RRClass.IN)
def test_configure(self):
"""
ones are acceptend and invalid rejected. We check the changes
have effect.
"""
- self.clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN())
+ self.clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN)
# This should be NOP now
self.clist.configure("[]", True)
# Check the zone is not there yet
Test the find accepts the right arguments, some of them can be omitted,
etc.
"""
- self.clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN())
+ self.clist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.IN)
self.clist.configure('''[{
"type": "MasterFiles",
"params": {
return False
def create_soa(serial):
- soa = RRset(Name('example.org'), RRClass.IN(), RRType.SOA(), RRTTL(3600))
- soa.add_rdata(Rdata(RRType.SOA(), RRClass.IN(),
+ soa = RRset(Name('example.org'), RRClass.IN, RRType.SOA, RRTTL(3600))
+ soa.add_rdata(Rdata(RRType.SOA, RRClass.IN,
'ns1.example.org. admin.example.org. ' +
str(serial) + ' 3600 1800 2419200 7200'))
return soa
result, rrset, _ = tested.find_all(isc.dns.Name("www.sql1.example.com"),
ZoneFinder.FIND_DEFAULT)
self.assertEqual(ZoneFinder.DELEGATION, result)
- expected = RRset(Name('sql1.example.com.'), RRClass.IN(), RRType.NS(),
+ expected = RRset(Name('sql1.example.com.'), RRClass.IN, RRType.NS,
RRTTL(3600))
- expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+ expected.add_rdata(Rdata(RRType.NS, RRClass.IN,
'dns01.example.com.'))
- expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+ expected.add_rdata(Rdata(RRType.NS, RRClass.IN,
'dns02.example.com.'))
- expected.add_rdata(Rdata(RRType.NS(), RRClass.IN(),
+ expected.add_rdata(Rdata(RRType.NS, RRClass.IN,
'dns03.example.com.'))
self.assertTrue(rrsets_equal(expected, rrset))
self.assertEqual(2, len(rrsets))
rrsets.sort(key=lambda rrset: rrset.get_type().to_text())
expected = [
- RRset(Name('mix.example.com.'), RRClass.IN(), RRType.A(),
+ RRset(Name('mix.example.com.'), RRClass.IN, RRType.A,
RRTTL(3600)),
- RRset(Name('mix.example.com.'), RRClass.IN(), RRType.AAAA(),
+ RRset(Name('mix.example.com.'), RRClass.IN, RRType.AAAA,
RRTTL(3600))
]
- expected[0].add_rdata(Rdata(RRType.A(), RRClass.IN(), "192.0.2.1"))
- expected[0].add_rdata(Rdata(RRType.A(), RRClass.IN(), "192.0.2.2"))
- expected[1].add_rdata(Rdata(RRType.AAAA(), RRClass.IN(),
+ expected[0].add_rdata(Rdata(RRType.A, RRClass.IN, "192.0.2.1"))
+ expected[0].add_rdata(Rdata(RRType.A, RRClass.IN, "192.0.2.2"))
+ expected[1].add_rdata(Rdata(RRType.AAAA, RRClass.IN,
"2001:db8::1"))
- expected[1].add_rdata(Rdata(RRType.AAAA(), RRClass.IN(),
+ expected[1].add_rdata(Rdata(RRType.AAAA, RRClass.IN,
"2001:db8::2"))
for (rrset, exp) in zip(rrsets, expected):
self.assertTrue(rrsets_equal(exp, rrset))
expected_rrset_list = []
name = isc.dns.Name("sql1.example.com")
- rrclass = isc.dns.RRClass.IN()
+ rrclass = isc.dns.RRClass.IN
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.DNSKEY(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.DNSKEY, isc.dns.RRTTL(3600),
[
"256 3 5 AwEAAdYdRhBAEY67R/8G1N5AjGF6asIiNh/pNGeQ8xDQP13J"+
"N2lo+sNqWcmpYNhuVqRbLB+mamsU1XcCICSBvAlSmfz/ZUdafX23knAr"+
"5fs0dE/xLztL/CzZ"
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.DNSKEY(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.DNSKEY, isc.dns.RRTTL(3600),
[
"257 3 5 AwEAAbaKDSa9XEFTsjSYpUTHRotTS9Tz3krfDucugW5UokGQ"+
"KC26QlyHXlPTZkC+aRFUs/dicJX2kopndLcnlNAPWiKnKtrsFSCnIJDB"+
"jRWAzGsxJiJyjd6w2k0="
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.NS(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.NS, isc.dns.RRTTL(3600),
[
"dns01.example.com."
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.NS(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.NS, isc.dns.RRTTL(3600),
[
"dns02.example.com."
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.NS(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.NS, isc.dns.RRTTL(3600),
[
"dns03.example.com."
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.NSEC(), isc.dns.RRTTL(7200),
+ isc.dns.RRType.NSEC, isc.dns.RRTTL(7200),
[
"www.sql1.example.com. NS SOA RRSIG NSEC DNSKEY"
])
# Since we passed separate_rrs = True to get_iterator, we get several
# sets of RRSIGs, one for each TTL
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(3600), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(3600), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(3600), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(3600), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(3600), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(3600), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(3600), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(3600), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(7200), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(7200), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.SOA(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.SOA, isc.dns.RRTTL(3600),
[
"master.example.com. admin.example.com. 678 3600 1800 2419200 7200"
])
name = isc.dns.Name("www.sql1.example.com.")
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.A(), isc.dns.RRTTL(3600),
+ isc.dns.RRType.A, isc.dns.RRTTL(3600),
[
"192.0.2.100"
])
name = isc.dns.Name("www.sql1.example.com.")
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.NSEC(), isc.dns.RRTTL(7200),
+ isc.dns.RRType.NSEC, isc.dns.RRTTL(7200),
[
"sql1.example.com. A RRSIG NSEC"
])
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(3600), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(3600), None)
add_rrset(expected_rrset_list, name, rrclass,
- isc.dns.RRType.RRSIG(), isc.dns.RRTTL(7200), None)
+ isc.dns.RRType.RRSIG, isc.dns.RRTTL(7200), None)
# rrs is an iterator, but also has direct get_next_rrset(), use
# the latter one here
dsc = isc.datasrc.DataSourceClient("sqlite3", READ_ZONE_DB_CONFIG)
iterator = dsc.get_iterator(isc.dns.Name("sql1.example.com."))
expected_soa = isc.dns.RRset(isc.dns.Name("sql1.example.com."),
- isc.dns.RRClass.IN(),
- isc.dns.RRType.SOA(),
+ isc.dns.RRClass.IN,
+ isc.dns.RRType.SOA,
isc.dns.RRTTL(3600))
- expected_soa.add_rdata(isc.dns.Rdata(isc.dns.RRType.SOA(),
- isc.dns.RRClass.IN(),
+ expected_soa.add_rdata(isc.dns.Rdata(isc.dns.RRType.SOA,
+ isc.dns.RRClass.IN,
"master.example.com. " +
"admin.example.com. 678 " +
"3600 1800 2419200 7200"))
result, finder = dsc.find_zone(isc.dns.Name("example.com"))
self.assertEqual(finder.SUCCESS, result)
- self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual(isc.dns.RRClass.IN, finder.get_class())
self.assertEqual("example.com.", finder.get_origin().to_text())
test_findall_common(self, finder)
result, finder = dsc.find_zone(isc.dns.Name("example.com"))
self.assertEqual(finder.SUCCESS, result)
- self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual(isc.dns.RRClass.IN, finder.get_class())
self.assertEqual("example.com.", finder.get_origin().to_text())
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# Check the optional parameters are optional
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A())
+ isc.dns.RRType.A)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
rrset.to_text())
result, rrset, _ = finder.find(isc.dns.Name("www.sql1.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.DELEGATION, result)
self.assertEqual("sql1.example.com. 3600 IN NS dns01.example.com.\n" +
rrset.to_text())
result, rrset, _ = finder.find(isc.dns.Name("doesnotexist.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXDOMAIN, result)
self.assertEqual(None, rrset)
self.assertRaises(isc.datasrc.OutOfZone, finder.find,
isc.dns.Name("www.some.other.domain"),
- isc.dns.RRType.A())
+ isc.dns.RRType.A)
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.TXT(),
+ isc.dns.RRType.TXT,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXRRSET, result)
self.assertEqual(None, rrset)
result, rrset, _ = finder.find(isc.dns.Name("cname-ext.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.CNAME, result)
self.assertEqual(
result, rrset, flags = \
finder.find(isc.dns.Name("foo.wild.example.com"),
- isc.dns.RRType.A(), finder.FIND_DEFAULT)
+ isc.dns.RRType.A, finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual(finder.RESULT_WILDCARD, flags)
self.assertEqual("foo.wild.example.com. 3600 IN A 192.0.2.255\n",
rrset.to_text())
result, rrset, _ = finder.find(isc.dns.Name("foo.wild.example.com"),
- isc.dns.RRType.TXT(),
+ isc.dns.RRType.TXT,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXRRSET, result)
self.assertTrue(finder.RESULT_WILDCARD, flags)
self.assertRaises(TypeError, finder.find,
"foo",
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertRaises(TypeError, finder.find,
isc.dns.Name("cname-ext.example.com"),
finder.FIND_DEFAULT)
self.assertRaises(TypeError, finder.find,
isc.dns.Name("cname-ext.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
"foo")
class DataSrcUpdater(unittest.TestCase):
dsc = isc.datasrc.DataSourceClient("sqlite3", WRITE_ZONE_DB_CONFIG)
updater = dsc.get_updater(isc.dns.Name("example.com"), False)
result, rrset, _ = updater.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
ZoneFinder.FIND_DEFAULT)
self.assertEqual(ZoneFinder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# Omit optional parameters
result, rrset, _ = updater.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A())
+ isc.dns.RRType.A)
self.assertEqual(ZoneFinder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
rrset.to_text())
# first make sure, through a separate finder, that some record exists
result, finder = dsc.find_zone(isc.dns.Name("example.com"))
self.assertEqual(finder.SUCCESS, result)
- self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual(isc.dns.RRClass.IN, finder.get_class())
self.assertEqual("example.com.", finder.get_origin().to_text())
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# The record should be gone in the updater, but not in the original
# finder (since we have not committed)
result, rrset, _ = updater.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXDOMAIN, result)
self.assertEqual(None, rrset)
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# the record should be gone now in the 'real' finder as well
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXDOMAIN, result)
self.assertEqual(None, rrset)
self.assertRaises(isc.datasrc.Error, updater.commit)
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
rrsets = updater.get_rrset_collection()
# From this point we cannot make further updates
- rrset = RRset(isc.dns.Name('www.example.com'), isc.dns.RRClass.IN(),
- isc.dns.RRType.AAAA(), isc.dns.RRTTL(10))
- rrset.add_rdata(isc.dns.Rdata(isc.dns.RRType.AAAA(),
- isc.dns.RRClass.IN(), '2001:db8::1'))
+ rrset = RRset(isc.dns.Name('www.example.com'), isc.dns.RRClass.IN,
+ isc.dns.RRType.AAAA, isc.dns.RRTTL(10))
+ rrset.add_rdata(isc.dns.Rdata(isc.dns.RRType.AAAA,
+ isc.dns.RRClass.IN, '2001:db8::1'))
self.assertRaises(isc.datasrc.Error, updater.add_rrset, rrset)
# Checks basic API
found = rrsets.find(isc.dns.Name("www.example.com"),
- isc.dns.RRClass.IN(), isc.dns.RRType.A())
+ isc.dns.RRClass.IN, isc.dns.RRType.A)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
found.to_text())
self.assertEqual(None, rrsets.find(isc.dns.Name("www.example.com"),
- isc.dns.RRClass.IN(),
- isc.dns.RRType.AAAA()))
+ isc.dns.RRClass.IN,
+ isc.dns.RRType.AAAA))
# Once committed collection cannot be used any more.
updater.commit()
self.assertRaises(isc.dns.RRsetCollectionError,
rrsets.find, isc.dns.Name("www.example.com"),
- isc.dns.RRClass.IN(), isc.dns.RRType.A())
+ isc.dns.RRClass.IN, isc.dns.RRType.A)
# When we destroy the RRsetCollection it should release the refcount
# to the updater.
# see if a lookup succeeds in sqlite3 ds
result, finder = dsc_sql.find_zone(isc.dns.Name("example.com"))
self.assertEqual(finder.SUCCESS, result)
- self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual(isc.dns.RRClass.IN, finder.get_class())
self.assertEqual("example.com.", finder.get_origin().to_text())
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# first make sure, through a separate finder, that some record exists
result, finder = dsc.find_zone(isc.dns.Name("example.com"))
self.assertEqual(finder.SUCCESS, result)
- self.assertEqual(isc.dns.RRClass.IN(), finder.get_class())
+ self.assertEqual(isc.dns.RRClass.IN, finder.get_class())
self.assertEqual("example.com.", finder.get_origin().to_text())
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
# The record should be gone in the updater, but not in the original
# finder (since we have not committed)
result, rrset, _ = updater.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.NXDOMAIN, result)
self.assertEqual(None, rrset)
# the record should still be available in the 'real' finder as well
result, rrset, _ = finder.find(isc.dns.Name("www.example.com"),
- isc.dns.RRType.A(),
+ isc.dns.RRType.A,
finder.FIND_DEFAULT)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual("www.example.com. 3600 IN A 192.0.2.1\n",
conn.close()
def create_a(self, address):
- a_rr = RRset(Name('www.example.org'), RRClass.IN(), RRType.A(),
+ a_rr = RRset(Name('www.example.org'), RRClass.IN, RRType.A,
RRTTL(3600))
- a_rr.add_rdata(Rdata(RRType.A(), RRClass.IN(), address))
+ a_rr.add_rdata(Rdata(RRType.A, RRClass.IN, address))
return (a_rr)
def test_journal_write(self):
"""
result, finder = self.client.find_zone(self.test_name)
self.assertEqual(self.client.SUCCESS, result)
- result, rrset, _ = finder.find(self.test_name, isc.dns.RRType.SOA())
+ result, rrset, _ = finder.find(self.test_name, isc.dns.RRType.SOA)
self.assertEqual(finder.SUCCESS, result)
self.assertEqual(soa_txt, rrset.to_text())
def test_wrong_class_from_client(self):
# For ds->ds loading, wrong class is detected upon construction
# Need a bit of the extended setup for CH source client
- clientlist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.CH())
+ clientlist = isc.datasrc.ConfigurableClientList(isc.dns.RRClass.CH)
clientlist.configure('[ { "type": "static", "params": "' +
STATIC_ZONE_FILE +'" } ]', False)
self.source_client, _, _ = clientlist.find(isc.dns.Name("bind."),
def __write_soa_internal(self, origin_soa, soa_num):
'''Write back serial number to soa'''
new_soa = RRset(origin_soa.get_name(), origin_soa.get_class(),
- RRType.SOA(), origin_soa.get_ttl())
+ RRType.SOA, origin_soa.get_ttl())
soa_rdata_parts = origin_soa.get_rdata()[0].to_text().split()
soa_rdata_parts[2] = str(soa_num.get_value())
new_soa.add_rdata(Rdata(origin_soa.get_type(), origin_soa.get_class(),
raise UpdateError('Invalid number of records in zone section: ' +
str(n_zones), None, None, Rcode.FORMERR())
zrecord = self.__message.get_question()[0]
- if zrecord.get_type() != RRType.SOA():
+ if zrecord.get_type() != RRType.SOA:
raise UpdateError('update zone section contains non-SOA',
None, None, Rcode.FORMERR())
return Rcode.NOTZONE()
# Algorithm taken from RFC2136 Section 3.2
- if rrset.get_class() == RRClass.ANY():
+ if rrset.get_class() == RRClass.ANY:
if rrset.get_ttl().get_value() != 0 or\
rrset.get_rdata_count() != 0:
logger.info(LIBDDNS_PREREQ_FORMERR_ANY,
ZoneFormatter(self.__zname, self.__zclass),
RRsetFormatter(rrset))
return Rcode.FORMERR()
- elif rrset.get_type() == RRType.ANY():
+ elif rrset.get_type() == RRType.ANY:
if not self.__prereq_name_in_use(rrset):
rcode = Rcode.NXDOMAIN()
logger.info(LIBDDNS_PREREQ_NAME_IN_USE_FAILED,
ZoneFormatter(self.__zname, self.__zclass),
RRsetFormatter(rrset), rcode)
return rcode
- elif rrset.get_class() == RRClass.NONE():
+ elif rrset.get_class() == RRClass.NONE:
if rrset.get_ttl().get_value() != 0 or\
rrset.get_rdata_count() != 0:
logger.info(LIBDDNS_PREREQ_FORMERR_NONE,
ZoneFormatter(self.__zname, self.__zclass),
RRsetFormatter(rrset))
return Rcode.FORMERR()
- elif rrset.get_type() == RRType.ANY():
+ elif rrset.get_type() == RRType.ANY:
if not self.__prereq_name_not_in_use(rrset):
rcode = Rcode.YXDOMAIN()
logger.info(LIBDDNS_PREREQ_NAME_NOT_IN_USE_FAILED,
ZoneFormatter(self.__zname, self.__zclass),
RRsetFormatter(rrset))
return Rcode.FORMERR()
- if rrset.get_type() == RRType.SOA():
+ if rrset.get_type() == RRType.SOA:
# In case there's multiple soa records in the update
# somehow, just take the last
for rr in foreach_rr(rrset):
self.__set_soa_rrset(rr)
- elif rrset.get_class() == RRClass.ANY():
+ elif rrset.get_class() == RRClass.ANY:
if rrset.get_ttl().get_value() != 0:
logger.info(LIBDDNS_UPDATE_DELETE_NONZERO_TTL,
ClientFormatter(self.__client_addr),
ZoneFormatter(self.__zname, self.__zclass),
RRsetFormatter(rrset))
return Rcode.FORMERR()
- elif rrset.get_class() == RRClass.NONE():
+ elif rrset.get_class() == RRClass.NONE:
if rrset.get_ttl().get_value() != 0:
logger.info(LIBDDNS_UPDATE_DELETE_RR_NONZERO_TTL,
ClientFormatter(self.__client_addr),
# For a number of cases, we may need to remove data in the zone
# (note; SOA is handled separately by __do_update, so that one
# is explicitely ignored here)
- if rrset.get_type() == RRType.SOA():
+ if rrset.get_type() == RRType.SOA:
return
result, orig_rrset, _ = self.__diff.find(rrset.get_name(),
rrset.get_type())
return
elif result == ZoneFinder.SUCCESS:
# if update is cname, and zone rr is not, ignore
- if rrset.get_type() == RRType.CNAME():
+ if rrset.get_type() == RRType.CNAME:
# Remove original CNAME record (the new one
# is added below)
self.__diff.delete_data(orig_rrset)
elif result == ZoneFinder.NXRRSET:
# There is data present, but not for this type.
# If this type is CNAME, ignore the update
- if rrset.get_type() == RRType.CNAME():
+ if rrset.get_type() == RRType.CNAME:
return
for rr in foreach_rr(rrset):
self.__do_update_add_single_rr(rr, orig_rrset)
rrset.get_type())
if result == ZoneFinder.SUCCESS:
if to_delete.get_name() == self.__zname and\
- (to_delete.get_type() == RRType.SOA() or\
- to_delete.get_type() == RRType.NS()):
+ (to_delete.get_type() == RRType.SOA or\
+ to_delete.get_type() == RRType.NS):
# ignore
return
for rr in foreach_rr(to_delete):
for to_delete in rrsets:
# if name == self.__zname and type is soa or ns, don't delete!
if to_delete.get_name() == self.__zname and\
- (to_delete.get_type() == RRType.SOA() or
- to_delete.get_type() == RRType.NS()):
+ (to_delete.get_type() == RRType.SOA or
+ to_delete.get_type() == RRType.NS):
continue
else:
for rr in foreach_rr(to_delete):
to_delete = convert_rrset_class(rrset, self.__zclass)
if rrset.get_name() == self.__zname:
- if rrset.get_type() == RRType.SOA():
+ if rrset.get_type() == RRType.SOA:
# ignore
return
- elif rrset.get_type() == RRType.NS():
+ elif rrset.get_type() == RRType.NS:
# hmm. okay. annoying. There must be at least one left,
# delegate to helper method
self.__ns_deleter_helper(to_delete)
# serial magic and add the newly created one
# get it from DS and to increment and stuff
- result, old_soa, _ = self.__diff.find(self.__zname, RRType.SOA(),
+ result, old_soa, _ = self.__diff.find(self.__zname, RRType.SOA,
ZoneFinder.NO_WILDCARD |
ZoneFinder.FIND_GLUE_OK)
# We may implement recovering from missing SOA data at some point, but
for rrset in self.__message.get_section(SECTION_UPDATE):
if rrset.get_class() == self.__zclass:
self.__do_update_add_rrs_to_rrset(rrset)
- elif rrset.get_class() == RRClass.ANY():
- if rrset.get_type() == RRType.ANY():
+ elif rrset.get_class() == RRClass.ANY:
+ if rrset.get_type() == RRType.ANY:
self.__do_update_delete_name(rrset)
else:
self.__do_update_delete_rrset(rrset)
- elif rrset.get_class() == RRClass.NONE():
+ elif rrset.get_class() == RRClass.NONE:
self.__do_update_delete_rrs_from_rrset(rrset)
self.__diff.commit()
WRITE_ZONE_DB_CONFIG = "{ \"database_file\": \"" + WRITE_ZONE_DB_FILE + "\"}"
TEST_ZONE_NAME = Name('example.org')
-UPDATE_RRTYPE = RRType.SOA()
-TEST_RRCLASS = RRClass.IN()
+UPDATE_RRTYPE = RRType.SOA
+TEST_RRCLASS = RRClass.IN
TEST_ZONE_RECORD = Question(TEST_ZONE_NAME, TEST_RRCLASS, UPDATE_RRTYPE)
TEST_CLIENT6 = ('2001:db8::1', 53, 0, 0)
TEST_CLIENT4 = ('192.0.2.1', 53)
def test_foreach_rr_in_rrset(self):
rrset = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.A(), 3600, [ "192.0.2.1" ])
+ RRType.A, 3600, [ "192.0.2.1" ])
l = []
for rr in foreach_rr(rrset):
def test_convert_rrset_class(self):
# Converting an RRSET to a different class should work
# if the rdata types can be converted
- rrset = create_rrset("www.example.org", RRClass.NONE(), RRType.A(),
+ rrset = create_rrset("www.example.org", RRClass.NONE, RRType.A,
3600, [ b'\xc0\x00\x02\x01', b'\xc0\x00\x02\x02'])
- rrset2 = convert_rrset_class(rrset, RRClass.IN())
+ rrset2 = convert_rrset_class(rrset, RRClass.IN)
self.assertEqual("www.example.org. 3600 IN A 192.0.2.1\n" +
"www.example.org. 3600 IN A 192.0.2.2\n",
str(rrset2))
- rrset3 = convert_rrset_class(rrset2, RRClass.NONE())
+ rrset3 = convert_rrset_class(rrset2, RRClass.NONE)
self.assertEqual("www.example.org. 3600 CLASS254 A \\# 4 " +
"c0000201\nwww.example.org. 3600 CLASS254 " +
"A \\# 4 c0000202\n",
# there was a ticket about making a better hierarchy for
# dns/parsing related exceptions)
self.assertRaises(InvalidRdataLength, convert_rrset_class,
- rrset, RRClass.CH())
+ rrset, RRClass.CH)
add_rdata(rrset, b'\xc0\x00')
self.assertRaises(DNSMessageFORMERR, convert_rrset_class,
- rrset, RRClass.IN())
+ rrset, RRClass.IN)
def test_collect_rrsets(self):
'''
'''
collected = []
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.1" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.1" ]))
# Same name and class, different type
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.TXT(), 0, [ "one" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.2" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.TXT(), 0, [ "two" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.TXT, 0, [ "one" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.2" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.TXT, 0, [ "two" ]))
# Same class and type as an existing one, different name
- collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.3" ]))
+ collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.3" ]))
# Same name and type as an existing one, different class
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH(),
- RRType.TXT(), 0, [ "one" ]))
- collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.4" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH(),
- RRType.TXT(), 0, [ "two" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH,
+ RRType.TXT, 0, [ "one" ]))
+ collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.4" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH,
+ RRType.TXT, 0, [ "two" ]))
strings = [ rrset.to_text() for rrset in collected ]
# note + vs , in this list
'''unittest for update_soa function'''
soa_update = DDNS_SOA()
soa_rr = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600, ["ns1.example.org. " +
+ RRType.SOA, 3600, ["ns1.example.org. " +
"admin.example.org. " +
"1233 3600 1800 2419200 7200"])
expected_soa_rr = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600, ["ns1.example.org. "
+ RRType.SOA, 3600, ["ns1.example.org. "
+ "admin.example.org. " +
"1234 3600 1800 2419200 7200"])
self.assertEqual(soa_update.update_soa(soa_rr).get_rdata()[0].to_text(),
expected_soa_rr.get_rdata()[0].to_text())
max_serial = 2 ** 32 - 1
soa_rdata = "%d %s"%(max_serial,"3600 1800 2419200 7200")
- soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA(), 3600,
+ soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA, 3600,
["ns1.example.org. " + "admin.example.org. " +
soa_rdata])
expected_soa_rr = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600, ["ns1.example.org. "
+ RRType.SOA, 3600, ["ns1.example.org. "
+ "admin.example.org. " +
"1 3600 1800 2419200 7200"])
self.assertEqual(soa_update.update_soa(soa_rr).get_rdata()[0].to_text(),
def test_soa_update_check(self):
'''unittest for soa_update_check function'''
- small_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA(),
+ small_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA,
3600, ["ns1.example.org. " +
"admin.example.org. " +
"1233 3600 1800 2419200 7200"])
- large_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA(),
+ large_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA,
3600, ["ns1.example.org. " +
"admin.example.org. " +
"1234 3600 1800 2419200 7200"])
small_soa_rr))
small_serial = 1235 + 2 ** 31
soa_rdata = "%d %s"%(small_serial,"3600 1800 2419200 7200")
- small_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA(),
+ small_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA,
3600, ["ns1.example.org. " +
"admin.example.org. " +
soa_rdata])
- large_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA(),
+ large_soa_rr = create_rrset("example.org", TEST_RRCLASS, RRType.SOA,
3600, ["ns1.example.org. " +
"admin.example.org. " +
"1234 3600 1800 2419200 7200"])
# Zone section's type is not SOA
msg = create_update_msg(zones=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.A())])
+ RRType.A)])
session = UpdateSession(msg, TEST_CLIENT4, None)
self.assertEqual(UPDATE_ERROR, session.handle()[0])
self.check_response(session.get_message(), Rcode.FORMERR())
# implementation doesn't support update forwarding, the result
# should be NOTIMP.
msg = create_update_msg(zones=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.SOA())])
+ RRType.SOA)])
session = UpdateSession(msg, TEST_CLIENT4,
ZoneConfig({(TEST_ZONE_NAME, TEST_RRCLASS)},
TEST_RRCLASS, self._datasrc_client))
def check_notauth(self, zname, zclass=TEST_RRCLASS):
'''Common test sequence for the 'notauth' test'''
- msg = create_update_msg(zones=[Question(zname, zclass, RRType.SOA())])
+ msg = create_update_msg(zones=[Question(zname, zclass, RRType.SOA)])
session = UpdateSession(msg, TEST_CLIENT4,
ZoneConfig({(TEST_ZONE_NAME, TEST_RRCLASS)},
TEST_RRCLASS, self._datasrc_client))
# (match must be exact)
self.check_notauth(Name('sub.example.org'))
# zone class doesn't match
- self.check_notauth(Name('example.org'), RRClass.CH())
+ self.check_notauth(Name('example.org'), RRClass.CH)
def test_update_datasrc_error(self):
# if the data source client raises an exception, it should result in
def find_zone(self, name):
raise isc.datasrc.Error('faked exception')
msg = create_update_msg(zones=[Question(TEST_ZONE_NAME, TEST_RRCLASS,
- RRType.SOA())])
+ RRType.SOA)])
session = UpdateSession(msg, TEST_CLIENT4,
ZoneConfig({(TEST_ZONE_NAME, TEST_RRCLASS)},
TEST_RRCLASS,
def test_foreach_rr_in_rrset(self):
rrset = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.A(), 3600, [ "192.0.2.1" ])
+ RRType.A, 3600, [ "192.0.2.1" ])
l = []
for rr in foreach_rr(rrset):
def test_convert_rrset_class(self):
# Converting an RRSET to a different class should work
# if the rdata types can be converted
- rrset = create_rrset("www.example.org", RRClass.NONE(), RRType.A(),
+ rrset = create_rrset("www.example.org", RRClass.NONE, RRType.A,
3600, [ b'\xc0\x00\x02\x01', b'\xc0\x00\x02\x02'])
- rrset2 = convert_rrset_class(rrset, RRClass.IN())
+ rrset2 = convert_rrset_class(rrset, RRClass.IN)
self.assertEqual("www.example.org. 3600 IN A 192.0.2.1\n" +
"www.example.org. 3600 IN A 192.0.2.2\n",
str(rrset2))
- rrset3 = convert_rrset_class(rrset2, RRClass.NONE())
+ rrset3 = convert_rrset_class(rrset2, RRClass.NONE)
self.assertEqual("www.example.org. 3600 CLASS254 A \\# 4 " +
"c0000201\nwww.example.org. 3600 CLASS254 " +
"A \\# 4 c0000202\n",
# there was a ticket about making a better hierarchy for
# dns/parsing related exceptions)
self.assertRaises(InvalidRdataLength, convert_rrset_class,
- rrset, RRClass.CH())
+ rrset, RRClass.CH)
add_rdata(rrset, b'\xc0\x00')
self.assertRaises(DNSMessageFORMERR, convert_rrset_class,
- rrset, RRClass.IN())
+ rrset, RRClass.IN)
def test_collect_rrsets(self):
'''
'''
collected = []
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.1" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.1" ]))
# Same name and class, different type
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.TXT(), 0, [ "one" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.2" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN(),
- RRType.TXT(), 0, [ "two" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.TXT, 0, [ "one" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.2" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.IN,
+ RRType.TXT, 0, [ "two" ]))
# Same class and type as an existing one, different name
- collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.3" ]))
+ collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.3" ]))
# Same name and type as an existing one, different class
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH(),
- RRType.TXT(), 0, [ "one" ]))
- collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.4" ]))
- collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH(),
- RRType.TXT(), 0, [ "two" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH,
+ RRType.TXT, 0, [ "one" ]))
+ collect_rrsets(collected, create_rrset("b.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.4" ]))
+ collect_rrsets(collected, create_rrset("a.example.org", RRClass.CH,
+ RRType.TXT, 0, [ "two" ]))
strings = [ rrset.to_text() for rrset in collected ]
# note + vs , in this list
'''
# Basic existence checks
# www.example.org should have an A, but not an MX
- rrset = create_rrset("www.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("www.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, expected, rrset)
- rrset = create_rrset("www.example.org", rrclass, RRType.MX(), 0)
+ rrset = create_rrset("www.example.org", rrclass, RRType.MX, 0)
self.__prereq_helper(method, not expected, rrset)
# example.org should have an MX, but not an A
- rrset = create_rrset("example.org", rrclass, RRType.MX(), 0)
+ rrset = create_rrset("example.org", rrclass, RRType.MX, 0)
self.__prereq_helper(method, expected, rrset)
- rrset = create_rrset("example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, not expected, rrset)
# Also check the case where the name does not even exist
- rrset = create_rrset("doesnotexist.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("doesnotexist.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, not expected, rrset)
# Wildcard expansion should not be applied, but literal matches
# should work
- rrset = create_rrset("foo.wildcard.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("foo.wildcard.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, not expected, rrset)
- rrset = create_rrset("*.wildcard.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("*.wildcard.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, expected, rrset)
# Likewise, CNAME directly should match, but what it points to should
# not
- rrset = create_rrset("cname.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("cname.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, not expected, rrset)
- rrset = create_rrset("cname.example.org", rrclass, RRType.CNAME(), 0)
+ rrset = create_rrset("cname.example.org", rrclass, RRType.CNAME, 0)
self.__prereq_helper(method, expected, rrset)
# And also make sure a delegation (itself) is not treated as existing
# data
- rrset = create_rrset("foo.sub.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("foo.sub.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, not expected, rrset)
# But the delegation data itself should match
- rrset = create_rrset("sub.example.org", rrclass, RRType.NS(), 0)
+ rrset = create_rrset("sub.example.org", rrclass, RRType.NS, 0)
self.__prereq_helper(method, expected, rrset)
# As should glue
- rrset = create_rrset("ns.sub.example.org", rrclass, RRType.A(), 0)
+ rrset = create_rrset("ns.sub.example.org", rrclass, RRType.A, 0)
self.__prereq_helper(method, expected, rrset)
def test_check_prerequisite_exists(self):
method = self._session._UpdateSession__prereq_rrset_exists
self.__check_prerequisite_exists_combined(method,
- RRClass.ANY(),
+ RRClass.ANY,
True)
def test_check_prerequisite_does_not_exist(self):
method = self._session._UpdateSession__prereq_rrset_does_not_exist
self.__check_prerequisite_exists_combined(method,
- RRClass.NONE(),
+ RRClass.NONE,
False)
def test_check_prerequisite_exists_value(self):
method = self._session._UpdateSession__prereq_rrset_exists_value
- rrset = create_rrset("www.example.org", RRClass.IN(), RRType.A(), 0)
+ rrset = create_rrset("www.example.org", RRClass.IN, RRType.A, 0)
# empty one should not match
self.__prereq_helper(method, False, rrset)
self.__prereq_helper(method, False, rrset)
# Also test one with more than one RR
- rrset = create_rrset("example.org", RRClass.IN(), RRType.NS(), 0)
+ rrset = create_rrset("example.org", RRClass.IN, RRType.NS, 0)
self.__prereq_helper(method, False, rrset)
add_rdata(rrset, "ns1.example.org.")
self.__prereq_helper(method, False, rrset)
self.__prereq_helper(method, False, rrset)
# Repeat that, but try a different order of Rdata addition
- rrset = create_rrset("example.org", RRClass.IN(), RRType.NS(), 0)
+ rrset = create_rrset("example.org", RRClass.IN, RRType.NS, 0)
self.__prereq_helper(method, False, rrset)
add_rdata(rrset, "ns3.example.org.")
self.__prereq_helper(method, False, rrset)
self.__prereq_helper(method, False, rrset)
# and test one where the name does not even exist
- rrset = create_rrset("doesnotexist.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.1" ])
+ rrset = create_rrset("doesnotexist.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.1" ])
self.__prereq_helper(method, False, rrset)
def __check_prerequisite_name_in_use_combined(self, method, rrclass,
in behaviour) methods __prereq_name_in_use and
__prereq_name_not_in_use
'''
- rrset = create_rrset("example.org", rrclass, RRType.ANY(), 0)
+ rrset = create_rrset("example.org", rrclass, RRType.ANY, 0)
self.__prereq_helper(method, expected, rrset)
- rrset = create_rrset("www.example.org", rrclass, RRType.ANY(), 0)
+ rrset = create_rrset("www.example.org", rrclass, RRType.ANY, 0)
self.__prereq_helper(method, expected, rrset)
rrset = create_rrset("doesnotexist.example.org", rrclass,
- RRType.ANY(), 0)
+ RRType.ANY, 0)
self.__prereq_helper(method, not expected, rrset)
rrset = create_rrset("belowdelegation.sub.example.org", rrclass,
- RRType.ANY(), 0)
+ RRType.ANY, 0)
self.__prereq_helper(method, not expected, rrset)
rrset = create_rrset("foo.wildcard.example.org", rrclass,
- RRType.ANY(), 0)
+ RRType.ANY, 0)
self.__prereq_helper(method, not expected, rrset)
# empty nonterminal should not match
rrset = create_rrset("nonterminal.example.org", rrclass,
- RRType.ANY(), 0)
+ RRType.ANY, 0)
self.__prereq_helper(method, not expected, rrset)
rrset = create_rrset("empty.nonterminal.example.org", rrclass,
- RRType.ANY(), 0)
+ RRType.ANY, 0)
self.__prereq_helper(method, expected, rrset)
def test_check_prerequisite_name_in_use(self):
method = self._session._UpdateSession__prereq_name_in_use
self.__check_prerequisite_name_in_use_combined(method,
- RRClass.ANY(),
+ RRClass.ANY,
True)
def test_check_prerequisite_name_not_in_use(self):
method = self._session._UpdateSession__prereq_name_not_in_use
self.__check_prerequisite_name_in_use_combined(method,
- RRClass.NONE(),
+ RRClass.NONE,
False)
def check_prerequisite_result(self, expected, prerequisites):
# in the specific prerequisite type tests)
# Let's first define a number of prereq's that should succeed
- rrset_exists_yes = create_rrset("example.org", RRClass.ANY(),
- RRType.SOA(), 0)
+ rrset_exists_yes = create_rrset("example.org", RRClass.ANY,
+ RRType.SOA, 0)
- rrset_exists_value_yes = create_rrset("www.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.1" ])
+ rrset_exists_value_yes = create_rrset("www.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.1" ])
rrset_does_not_exist_yes = create_rrset("foo.example.org",
- RRClass.NONE(), RRType.SOA(),
+ RRClass.NONE, RRType.SOA,
0)
- name_in_use_yes = create_rrset("www.example.org", RRClass.ANY(),
- RRType.ANY(), 0)
+ name_in_use_yes = create_rrset("www.example.org", RRClass.ANY,
+ RRType.ANY, 0)
- name_not_in_use_yes = create_rrset("foo.example.org", RRClass.NONE(),
- RRType.ANY(), 0)
+ name_not_in_use_yes = create_rrset("foo.example.org", RRClass.NONE,
+ RRType.ANY, 0)
- rrset_exists_value_1 = create_rrset("example.org", RRClass.IN(),
- RRType.NS(), 0,
+ rrset_exists_value_1 = create_rrset("example.org", RRClass.IN,
+ RRType.NS, 0,
[ "ns1.example.org" ])
- rrset_exists_value_2 = create_rrset("example.org", RRClass.IN(),
- RRType.NS(), 0,
+ rrset_exists_value_2 = create_rrset("example.org", RRClass.IN,
+ RRType.NS, 0,
[ "ns2.example.org" ])
- rrset_exists_value_3 = create_rrset("example.org", RRClass.IN(),
- RRType.NS(), 0,
+ rrset_exists_value_3 = create_rrset("example.org", RRClass.IN,
+ RRType.NS, 0,
[ "ns3.example.org" ])
# and a number that should not
- rrset_exists_no = create_rrset("foo.example.org", RRClass.ANY(),
- RRType.SOA(), 0)
+ rrset_exists_no = create_rrset("foo.example.org", RRClass.ANY,
+ RRType.SOA, 0)
- rrset_exists_value_no = create_rrset("www.example.org", RRClass.IN(),
- RRType.A(), 0, [ "192.0.2.2" ])
+ rrset_exists_value_no = create_rrset("www.example.org", RRClass.IN,
+ RRType.A, 0, [ "192.0.2.2" ])
- rrset_does_not_exist_no = create_rrset("example.org", RRClass.NONE(),
- RRType.SOA(), 0)
+ rrset_does_not_exist_no = create_rrset("example.org", RRClass.NONE,
+ RRType.SOA, 0)
- name_in_use_no = create_rrset("foo.example.org", RRClass.ANY(),
- RRType.ANY(), 0)
+ name_in_use_no = create_rrset("foo.example.org", RRClass.ANY,
+ RRType.ANY, 0)
- name_not_in_use_no = create_rrset("www.example.org", RRClass.NONE(),
- RRType.ANY(), 0)
+ name_not_in_use_no = create_rrset("www.example.org", RRClass.NONE,
+ RRType.ANY, 0)
# check 'no' result codes
self.check_prerequisite_result(Rcode.NXRRSET(),
[ rrset_exists_no ])
rrset_exists_value_1])
def test_prerequisite_notzone(self):
- rrset = create_rrset("some.other.zone.", RRClass.ANY(), RRType.SOA(), 0)
+ rrset = create_rrset("some.other.zone.", RRClass.ANY, RRType.SOA, 0)
self.check_prerequisite_result(Rcode.NOTZONE(), [ rrset ])
def test_prerequisites_formerr(self):
# test for form errors in the prerequisite section
# Class ANY, non-zero TTL
- rrset = create_rrset("example.org", RRClass.ANY(), RRType.SOA(), 1)
+ rrset = create_rrset("example.org", RRClass.ANY, RRType.SOA, 1)
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
# Class ANY, but with rdata
- rrset = create_rrset("example.org", RRClass.ANY(), RRType.A(), 0,
+ rrset = create_rrset("example.org", RRClass.ANY, RRType.A, 0,
[ b'\x00\x00\x00\x00' ])
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
# Class NONE, non-zero TTL
- rrset = create_rrset("example.org", RRClass.NONE(), RRType.SOA(), 1)
+ rrset = create_rrset("example.org", RRClass.NONE, RRType.SOA, 1)
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
# Class NONE, but with rdata
- rrset = create_rrset("example.org", RRClass.NONE(), RRType.A(), 0,
+ rrset = create_rrset("example.org", RRClass.NONE, RRType.A, 0,
[ b'\x00\x00\x00\x00' ])
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
# Matching class and type, but non-zero TTL
- rrset = create_rrset("www.example.org", RRClass.IN(), RRType.A(), 1,
+ rrset = create_rrset("www.example.org", RRClass.IN, RRType.A, 1,
[ "192.0.2.1" ])
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
# Completely different class
- rrset = create_rrset("example.org", RRClass.CH(), RRType.TXT(), 0,
+ rrset = create_rrset("example.org", RRClass.CH, RRType.TXT, 0,
[ "foo" ])
self.check_prerequisite_result(Rcode.FORMERR(), [ rrset ])
'''Prepare a number of RRsets to be used in several update tests
The rrsets are stored in self'''
orig_a_rrset = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.A(), 3600, [ "192.0.2.1" ])
+ RRType.A, 3600, [ "192.0.2.1" ])
self.orig_a_rrset = orig_a_rrset
rrset_update_a = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.A(), 3600,
+ RRType.A, 3600,
[ "192.0.2.2", "192.0.2.3" ])
self.rrset_update_a = rrset_update_a
rrset_update_soa = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600,
+ RRType.SOA, 3600,
[ "ns1.example.org. " +
"admin.example.org. " +
"1233 3600 1800 2419200 7200" ])
self.rrset_update_soa = rrset_update_soa
- rrset_update_soa_del = create_rrset("example.org", RRClass.NONE(),
- RRType.SOA(), 0,
+ rrset_update_soa_del = create_rrset("example.org", RRClass.NONE,
+ RRType.SOA, 0,
[ "ns1.example.org. " +
"admin.example.org. " +
"1233 3600 1800 2419200 7200" ])
self.rrset_update_soa_del = rrset_update_soa_del
rrset_update_soa2 = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600,
+ RRType.SOA, 3600,
[ "ns1.example.org. " +
"admin.example.org. " +
"4000 3600 1800 2419200 7200" ])
self.rrset_update_soa2 = rrset_update_soa2
- rrset_update_del_name = create_rrset("www.example.org", RRClass.ANY(),
- RRType.ANY(), 0)
+ rrset_update_del_name = create_rrset("www.example.org", RRClass.ANY,
+ RRType.ANY, 0)
self.rrset_update_del_name = rrset_update_del_name
- rrset_update_del_name_apex = create_rrset("example.org", RRClass.ANY(),
- RRType.ANY(), 0)
+ rrset_update_del_name_apex = create_rrset("example.org", RRClass.ANY,
+ RRType.ANY, 0)
self.rrset_update_del_name_apex = rrset_update_del_name_apex
- rrset_update_del_rrset = create_rrset("www.example.org", RRClass.ANY(),
- RRType.A(), 0)
+ rrset_update_del_rrset = create_rrset("www.example.org", RRClass.ANY,
+ RRType.A, 0)
self.rrset_update_del_rrset = rrset_update_del_rrset
- rrset_update_del_mx_apex = create_rrset("example.org", RRClass.ANY(),
- RRType.MX(), 0)
+ rrset_update_del_mx_apex = create_rrset("example.org", RRClass.ANY,
+ RRType.MX, 0)
self.rrset_update_del_mx_apex = rrset_update_del_mx_apex
- rrset_update_del_soa_apex = create_rrset("example.org", RRClass.ANY(),
- RRType.SOA(), 0)
+ rrset_update_del_soa_apex = create_rrset("example.org", RRClass.ANY,
+ RRType.SOA, 0)
self.rrset_update_del_soa_apex = rrset_update_del_soa_apex
- rrset_update_del_ns_apex = create_rrset("example.org", RRClass.ANY(),
- RRType.NS(), 0)
+ rrset_update_del_ns_apex = create_rrset("example.org", RRClass.ANY,
+ RRType.NS, 0)
self.rrset_update_del_ns_apex = rrset_update_del_ns_apex
rrset_update_del_rrset_part = create_rrset("www.example.org",
- RRClass.NONE(), RRType.A(),
+ RRClass.NONE, RRType.A,
0,
[ b'\xc0\x00\x02\x02',
b'\xc0\x00\x02\x03' ])
self.rrset_update_del_rrset_part = rrset_update_del_rrset_part
- rrset_update_del_rrset_ns = create_rrset("example.org", RRClass.NONE(),
- RRType.NS(), 0,
+ rrset_update_del_rrset_ns = create_rrset("example.org", RRClass.NONE,
+ RRType.NS, 0,
[ b'\x03ns1\x07example\x03org\x00',
b'\x03ns2\x07example\x03org\x00',
b'\x03ns3\x07example\x03org\x00' ])
self.rrset_update_del_rrset_ns = rrset_update_del_rrset_ns
- rrset_update_del_rrset_mx = create_rrset("example.org", RRClass.NONE(),
- RRType.MX(), 0,
+ rrset_update_del_rrset_mx = create_rrset("example.org", RRClass.NONE,
+ RRType.MX, 0,
[ b'\x00\x0a\x04mail\x07example\x03org\x00' ])
self.rrset_update_del_rrset_mx = rrset_update_del_rrset_mx
def test_acl_before_prereq(self):
- name_in_use_no = create_rrset("foo.example.org", RRClass.ANY(),
- RRType.ANY(), 0)
+ name_in_use_no = create_rrset("foo.example.org", RRClass.ANY,
+ RRType.ANY, 0)
# Test a prerequisite that would fail
self.check_full_handle_result(Rcode.NXDOMAIN(), [], [ name_in_use_no ])
def test_prescan_failures(self):
'''Test whether prescan fails on bad data'''
# out of zone data
- rrset = create_rrset("different.zone", RRClass.ANY(), RRType.TXT(), 0)
+ rrset = create_rrset("different.zone", RRClass.ANY, RRType.TXT, 0)
self.check_prescan_result(Rcode.NOTZONE(), [ rrset ])
# forbidden type, zone class
- rrset = create_rrset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.ANY(), 0,
+ rrset = create_rrset(TEST_ZONE_NAME, TEST_RRCLASS, RRType.ANY, 0,
[ b'\x00' ])
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# non-zero TTL, class ANY
- rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY(), RRType.TXT(), 1)
+ rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY, RRType.TXT, 1)
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# non-zero Rdata, class ANY
- rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY(), RRType.TXT(), 0,
+ rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY, RRType.TXT, 0,
[ "foo" ])
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# forbidden type, class ANY
- rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY(), RRType.AXFR(), 0,
+ rrset = create_rrset(TEST_ZONE_NAME, RRClass.ANY, RRType.AXFR, 0,
[ b'\x00' ])
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# non-zero TTL, class NONE
- rrset = create_rrset(TEST_ZONE_NAME, RRClass.NONE(), RRType.TXT(), 1)
+ rrset = create_rrset(TEST_ZONE_NAME, RRClass.NONE, RRType.TXT, 1)
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# forbidden type, class NONE
- rrset = create_rrset(TEST_ZONE_NAME, RRClass.NONE(), RRType.AXFR(), 0,
+ rrset = create_rrset(TEST_ZONE_NAME, RRClass.NONE, RRType.AXFR, 0,
[ b'\x00' ])
self.check_prescan_result(Rcode.FORMERR(), [ rrset ])
# during this test, we will extend it at some point
extended_a_rrset = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.A(), 3600,
+ RRType.A, 3600,
[ "192.0.2.1",
"192.0.2.2",
"192.0.2.3" ])
# Sanity check, make sure original data is really there before updates
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.orig_a_rrset)
# Add two rrs
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
extended_a_rrset)
# Adding the same RRsets should not make a difference.
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
extended_a_rrset)
# Now delete those two, and we should end up with the original RRset
[ self.rrset_update_del_rrset_part ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.orig_a_rrset)
# 'Deleting' them again should make no difference
[ self.rrset_update_del_rrset_part ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.orig_a_rrset)
# But deleting the entire rrset, independent of its contents, should
[ self.rrset_update_del_rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
# Check that if we update the SOA, it is updated to our value
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_soa2 ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.SOA(),
+ RRType.SOA,
self.rrset_update_soa2)
def test_glue_deletions(self):
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("sub.example.org."),
- RRType.NS())
+ RRType.NS)
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("ns.sub.example.org."),
- RRType.A())
+ RRType.A)
# See that we can delete glue
rrset_delete_glue = create_rrset("ns.sub.example.org.",
- RRClass.ANY(),
- RRType.A(),
+ RRClass.ANY,
+ RRType.A,
0)
self.check_full_handle_result(Rcode.NOERROR(),
[ rrset_delete_glue ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("sub.example.org."),
- RRType.NS())
+ RRType.NS)
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("ns.sub.example.org."),
- RRType.A())
+ RRType.A)
# Check that we don't accidentally delete a delegation if we
# try to delete non-existent glue
rrset_delete_nonexistent_glue = create_rrset("foo.sub.example.org.",
- RRClass.ANY(),
- RRType.A(),
+ RRClass.ANY,
+ RRType.A,
0)
self.check_full_handle_result(Rcode.NOERROR(),
[ rrset_delete_nonexistent_glue ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("sub.example.org."),
- RRType.NS())
+ RRType.NS)
def test_update_add_new_data(self):
'''
# Add data at a completely new name
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("new.example.org"),
- RRType.A())
- rrset = create_rrset("new.example.org", TEST_RRCLASS, RRType.A(),
+ RRType.A)
+ rrset = create_rrset("new.example.org", TEST_RRCLASS, RRType.A,
3600, [ "192.0.2.1", "192.0.2.2" ])
self.check_full_handle_result(Rcode.NOERROR(), [ rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("new.example.org"),
- RRType.A(),
+ RRType.A,
rrset)
# Also try a name where data is present, but none of this
# specific type
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXRRSET,
isc.dns.Name("new.example.org"),
- RRType.TXT())
- rrset = create_rrset("new.example.org", TEST_RRCLASS, RRType.TXT(),
+ RRType.TXT)
+ rrset = create_rrset("new.example.org", TEST_RRCLASS, RRType.TXT,
3600, [ "foo" ])
self.check_full_handle_result(Rcode.NOERROR(), [ rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("new.example.org"),
- RRType.TXT(),
+ RRType.TXT,
rrset)
def test_update_add_new_data_interspersed(self):
# Add data at a completely new name
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("new_a.example.org"),
- RRType.A())
+ RRType.A)
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("new_txt.example.org"),
- RRType.TXT())
+ RRType.TXT)
- rrset1 = create_rrset("new_a.example.org", TEST_RRCLASS, RRType.A(),
+ rrset1 = create_rrset("new_a.example.org", TEST_RRCLASS, RRType.A,
3600, [ "192.0.2.1" ])
- rrset2 = create_rrset("new_txt.example.org", TEST_RRCLASS, RRType.TXT(),
+ rrset2 = create_rrset("new_txt.example.org", TEST_RRCLASS, RRType.TXT,
3600, [ "foo" ])
- rrset3 = create_rrset("new_a.example.org", TEST_RRCLASS, RRType.A(),
+ rrset3 = create_rrset("new_a.example.org", TEST_RRCLASS, RRType.A,
3600, [ "192.0.2.2" ])
self.check_full_handle_result(Rcode.NOERROR(),
# The update should have merged rrset1 and rrset3
rrset_merged = create_rrset("new_a.example.org", TEST_RRCLASS,
- RRType.A(), 3600,
+ RRType.A, 3600,
[ "192.0.2.1", "192.0.2.2" ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("new_a.example.org"),
- RRType.A(),
+ RRType.A,
rrset_merged)
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("new_txt.example.org"),
- RRType.TXT(),
+ RRType.TXT,
rrset2)
def test_update_delete_name(self):
# First check it is there
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
# Delete the entire name
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_name ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
# Should still be gone after pointless second delete
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_name ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
def test_update_apex_special_cases(self):
'''
# the original SOA
orig_soa_rrset = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600,
+ RRType.SOA, 3600,
[ "ns1.example.org. " +
"admin.example.org. " +
"1234 3600 1800 2419200 7200" ])
# At some point, the SOA SERIAL will be auto-incremented
incremented_soa_rrset_01 = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600, ["ns1.example.org. " +
+ RRType.SOA, 3600, ["ns1.example.org. " +
"admin.example.org. " +
"1235 3600 1800 2419200 7200" ])
incremented_soa_rrset_02 = create_rrset("example.org", TEST_RRCLASS,
- RRType.SOA(), 3600, ["ns1.example.org. " +
+ RRType.SOA, 3600, ["ns1.example.org. " +
"admin.example.org. " +
"1236 3600 1800 2419200 7200" ])
# We will delete some of the NS records
orig_ns_rrset = create_rrset("example.org", TEST_RRCLASS,
- RRType.NS(), 3600,
+ RRType.NS, 3600,
[ "ns1.example.org.",
"ns2.example.org.",
"ns3.example.org." ])
# Sanity check, make sure original data is really there before updates
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.NS(),
+ RRType.NS,
orig_ns_rrset)
# We will delete the MX record later in this test, so let's make
# sure that it exists (we do not care about its value)
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.MX())
+ RRType.MX)
# Check that we cannot delete the SOA record by direct deletion
# both by name+type and by full rrset
self.rrset_update_soa_del ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.SOA(),
+ RRType.SOA,
incremented_soa_rrset_01)
# If we delete everything at the apex, the SOA and NS rrsets should be
[ self.rrset_update_del_name_apex ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.SOA(),
+ RRType.SOA,
incremented_soa_rrset_02)
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.NS(),
+ RRType.NS,
orig_ns_rrset)
# but the MX should be gone
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXRRSET,
isc.dns.Name("example.org"),
- RRType.MX())
+ RRType.MX)
# Deleting the NS rrset by name and type only, it should also be left
# untouched
[ self.rrset_update_del_ns_apex ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.NS(),
+ RRType.NS,
orig_ns_rrset)
def test_update_apex_special_case_ns_rrset(self):
self.__initialize_update_rrsets()
# When we are done, we should have a reduced NS rrset
short_ns_rrset = create_rrset("example.org", TEST_RRCLASS,
- RRType.NS(), 3600,
+ RRType.NS, 3600,
[ "ns3.example.org." ])
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_rrset_ns ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.NS(),
+ RRType.NS,
short_ns_rrset)
def test_update_apex_special_case_ns_rrset2(self):
# If we add new NS records, then delete all existing ones, it
# should not keep any
self.__initialize_update_rrsets()
- new_ns = create_rrset("example.org", TEST_RRCLASS, RRType.NS(), 3600,
+ new_ns = create_rrset("example.org", TEST_RRCLASS, RRType.NS, 3600,
[ "newns1.example.org", "newns2.example.org" ])
self.check_full_handle_result(Rcode.NOERROR(),
self.rrset_update_del_rrset_ns ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.NS(),
+ RRType.NS,
new_ns)
def test_update_delete_normal_rrset_at_apex(self):
self.__initialize_update_rrsets()
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("example.org"),
- RRType.MX())
+ RRType.MX)
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_rrset_mx ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXRRSET,
isc.dns.Name("example.org"),
- RRType.MX())
+ RRType.MX)
def test_update_add_then_delete_rrset(self):
# If we add data, then delete the whole rrset, added data should
self.__initialize_update_rrsets()
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_a,
self.rrset_update_del_rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
def test_update_add_then_delete_name(self):
# If we add data, then delete the entire name, added data should
self.__initialize_update_rrsets()
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_a,
self.rrset_update_del_name ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.NXDOMAIN,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
def test_update_delete_then_add_rrset(self):
# If we delete an entire rrset, then add something there again,
self.__initialize_update_rrsets()
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_rrset,
self.rrset_update_a ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.rrset_update_a)
def test_update_delete_then_add_rrset(self):
self.__initialize_update_rrsets()
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A())
+ RRType.A)
self.check_full_handle_result(Rcode.NOERROR(),
[ self.rrset_update_del_name,
self.rrset_update_a ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.rrset_update_a)
def test_update_cname_special_cases(self):
# Sanity check
orig_cname_rrset = create_rrset("cname.example.org", TEST_RRCLASS,
- RRType.CNAME(), 3600,
+ RRType.CNAME, 3600,
[ "www.example.org." ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.CNAME,
isc.dns.Name("cname.example.org"),
- RRType.A(),
+ RRType.A,
orig_cname_rrset)
# If we try to add data where a cname is preset
- rrset = create_rrset("cname.example.org", TEST_RRCLASS, RRType.A(),
+ rrset = create_rrset("cname.example.org", TEST_RRCLASS, RRType.A,
3600, [ "192.0.2.1" ])
self.check_full_handle_result(Rcode.NOERROR(), [ rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.CNAME,
isc.dns.Name("cname.example.org"),
- RRType.A(),
+ RRType.A,
orig_cname_rrset)
# But updating the cname itself should work
new_cname_rrset = create_rrset("cname.example.org", TEST_RRCLASS,
- RRType.CNAME(), 3600,
+ RRType.CNAME, 3600,
[ "mail.example.org." ])
self.check_full_handle_result(Rcode.NOERROR(), [ new_cname_rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.CNAME,
isc.dns.Name("cname.example.org"),
- RRType.A(),
+ RRType.A,
new_cname_rrset)
self.__initialize_update_rrsets()
# present should do nothing either
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.orig_a_rrset)
new_cname_rrset = create_rrset("www.example.org", TEST_RRCLASS,
- RRType.CNAME(), 3600,
+ RRType.CNAME, 3600,
[ "mail.example.org." ])
self.check_full_handle_result(Rcode.NOERROR(), [ new_cname_rrset ])
self.__check_inzone_data(isc.datasrc.ZoneFinder.SUCCESS,
isc.dns.Name("www.example.org"),
- RRType.A(),
+ RRType.A,
self.orig_a_rrset)
def test_update_bad_class(self):
- rrset = create_rrset("example.org.", RRClass.CH(), RRType.TXT(), 0,
+ rrset = create_rrset("example.org.", RRClass.CH, RRType.TXT, 0,
[ "foo" ])
self.check_full_handle_result(Rcode.FORMERR(), [ rrset ])
# Some common test parameters
TEST_ZONE_NAME = Name('example.org')
TEST_SECONDARY_ZONE_NAME = Name('example.com')
-TEST_RRCLASS = RRClass.IN()
+TEST_RRCLASS = RRClass.IN
TEST_TSIG_KEY = TSIGKey("example.com:SFuWd/q99SzF8Yzd1QbB9g==")
TEST_ACL_CONTEXT = isc.acl.dns.RequestContext(
socket.getaddrinfo("192.0.2.1", 1234, 0, socket.SOCK_DGRAM,
# zone class doesn't match (but zone name matches)
self.__datasrc_client.set_find_result(DataSourceClient.SUCCESS)
zconfig = ZoneConfig({(TEST_SECONDARY_ZONE_NAME, TEST_RRCLASS)},
- RRClass.CH(), self.__datasrc_client)
+ RRClass.CH, self.__datasrc_client)
self.assertEqual((ZONE_NOTFOUND, None),
(zconfig.find_zone(TEST_ZONE_NAME, TEST_RRCLASS)))
# similar to the previous case, but also in the secondary list
zconfig = ZoneConfig({(TEST_ZONE_NAME, TEST_RRCLASS)},
- RRClass.CH(), self.__datasrc_client)
+ RRClass.CH, self.__datasrc_client)
self.assertEqual((ZONE_NOTFOUND, None),
(zconfig.find_zone(TEST_ZONE_NAME, TEST_RRCLASS)))
zconfig = ZoneConfig({(TEST_SECONDARY_ZONE_NAME, TEST_RRCLASS),
(Name('example'), TEST_RRCLASS),
(Name('sub.example.org'), TEST_RRCLASS),
- (TEST_ZONE_NAME, RRClass.CH())},
+ (TEST_ZONE_NAME, RRClass.CH)},
TEST_RRCLASS, self.__datasrc_client)
self.assertEqual((ZONE_PRIMARY, self.__datasrc_client),
self.zconfig.find_zone(TEST_ZONE_NAME, TEST_RRCLASS))
# 'All reject' ACL will still apply for any other zones
acl = self.__zconfig.get_update_acl(Name('example.com'), TEST_RRCLASS)
self.assertEqual(REJECT, acl.execute(TEST_ACL_CONTEXT))
- acl = self.__zconfig.get_update_acl(TEST_ZONE_NAME, RRClass.CH())
+ acl = self.__zconfig.get_update_acl(TEST_ZONE_NAME, RRClass.CH)
self.assertEqual(REJECT, acl.execute(TEST_ACL_CONTEXT))
# Test with a map with a few more ACL entries. Should be nothing
REQUEST_LOADER.load([{"action": "REJECT"}]),
(TEST_ZONE_NAME, TEST_RRCLASS):
REQUEST_LOADER.load([{"action": "ACCEPT"}]),
- (TEST_ZONE_NAME, RRClass.CH()):
+ (TEST_ZONE_NAME, RRClass.CH):
REQUEST_LOADER.load([{"action": "DROP"}])}
self.__zconfig.set_update_acl_map(acl_map)
acl = self.__zconfig.get_update_acl(TEST_ZONE_NAME, TEST_RRCLASS)
self.assertEqual(ACCEPT, acl.execute(TEST_ACL_CONTEXT))
acl = self.__zconfig.get_update_acl(Name('example.com'), TEST_RRCLASS)
self.assertEqual(REJECT, acl.execute(TEST_ACL_CONTEXT))
- acl = self.__zconfig.get_update_acl(TEST_ZONE_NAME, RRClass.CH())
+ acl = self.__zconfig.get_update_acl(TEST_ZONE_NAME, RRClass.CH)
self.assertEqual(DROP, acl.execute(TEST_ACL_CONTEXT))
if __name__ == "__main__":
format_zone_str(zone_name, zone_class))
return []
- result, ns_rrset, _ = finder.find(zone_name, RRType.NS())
+ result, ns_rrset, _ = finder.find(zone_name, RRType.NS)
if result is not finder.SUCCESS or ns_rrset is None:
logger.warn(NOTIFY_OUT_ZONE_NO_NS,
format_zone_str(zone_name, zone_class))
return []
- result, soa_rrset, _ = finder.find(zone_name, RRType.SOA())
+ result, soa_rrset, _ = finder.find(zone_name, RRType.SOA)
if result is not finder.SUCCESS or soa_rrset is None or \
soa_rrset.get_rdata_count() != 1:
logger.warn(NOTIFY_OUT_ZONE_BAD_SOA,
ns_result, ns_finder = ds_client.find_zone(ns_name)
if ns_result is DataSourceClient.SUCCESS or \
ns_result is DataSourceClient.PARTIALMATCH:
- result, rrset, _ = ns_finder.find(ns_name, RRType.A())
+ result, rrset, _ = ns_finder.find(ns_name, RRType.A)
if result is ns_finder.SUCCESS and rrset is not None:
addrs.extend([a.to_text() for a in rrset.get_rdata()])
- result, rrset, _ = ns_finder.find(ns_name, RRType.AAAA())
+ result, rrset, _ = ns_finder.find(ns_name, RRType.AAAA)
if result is ns_finder.SUCCESS and rrset is not None:
addrs.extend([aaaa.to_text()
for aaaa in rrset.get_rdata()])
msg.set_opcode(Opcode.NOTIFY())
msg.set_rcode(Rcode.NOERROR())
msg.set_header_flag(Message.HEADERFLAG_AA)
- msg.add_question(Question(zone_name, zone_class, RRType.SOA()))
+ msg.add_question(Question(zone_name, zone_class, RRType.SOA))
msg.add_rrset(Message.SECTION_ANSWER, self._get_zone_soa(zone_name,
zone_class))
return msg, qid
zone_name.to_text() + '/' +
zone_class.to_text() + ' not found')
- result, soa_rrset, _ = finder.find(zone_name, RRType.SOA())
+ result, soa_rrset, _ = finder.find(zone_name, RRType.SOA)
if result is not finder.SUCCESS or soa_rrset is None or \
soa_rrset.get_rdata_count() != 1:
raise NotifyOutDataSourceError('_get_zone_soa: Zone ' +
def test_get_notify_slaves_from_ns(self):
records = self._notify._get_notify_slaves_from_ns(Name('example.net.'),
- RRClass.IN())
+ RRClass.IN)
self.assertEqual(6, len(records))
self.assertEqual('8:8::8:8', records[5])
self.assertEqual('7.7.7.7', records[4])
self.assertEqual('3.3.3.3', records[0])
records = self._notify._get_notify_slaves_from_ns(Name('example.com.'),
- RRClass.IN())
+ RRClass.IN)
self.assertEqual(3, len(records))
self.assertEqual('5:5::5:5', records[2])
self.assertEqual('4:4::4:4', records[1])
def test_get_notify_slaves_from_ns_unusual(self):
self._notify._db_file = TESTDATA_SRCDIR + '/brokentest.sqlite3'
self.assertEqual([], self._notify._get_notify_slaves_from_ns(
- Name('nons.example'), RRClass.IN()))
+ Name('nons.example'), RRClass.IN))
self.assertEqual([], self._notify._get_notify_slaves_from_ns(
- Name('nosoa.example'), RRClass.IN()))
+ Name('nosoa.example'), RRClass.IN))
self.assertEqual([], self._notify._get_notify_slaves_from_ns(
- Name('multisoa.example'), RRClass.IN()))
+ Name('multisoa.example'), RRClass.IN))
self.assertEqual([], self._notify._get_notify_slaves_from_ns(
- Name('nosuchzone.example'), RRClass.IN()))
+ Name('nosuchzone.example'), RRClass.IN))
# This will cause failure in getting access to the data source.
self._notify._db_file = TESTDATA_SRCDIR + '/nodir/error.sqlite3'
self.assertEqual([], self._notify._get_notify_slaves_from_ns(
- Name('example.com'), RRClass.IN()))
+ Name('example.com'), RRClass.IN))
def test_init_notify_out(self):
self._notify._init_notify_out(self._db_file)
a.get_class() == b.get_class() and \
a.get_type() == b.get_type() and \
a.get_ttl() == b.get_ttl() and \
- (a.get_type() == RRType.RRSIG() or
+ (a.get_type() == RRType.RRSIG or
sorted(a.get_rdata()) == sorted(b.get_rdata()))
# The following are short cut utilities to create an RRset of a specific
# tests, so we define default values for them for convenience.
def create_a(name, address, ttl=3600):
- rrset = RRset(name, RRClass.IN(), RRType.A(), RRTTL(ttl))
- rrset.add_rdata(Rdata(RRType.A(), RRClass.IN(), address))
+ rrset = RRset(name, RRClass.IN, RRType.A, RRTTL(ttl))
+ rrset.add_rdata(Rdata(RRType.A, RRClass.IN, address))
return rrset
def create_aaaa(name, address, ttl=3600):
- rrset = RRset(name, RRClass.IN(), RRType.AAAA(), RRTTL(ttl))
- rrset.add_rdata(Rdata(RRType.AAAA(), RRClass.IN(), address))
+ rrset = RRset(name, RRClass.IN, RRType.AAAA, RRTTL(ttl))
+ rrset.add_rdata(Rdata(RRType.AAAA, RRClass.IN, address))
return rrset
def create_ns(nsname, name=Name('example.com'), ttl=3600):
'''For convenience we use a default name often used as a zone name'''
- rrset = RRset(name, RRClass.IN(), RRType.NS(), RRTTL(ttl))
- rrset.add_rdata(Rdata(RRType.NS(), RRClass.IN(), nsname))
+ rrset = RRset(name, RRClass.IN, RRType.NS, RRTTL(ttl))
+ rrset.add_rdata(Rdata(RRType.NS, RRClass.IN, nsname))
return rrset
def create_cname(target='target.example.com', name=Name('example.com'),
ttl=3600):
- rrset = RRset(name, RRClass.IN(), RRType.CNAME(), RRTTL(ttl))
- rrset.add_rdata(Rdata(RRType.CNAME(), RRClass.IN(), target))
+ rrset = RRset(name, RRClass.IN, RRType.CNAME, RRTTL(ttl))
+ rrset.add_rdata(Rdata(RRType.CNAME, RRClass.IN, target))
return rrset
def create_generic(name, rdlen, type=RRType('TYPE65300'), ttl=3600):
The RDATA will be filled with specified length of all-0 data.
'''
- rrset = RRset(name, RRClass.IN(), type, RRTTL(ttl))
- rrset.add_rdata(Rdata(type, RRClass.IN(), '\\# ' +
+ rrset = RRset(name, RRClass.IN, type, RRTTL(ttl))
+ rrset.add_rdata(Rdata(type, RRClass.IN, '\\# ' +
str(rdlen) + ' ' + '00' * rdlen))
return rrset
def create_soa(serial, name=Name('example.com'), ttl=3600):
'''For convenience we use a default name often used as a zone name'''
- rrset = RRset(name, RRClass.IN(), RRType.SOA(), RRTTL(ttl))
+ rrset = RRset(name, RRClass.IN, RRType.SOA, RRTTL(ttl))
rdata_str = 'master.example.com. admin.example.com. ' + \
str(serial) + ' 3600 1800 2419200 7200'
- rrset.add_rdata(Rdata(RRType.SOA(), RRClass.IN(), rdata_str))
+ rrset.add_rdata(Rdata(RRType.SOA, RRClass.IN, rdata_str))
return rrset
"""
# first add or delete must be of type SOA
if len(buf) == 0 and\
- rr.get_type() != isc.dns.RRType.SOA():
+ rr.get_type() != isc.dns.RRType.SOA:
raise ValueError("First " + operation +
" in single update mode must be of type SOA")
# And later adds or deletes may not
elif len(buf) != 0 and\
- rr.get_type() == isc.dns.RRType.SOA():
+ rr.get_type() == isc.dns.RRType.SOA:
raise ValueError("Multiple SOA records in single " +
"update mode " + operation)
buf.append((operation, rr))
'''A helper routine to identify whether two RRsets are of the
same 'type'. For RRSIGs we should consider type covered, too.
'''
- if rrset1.get_type() != isc.dns.RRType.RRSIG() or \
- rrset2.get_type != isc.dns.RRType.RRSIG():
+ if rrset1.get_type() != isc.dns.RRType.RRSIG or \
+ rrset2.get_type != isc.dns.RRType.RRSIG:
return rrset1.get_type() == rrset2.get_type()
# RR type of the both RRsets is RRSIG. Compare type covered.
# We know they have exactly one RDATA.
return a.get_name() == b.get_name() and\
a.get_type() == b.get_type() and\
a.get_rdata()[0] == b.get_rdata()[0]
- if rr.get_type() == isc.dns.RRType.SOA():
+ if rr.get_type() == isc.dns.RRType.SOA:
return buf
else:
return [ op for op in buf if not same_rr(op[1], rr)]
self.__find_all_name = None
self.__find_all_options = None
# Some common values
- self.__rrclass = RRClass.IN()
- self.__type = RRType.A()
+ self.__rrclass = RRClass.IN
+ self.__type = RRType.A
self.__ttl = RRTTL(3600)
# And RRsets
# Create two valid rrsets
# Also create a few other (valid) rrsets
# A SOA record
self.__rrset_soa = RRset(Name('example.org.'), self.__rrclass,
- RRType.SOA(), RRTTL(3600))
- self.__rrset_soa.add_rdata(Rdata(RRType.SOA(), self.__rrclass,
+ RRType.SOA, RRTTL(3600))
+ self.__rrset_soa.add_rdata(Rdata(RRType.SOA, self.__rrclass,
"ns1.example.org. " +
"admin.example.org. " +
"1233 3600 1800 2419200 7200"))
# A few single-rr rrsets that together would for a multi-rr rrset
self.__rrset3 = RRset(Name('c.example.org.'), self.__rrclass,
- RRType.TXT(), self.__ttl)
- self.__rrset3.add_rdata(Rdata(RRType.TXT(), self.__rrclass, "one"))
+ RRType.TXT, self.__ttl)
+ self.__rrset3.add_rdata(Rdata(RRType.TXT, self.__rrclass, "one"))
self.__rrset4 = RRset(Name('c.example.org.'), self.__rrclass,
- RRType.TXT(), self.__ttl)
- self.__rrset4.add_rdata(Rdata(RRType.TXT(), self.__rrclass, "two"))
+ RRType.TXT, self.__ttl)
+ self.__rrset4.add_rdata(Rdata(RRType.TXT, self.__rrclass, "two"))
self.__rrset5 = RRset(Name('c.example.org.'), self.__rrclass,
- RRType.TXT(), self.__ttl)
- self.__rrset5.add_rdata(Rdata(RRType.TXT(), self.__rrclass, "three"))
+ RRType.TXT, self.__ttl)
+ self.__rrset5.add_rdata(Rdata(RRType.TXT, self.__rrclass, "three"))
self.__rrset6 = RRset(Name('d.example.org.'), self.__rrclass,
- RRType.A(), self.__ttl)
- self.__rrset6.add_rdata(Rdata(RRType.A(), self.__rrclass, "192.0.2.1"))
+ RRType.A, self.__ttl)
+ self.__rrset6.add_rdata(Rdata(RRType.A, self.__rrclass, "192.0.2.1"))
self.__rrset7 = RRset(Name('d.example.org.'), self.__rrclass,
- RRType.A(), self.__ttl)
- self.__rrset7.add_rdata(Rdata(RRType.A(), self.__rrclass, "192.0.2.2"))
+ RRType.A, self.__ttl)
+ self.__rrset7.add_rdata(Rdata(RRType.A, self.__rrclass, "192.0.2.2"))
def __mock_compact(self):
"""
self.assertRaises(ValueError, diff.add_data, self.__rrset2)
self.assertRaises(ValueError, diff.delete_data, self.__rrset1)
self.assertRaises(ValueError, diff.find, Name('foo.example.org.'),
- RRType.A())
+ RRType.A)
self.assertRaises(ValueError, diff.find_all, Name('foo.example.org.'))
diff.apply = orig_apply
self.assertRaises(ValueError, diff.apply)
Test a wrong class of rrset is rejected.
"""
diff = Diff(self, Name('example.org.'))
- rrset = RRset(Name('a.example.org.'), RRClass.CH(), RRType.NS(),
+ rrset = RRset(Name('a.example.org.'), RRClass.CH, RRType.NS,
self.__ttl)
- rrset.add_rdata(Rdata(RRType.NS(), RRClass.CH(), 'ns.example.org.'))
+ rrset.add_rdata(Rdata(RRType.NS, RRClass.CH, 'ns.example.org.'))
self.assertRaises(ValueError, diff.add_data, rrset)
self.assertRaises(ValueError, diff.delete_data, rrset)
'''
diff = Diff(self, Name('example.org.'))
rrsig1 = RRset(Name('example.org'), self.__rrclass,
- RRType.RRSIG(), RRTTL(3600))
- rrsig1.add_rdata(Rdata(RRType.RRSIG(), self.__rrclass,
+ RRType.RRSIG, RRTTL(3600))
+ rrsig1.add_rdata(Rdata(RRType.RRSIG, self.__rrclass,
'A 5 3 3600 20000101000000 20000201000000 ' +
'0 example.org. FAKEFAKEFAKE'))
diff.add_data(rrsig1)
rrsig2 = RRset(Name('example.org'), self.__rrclass,
- RRType.RRSIG(), RRTTL(1800))
- rrsig2.add_rdata(Rdata(RRType.RRSIG(), self.__rrclass,
+ RRType.RRSIG, RRTTL(1800))
+ rrsig2.add_rdata(Rdata(RRType.RRSIG, self.__rrclass,
'AAAA 5 3 3600 20000101000000 20000201000000 ' +
'1 example.org. FAKEFAKEFAKE'))
diff.add_data(rrsig2)
'''
diff_multi = Diff(self, Name('example.org.'), single_update_mode=False)
self.assertRaises(ValueError, diff_multi.find_updated,
- Name('example.org.'), RRType.A())
+ Name('example.org.'), RRType.A)
self.assertRaises(ValueError, diff_multi.find_all_updated,
Name('example.org.'))
'''
# full rrset for A (to check compact())
- txt = RRset(Name('c.example.org.'), self.__rrclass, RRType.TXT(),
+ txt = RRset(Name('c.example.org.'), self.__rrclass, RRType.TXT,
RRTTL(3600))
txt.add_rdata(Rdata(txt.get_type(), txt.get_class(), "one"))
txt.add_rdata(Rdata(txt.get_type(), txt.get_class(), "two"))
txt.add_rdata(Rdata(txt.get_type(), txt.get_class(), "three"))
- a = RRset(Name('d.example.org.'), self.__rrclass, RRType.A(),
+ a = RRset(Name('d.example.org.'), self.__rrclass, RRType.A,
RRTTL(3600))
a.add_rdata(Rdata(a.get_type(), a.get_class(), "192.0.2.1"))
a.add_rdata(Rdata(a.get_type(), a.get_class(), "192.0.2.2"))
def test_find(self):
diff = Diff(self, Name('example.org.'))
name = Name('www.example.org.')
- rrtype = RRType.A()
+ rrtype = RRType.A
self.assertFalse(self.__find_called)
self.assertEqual(None, self.__find_name)
def test_find_options(self):
diff = Diff(self, Name('example.org.'))
name = Name('foo.example.org.')
- rrtype = RRType.TXT()
+ rrtype = RRType.TXT
options = ZoneFinder.NO_WILDCARD
self.assertEqual("find_return", diff.find(name, rrtype, options))
# Add a second rr with different type at same name
add_rrset = RRset(self.__rrset3.get_name(), self.__rrclass,
- RRType.A(), self.__ttl)
- add_rrset.add_rdata(Rdata(RRType.A(), self.__rrclass, "192.0.2.2"))
+ RRType.A, self.__ttl)
+ add_rrset.add_rdata(Rdata(RRType.A, self.__rrclass, "192.0.2.2"))
diff.add_data(add_rrset)
self.__check_find_all_call(diff.find_all_updated, self.__rrset3,