BIND 10 trac2117, updated. d08c384ab8fa9a5993ac985d9b98d1d2909f463f checkpoint on src/lib/python improvments
BIND 10 source code commits
bind10-changes at lists.isc.org
Sun Sep 16 17:56:38 UTC 2012
The branch, trac2117 has been updated
via d08c384ab8fa9a5993ac985d9b98d1d2909f463f (commit)
from 007839e627b153351406e9ad8d11cdc7324b005c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit d08c384ab8fa9a5993ac985d9b98d1d2909f463f
Author: Francis Dupont <fdupont at isc.org>
Date: Sun Sep 16 19:56:22 2012 +0200
checkpoint on src/lib/python improvments
-----------------------------------------------------------------------
Summary of changes:
src/bin/bind10/run_bind10.bat | 6 ++--
.../python/isc/bind10/tests/sockcreator_test.py | 6 ++--
src/lib/python/isc/cc/PARTIAL_PORT_ON_WINDOWS | 1 -
src/lib/python/isc/cc/session.py | 16 +++++----
src/lib/python/isc/cc/tests/session_test.py | 19 ++++++----
src/lib/python/isc/config/PARTIAL_PORT_ON_WINDOWS | 1 -
src/lib/python/isc/config/cfgmgr.py | 8 ++++-
src/lib/python/isc/util/socketserver_mixin.py | 2 +-
.../lib/python/isc/util/socketspec.py | 25 +++++++------
.../tests/{file_test.py => file_test_win32.py} | 13 ++++---
win32build/check/python-debug.sh | 23 ++++++------
win32build/check/python-release.sh | 23 ++++++------
win32build/env-debug.bat | 38 ++++++++++----------
win32build/env-release.bat | 38 ++++++++++----------
14 files changed, 114 insertions(+), 105 deletions(-)
delete mode 100644 src/lib/python/isc/cc/PARTIAL_PORT_ON_WINDOWS
delete mode 100644 src/lib/python/isc/config/PARTIAL_PORT_ON_WINDOWS
copy tests/lettuce/run_lettuce.sh => src/lib/python/isc/util/socketspec.py (63%)
mode change 100755 => 100644
copy src/lib/python/isc/util/tests/{file_test.py => file_test_win32.py} (76%)
-----------------------------------------------------------------------
diff --git a/src/bin/bind10/run_bind10.bat b/src/bin/bind10/run_bind10.bat
index 1fdb7ee..efaed7c 100755
--- a/src/bin/bind10/run_bind10.bat
+++ b/src/bin/bind10/run_bind10.bat
@@ -15,9 +15,7 @@ rem FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
rem NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
rem WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-setlocal
-c:\cygwin\bin\cygpath -w %BIND10HOME% | set /p b10home=
-endlocal
+for /f %%p in ('c:\cygwin\bin\cygpath -w %BIND10HOME%') do set b10home=%%p
if "%VSCNF%"=="" set VSCNF=release
@@ -50,4 +48,4 @@ set B10_FROM_BUILD=%BIND10HOME%
set BIND10_MSGQ_SOCKET_FILE=%BIND10HOME%/msgq_socket
-%PYTHON% -O %BIND10_PATH%\bind10.py %*
+%PYTHON% -O %BIND10_PATH%\bind10_src.py %*
diff --git a/src/lib/python/isc/bind10/tests/sockcreator_test.py b/src/lib/python/isc/bind10/tests/sockcreator_test.py
index f67781c..4b3fb36 100644
--- a/src/lib/python/isc/bind10/tests/sockcreator_test.py
+++ b/src/lib/python/isc/bind10/tests/sockcreator_test.py
@@ -22,9 +22,11 @@ import struct
import socket
from isc.net.addr import IPAddr
import isc.log
+import isc.util.socketpair
from libutil_io_python import send_fd
from isc.bind10.sockcreator import Parser, CreatorError, WrappedSocket
+
class FakeCreator:
"""
Class emulating the socket to the socket creator. It can be given expected
@@ -295,9 +297,9 @@ class WrapTests(unittest.TestCase):
# check the received one can be used as a socket
# The transport socket
- (t1, t2) = socket.socketpair()
+ (t1, t2) = socketpair.socketpair()
# The payload socket
- (p1, p2) = socket.socketpair()
+ (p1, p2) = socketpair.socketpair()
t2 = WrappedSocket(t2)
diff --git a/src/lib/python/isc/cc/PARTIAL_PORT_ON_WINDOWS b/src/lib/python/isc/cc/PARTIAL_PORT_ON_WINDOWS
deleted file mode 100644
index 30888ae..0000000
--- a/src/lib/python/isc/cc/PARTIAL_PORT_ON_WINDOWS
+++ /dev/null
@@ -1 +0,0 @@
-session
diff --git a/src/lib/python/isc/cc/session.py b/src/lib/python/isc/cc/session.py
index 33a47bd..bcbd767 100644
--- a/src/lib/python/isc/cc/session.py
+++ b/src/lib/python/isc/cc/session.py
@@ -22,6 +22,7 @@ import threading
import bind10_config
import isc.cc.message
+import isc.util.socketspec
class ProtocolError(Exception): pass
class NetworkError(Exception): pass
@@ -31,7 +32,7 @@ class SessionTimeout(Exception): pass
class Session:
MSGQ_DEFAULT_TIMEOUT = 4000
- def __init__(self, socket_file=None):
+ def __init__(self, socket_name=None):
self._socket = None
self._lname = None
self._sequence = 1
@@ -42,17 +43,18 @@ class Session:
self._recv_len_size = 0
self._recv_size = 0
- if socket_file is None:
+ if socket_name is None:
if "BIND10_MSGQ_SOCKET_FILE" in os.environ:
- self.socket_file = os.environ["BIND10_MSGQ_SOCKET_FILE"]
+ self.socket_name = os.environ["BIND10_MSGQ_SOCKET_FILE"]
else:
- self.socket_file = bind10_config.BIND10_MSGQ_SOCKET_FILE
+ self.socket_name = bind10_config.BIND10_MSGQ_SOCKET_FILE
else:
- self.socket_file = socket_file
+ self.socket_name = socket_name
try:
- self._socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- self._socket.connect(self.socket_file)
+ af, address = isc.util.socketspec.parse(self.socket_name)
+ self._socket = socket.socket(af, socket.SOCK_STREAM)
+ self._socket.connect(address)
self.sendmsg({ "type": "getlname" })
env, msg = self.recvmsg(False)
if not env:
diff --git a/src/lib/python/isc/cc/tests/session_test.py b/src/lib/python/isc/cc/tests/session_test.py
index e589085..2d07c7d 100644
--- a/src/lib/python/isc/cc/tests/session_test.py
+++ b/src/lib/python/isc/cc/tests/session_test.py
@@ -19,7 +19,9 @@
import unittest
import os
+import sys
from isc.cc.session import *
+import isc.util.socketspec
# our fake socket, where we can read and insert messages
class MySocket():
@@ -389,24 +391,27 @@ class testSession(unittest.TestCase):
if "BIND10_TEST_SOCKET_FILE" not in os.environ:
self.assertEqual("", "This test can only run if the value BIND10_TEST_SOCKET_FILE is set in the environment")
TEST_SOCKET_FILE = os.environ["BIND10_TEST_SOCKET_FILE"]
+ af, address = isc.util.socketspec.parse(TEST_SOCKET_FILE)
# create a read domain socket to pass into the session
- s1 = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- if os.path.exists(TEST_SOCKET_FILE):
- os.remove(TEST_SOCKET_FILE)
- s1.bind(TEST_SOCKET_FILE)
+ s1 = socket.socket(af, socket.SOCK_STREAM)
+ if sys.platform != 'win32':
+ if os.path.exists(TEST_SOCKET_FILE):
+ os.remove(TEST_SOCKET_FILE)
+ s1.bind(address)
try:
s1.listen(1)
- s2 = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- s2.connect(TEST_SOCKET_FILE)
+ s2 = socket.socket(af, socket.SOCK_STREAM)
+ s2.connect(address)
sess = MySession(1, s2)
# set timeout to 100 msec, so test does not take too long
sess.set_timeout(100)
self.assertRaises(SessionTimeout, sess.group_recvmsg, False)
finally:
- os.remove(TEST_SOCKET_FILE)
+ if sys.platform != 'win32':
+ os.remove(TEST_SOCKET_FILE)
if __name__ == "__main__":
unittest.main()
diff --git a/src/lib/python/isc/config/PARTIAL_PORT_ON_WINDOWS b/src/lib/python/isc/config/PARTIAL_PORT_ON_WINDOWS
deleted file mode 100644
index 8adbf92..0000000
--- a/src/lib/python/isc/config/PARTIAL_PORT_ON_WINDOWS
+++ /dev/null
@@ -1 +0,0 @@
-ccsession cfgmgr
diff --git a/src/lib/python/isc/config/cfgmgr.py b/src/lib/python/isc/config/cfgmgr.py
index d401b47..883615c 100644
--- a/src/lib/python/isc/config/cfgmgr.py
+++ b/src/lib/python/isc/config/cfgmgr.py
@@ -20,9 +20,9 @@
"""
import isc
-import signal
import ast
import os
+import sys
import copy
import tempfile
import json
@@ -135,8 +135,14 @@ class ConfigManagerData:
file.write("\n")
file.close()
if output_file_name:
+ if sys.platform == 'win32':
+ if os.path.exists(output_file_name):
+ os.remove(output_file_name)
os.rename(filename, output_file_name)
else:
+ if sys.platform== 'win32':
+ if os.path.exists(self.db_filename):
+ os.remove(self.db_filename)
os.rename(filename, self.db_filename)
except IOError as ioe:
logger.error(CFGMGR_IOERROR_WHILE_WRITING_CONFIGURATION, ioe)
diff --git a/src/lib/python/isc/util/socketserver_mixin.py b/src/lib/python/isc/util/socketserver_mixin.py
index 08797e6..b116ba8 100644
--- a/src/lib/python/isc/util/socketserver_mixin.py
+++ b/src/lib/python/isc/util/socketserver_mixin.py
@@ -16,7 +16,7 @@
import threading
import socket
import select
-from socketpair import socketpair
+from isc.util.socketpair import socketpair
SOCK_DATA = b'somedata'
class NoPollMixIn:
diff --git a/src/lib/python/isc/util/socketspec.py b/src/lib/python/isc/util/socketspec.py
new file mode 100644
index 0000000..a4034ac
--- /dev/null
+++ b/src/lib/python/isc/util/socketspec.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2012 Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+"""Parse socket name to spec, aka address-family and address."""
+
+import socket
+import sys
+
+def parse(name):
+ """parse and return family and address pair"""
+ if sys.platform != 'win32':
+ return socket.AF_UNIX, name
+ elif name[:3] == 'v4_':
+ return socket.AF_INET, ('127.0.0.1', int(name[3:]))
+ elif name[:3] == 'v6_':
+ return socket.AF_INET6, ('::1', int(name[3:]), 0, 0)
+ else:
+ raise ValueError('invalid socket spec: ' + name)
diff --git a/src/lib/python/isc/util/tests/file_test_win32.py b/src/lib/python/isc/util/tests/file_test_win32.py
new file mode 100644
index 0000000..2869420
--- /dev/null
+++ b/src/lib/python/isc/util/tests/file_test_win32.py
@@ -0,0 +1,35 @@
+# Copyright (C) 2011 Internet Systems Consortium.
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM
+# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
+# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import os
+
+import isc.util.file
+import unittest
+
+class FileTest(unittest.TestCase):
+ def test_search_path_find(self):
+ """Test it returns the first occurence of the file"""
+ os.chdir(os.environ['BIND10HOME'] + '/src/lib/python/isc/util/tests')
+ self.assertEqual('.\Makefile.am',
+ isc.util.file.path_search('Makefile.am',
+ ['\no\such\directory\\', '.',
+ '..\tests\\']))
+
+ def test_search_path_notfound(self):
+ """Test it throws an exception when the file can't be found"""
+ self.assertRaises(IOError, isc.util.file.path_search, 'no file', ['\no\such\directory'])
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/win32build/check/python-debug.sh b/win32build/check/python-debug.sh
index 7f0c507..49ce272 100755
--- a/win32build/check/python-debug.sh
+++ b/win32build/check/python-debug.sh
@@ -25,11 +25,10 @@ for pytest in ${PYTESTS}
fi
done
-echo partial python cc / Debug
+echo python cc / Debug
export PYTHONPATH=${CPYTHONPATH}
-#export BIND10_TEST_SOCKET_FILE=
-#PYTESTS='message_test.py data_test.py session_test.py'
-PYTESTS='message_test.py data_test.py'
+export BIND10_TEST_SOCKET_FILE=v4_12345
+PYTESTS='message_test.py data_test.py session_test.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
@@ -39,17 +38,16 @@ for pytest in ${PYTESTS}
fi
done
-echo partial python config / Debug
+echo python config / Debug
export PYTHONPATH="${CPYTHONPATH};${BIND10HOME}/src/lib/python/isc/config"
export B10_LOCKFILE_DIR_FROM_BUILD=${BIND10HOME}
export B10_TEST_PLUGIN_DIR=${BIND10HOME}/src/bin/cfgmgr/plugins
export CONFIG_TESTDATA_PATH=${BIND10HOME}/src/lib/config/tests/testdata
export CONFIG_WR_TESTDATA_PATH=${BIND10HOME}/src/lib/config/tests/testdata
-#PYTESTS='ccsession_test.py
-# cfgmgr_test.py
-# config_data_test.py
-# module_spec_test.py'
-PYTESTS='config_data_test.py module_spec_test.py'
+PYTESTS='ccsession_test.py
+ cfgmgr_test.py
+ config_data_test.py
+ module_spec_test.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
@@ -118,10 +116,9 @@ PYTESTS='socketsession_test.py'
# fi
# done
-echo partial python util / Debug
+echo python util / Debug
export PYTHONPATH=${CPYTHONPATH}
-#PYTESTS='process_test.py socketserver_mixin_test.py file_test.py'
-PYTESTS='process_test.py socketserver_mixin_test.py'
+PYTESTS='process_test.py socketserver_mixin_test.py file_test_win32.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
diff --git a/win32build/check/python-release.sh b/win32build/check/python-release.sh
index 153f72b..59051a1 100755
--- a/win32build/check/python-release.sh
+++ b/win32build/check/python-release.sh
@@ -25,11 +25,10 @@ for pytest in ${PYTESTS}
fi
done
-echo partial python cc / Release
+echo python cc / Release
export PYTHONPATH=${CPYTHONPATH}
-#export BIND10_TEST_SOCKET_FILE=
-#PYTESTS='message_test.py data_test.py session_test.py'
-PYTESTS='message_test.py data_test.py'
+export BIND10_TEST_SOCKET_FILE=v4_12345
+PYTESTS='message_test.py data_test.py session_test.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
@@ -39,17 +38,16 @@ for pytest in ${PYTESTS}
fi
done
-echo partial python config / Release
+echo python config / Release
export PYTHONPATH="${CPYTHONPATH};${BIND10HOME}/src/lib/python/isc/config"
export B10_LOCKFILE_DIR_FROM_BUILD=${BIND10HOME}
export B10_TEST_PLUGIN_DIR=${BIND10HOME}/src/bin/cfgmgr/plugins
export CONFIG_TESTDATA_PATH=${BIND10HOME}/src/lib/config/tests/testdata
export CONFIG_WR_TESTDATA_PATH=${BIND10HOME}/src/lib/config/tests/testdata
-#PYTESTS='ccsession_test.py
-# cfgmgr_test.py
-# config_data_test.py
-# module_spec_test.py'
-PYTESTS='config_data_test.py module_spec_test.py'
+PYTESTS='ccsession_test.py
+ cfgmgr_test.py
+ config_data_test.py
+ module_spec_test.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
@@ -118,10 +116,9 @@ PYTESTS='socketsession_test.py'
# fi
# done
-echo partial python util / Release
+echo python util / Release
export PYTHONPATH=${CPYTHONPATH}
-#PYTESTS='process_test.py socketserver_mixin_test.py file_test.py'
-PYTESTS='process_test.py socketserver_mixin_test.py'
+PYTESTS='process_test.py socketserver_mixin_test.py file_test_win32.py'
for pytest in ${PYTESTS}
do
echo ${pytest}
diff --git a/win32build/env-debug.bat b/win32build/env-debug.bat
index d562b9f..bab89f6 100755
--- a/win32build/env-debug.bat
+++ b/win32build/env-debug.bat
@@ -1,20 +1,18 @@
- at rem Setting environment for BIND10 - Debug
-
- at echo off
-
-setlocal
-c:\cygwin\bin\cygpath -w %BIND10HOME% | set /p b10home=
-c:\cygwin\bin\cygpath -w %BIND10HOME%/.. | set /p b10parent=
-endlocal
-
-set B10_FROM_BUILD=%BIND10HOME%
-set VSVER=VS2010
-set RTVER=v100
-set PATH=%PATH%;%b10parent%\gtest\%RTVER%\Debug
-set PATH=%PATH%;%b10parent%\botan\%RTVER%\Debug
-set PATH=%PATH%;%b10parent%\log4cplus\%RTVER%\Debug
-set PATH=%PATH%;%b10home%\win32build\%VSVER%\Debug
-set PYTHONPATH=%PYTHONPATH%;%b10home%\win32build\%VSVER%\Debug
-set PYTHONPATH=%PYTHONPATH%;%b10home%\src\lib\python\isc\util
-set PYTHON=C:\Python32\python_d.exe
-set BIND10_PATH=%BIND10HOME%/src/bin/bind10
+ at rem Setting environment for BIND10 - Debug
+
+ at echo off
+
+for /f %%p in ('c:\cygwin\bin\cygpath -w %BIND10HOME%') do set b10home=%%p
+for /f %%p in ('c:\cygwin\bin\cygpath -w %BIND10HOME%/..') do set b10parent=%%p
+
+set B10_FROM_BUILD=%BIND10HOME%
+set VSVER=VS2010
+set RTVER=v100
+set PATH=%PATH%;%b10parent%\gtest\%RTVER%\Debug
+set PATH=%PATH%;%b10parent%\botan\%RTVER%\Debug
+set PATH=%PATH%;%b10parent%\log4cplus\%RTVER%\Debug
+set PATH=%PATH%;%b10home%\win32build\%VSVER%\Debug
+set PYTHONPATH=%PYTHONPATH%;%b10home%\win32build\%VSVER%\Debug
+set PYTHONPATH=%PYTHONPATH%;%b10home%\src\lib\python\isc\util
+set PYTHON=C:\Python32\python_d.exe
+set BIND10_PATH=%BIND10HOME%/src/bin/bind10
diff --git a/win32build/env-release.bat b/win32build/env-release.bat
index 9755d9c..f3a2645 100755
--- a/win32build/env-release.bat
+++ b/win32build/env-release.bat
@@ -1,20 +1,18 @@
- at rem Setting environment for BIND10 - Release
-
- at echo off
-
-setlocal
-c:\cygwin\bin\cygpath -w %BIND10HOME% | set /p b10home=
-c:\cygwin\bin\cygpath -w %BIND10HOME%/.. | set /p b10parent=
-endlocal
-
-set B10_FROM_BUILD=%BIND10HOME%
-set VSVER=VS2010
-set RTVER=v100
-set PATH=%PATH%;%b10parent%\gtest\%RTVER%\Release
-set PATH=%PATH%;%b10parent%\botan\%RTVER%\Release
-set PATH=%PATH%;%b10parent%\log4cplus\%RTVER%\Release
-set PATH=%PATH%;%b10home%\win32build\%VSVER%\Release
-set PYTHONPATH=%PYTHONPATH%;%b10home%\win32build\%VSVER%\Release
-set PYTHONPATH=%PYTHONPATH%;%b10home%\src\lib\python\isc\util
-set PYTHON=C:\Python32\python.exe
-set BIND10_PATH=%BIND10HOME%/src/bin/bind10
+ at rem Setting environment for BIND10 - Release
+
+ at echo off
+
+for /f %%p in ('c:\cygwin\bin\cygpath -w %BIND10HOME%') do set b10home=%%p
+for /f %%p in ('c:\cygwin\bin\cygpath -w %BIND10HOME%/..') do set b10parent=%%p
+
+set B10_FROM_BUILD=%BIND10HOME%
+set VSVER=VS2010
+set RTVER=v100
+set PATH=%PATH%;%b10parent%gtest\%RTVER%\Release
+set PATH=%PATH%;%b10parent%botan\%RTVER%\Release
+set PATH=%PATH%;%b10parent%log4cplus\%RTVER%\Release
+set PATH=%PATH%;%b10home%\win32build\%VSVER%\Release
+set PYTHONPATH=%PYTHONPATH%;%b10home%\win32build\%VSVER%\Release
+set PYTHONPATH=%PYTHONPATH%;%b10home%\src\lib\python\isc\util
+set PYTHON=C:\Python32\python.exe
+set BIND10_PATH=%BIND10HOME%/src/bin/bind10
More information about the bind10-changes
mailing list