[svn] commit: r3135 - in /branches/trac232/src/bin: bind10/run_bind10.sh.in xfrin/tests/Makefile.am xfrin/tests/xfrin_test.py xfrin/xfrin.py.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Oct 7 14:17:14 UTC 2010
Author: jelte
Date: Thu Oct 7 14:17:14 2010
New Revision: 3135
Log:
checkpoint; very initial handling of writables by xfrin
Modified:
branches/trac232/src/bin/bind10/run_bind10.sh.in
branches/trac232/src/bin/xfrin/tests/Makefile.am
branches/trac232/src/bin/xfrin/tests/xfrin_test.py
branches/trac232/src/bin/xfrin/xfrin.py.in
Modified: branches/trac232/src/bin/bind10/run_bind10.sh.in
==============================================================================
--- branches/trac232/src/bin/bind10/run_bind10.sh.in (original)
+++ branches/trac232/src/bin/bind10/run_bind10.sh.in Thu Oct 7 14:17:14 2010
@@ -23,7 +23,7 @@
PATH=@abs_top_builddir@/src/bin/msgq:@abs_top_builddir@/src/bin/auth:@abs_top_builddir@/src/bin/cfgmgr:@abs_top_builddir@/src/bin/cmdctl:@abs_top_builddir@/src/bin/xfrin:@abs_top_builddir@/src/bin/xfrout:@abs_top_builddir@/src/bin/zonemgr:$PATH
export PATH
-PYTHONPATH=@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs
+PYTHONPATH=@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/datasrc/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs
export PYTHONPATH
# If necessary (rare cases), explicitly specify paths to dynamic libraries
Modified: branches/trac232/src/bin/xfrin/tests/Makefile.am
==============================================================================
--- branches/trac232/src/bin/xfrin/tests/Makefile.am (original)
+++ branches/trac232/src/bin/xfrin/tests/Makefile.am Thu Oct 7 14:17:14 2010
@@ -14,7 +14,7 @@
check-local:
for pytest in $(PYTESTS) ; do \
echo Running test: $$pytest ; \
- env PYTHONPATH=$(abs_top_builddir)/src/lib/dns/python/.libs:$(abs_top_builddir)/src/bin/xfrin:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
+ env PYTHONPATH=$(abs_top_builddir)/src/lib/dns/python/.libs:$(abs_top_builddir)/src/lib/datasrc/python/.libs:$(abs_top_builddir)/src/bin/xfrin:$(abs_top_srcdir)/src/lib/python:$(abs_top_builddir)/src/lib/python \
$(LIBRARY_PATH_PLACEHOLDER) \
$(PYCOVERAGE) $(abs_srcdir)/$$pytest || exit ; \
done
Modified: branches/trac232/src/bin/xfrin/tests/xfrin_test.py
==============================================================================
--- branches/trac232/src/bin/xfrin/tests/xfrin_test.py (original)
+++ branches/trac232/src/bin/xfrin/tests/xfrin_test.py Thu Oct 7 14:17:14 2010
@@ -50,7 +50,7 @@
default_questions = [example_axfr_question]
default_answers = [soa_rrset]
-class XfrinTestException(Exception):
+class XfrinTestException(XfrinException):
pass
class MockXfrin(Xfrin):
@@ -319,10 +319,7 @@
def test_do_soacheck_broken_response(self):
self.conn.response_generator = self._create_broken_response_data
- # XXX: TODO: this test failed here, should xfr not raise an
- # exception but simply drop and return FAIL?
- #self.assertEqual(self.conn.do_xfrin(True), XFRIN_FAIL)
- self.assertRaises(MessageTooShort, self.conn.do_xfrin, True)
+ self.assertEqual(self.conn.do_xfrin(True), XFRIN_FAIL)
def test_do_soacheck_badqid(self):
# the QID mismatch would internally trigger a XfrinException exception,
Modified: branches/trac232/src/bin/xfrin/xfrin.py.in
==============================================================================
--- branches/trac232/src/bin/xfrin/xfrin.py.in (original)
+++ branches/trac232/src/bin/xfrin/xfrin.py.in Thu Oct 7 14:17:14 2010
@@ -26,6 +26,8 @@
import threading
import socket
import random
+import libdns_python
+import libdata_source_python
from optparse import OptionParser, OptionValueError
from isc.config.ccsession import *
from isc.notify import notify_out
@@ -193,9 +195,11 @@
self.log_msg(logstr + 'started')
# TODO: .AXFR() RRType.AXFR()
self._send_query(RRType(252))
- isc.datasrc.sqlite3_ds.load(self._db_file, self._zone_name,
- self._handle_xfrin_response)
-
+ #isc.datasrc.sqlite3_ds.load(self._db_file, self._zone_name,
+ # self._handle_xfrin_response)
+ self._handle_xfrin_response_new()
+
+
self.log_msg(logstr + 'succeeded')
ret = XFRIN_OK
@@ -299,6 +303,37 @@
if self._shutdown_event.is_set():
raise XfrinException('xfrin is forced to stop')
+
+ def _handle_xfrin_response_new(self):
+ '''Return a generator for the response to a zone transfer. '''
+ data_len = self._get_request_response(2)
+ msg_len = socket.htons(struct.unpack('H', data_len)[0])
+ recvdata = self._get_request_response(msg_len)
+ msg = Message(Message.PARSE)
+ msg.from_wire(recvdata)
+ self._check_response_status(msg)
+
+ answer_section = msg.get_section(Section.ANSWER())
+ #for rr in self._handle_answer_section(answer_section):
+ # yield rr
+ print("[XX] MESSAGE:")
+ print(msg)
+ ds = libdata_source_python.DataSrc()
+ ds.init("{ \"database_file\": \"" + self._db_file +"\" }")
+ print("[XX] db file: " + self._db_file)
+ print("[XX] zone name: " + self._zone_name)
+ transaction = libdata_source_python.DataSrcTransaction(ds, Name(self._zone_name), RRClass.IN())
+ result = ds.start_transaction(transaction)
+ print("[XX] start transaction: " + str(result))
+ result = ds.do_ixfr(transaction, answer_section)
+ print("[XX] do ixfr: " + str(result))
+
+ result = ds.commit_transaction(transaction)
+ print("[XX] commit: " + str(result))
+ ds.close()
+
+ #if self._soa_rr_count == 2:
+ # break
def handle_read(self):
'''Read query's response from socket. '''
More information about the bind10-changes
mailing list