[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