Commit 047ea7f6 authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[1427] Initialization

parent 51f3cb54
......@@ -47,6 +47,9 @@ class Cache:
it is removed from cache and closed.
This is expected to be part of Boss, it is not a general utility class.
It is not expected to be subclassed. The methods and members are named
as protected so tests are easier access into them.
"""
def __init__(self, creator):
"""
......@@ -54,7 +57,25 @@ class Cache:
(isc.bind10.sockcreator.Creator) which will be used to create yet
uncached sockets.
"""
pass
self._creator = creator
# The sockets we have live here, these dicts are various ways how
# to get them. Each of them contains the Socket objects somehow
# This one is dict of token: socket for the ones that were not yet
# picked up by an application.
self._waiting_tokens = {}
# This format is the same as above, but for the tokens that were
# already picked up by the application and not yet released.
self._active_tokens = {}
# This is a dict from applications to list of sockets, for the
# sockets already picked up by an application
self._active_apps = {}
# The sockets live here to be indexed by address and subsequently
# by port
self._sockets = {}
# These are just the tokens actually in use, so we don't generate
# dupes. If one is dropped, it can be potentially reclaimed.
self._live_tokens = set()
def get_token(self, protocol, address, port, share_mode, share_name):
"""
......
PYCOVERAGE_RUN = @PYCOVERAGE_RUN@
#PYTESTS = args_test.py bind10_test.py
# NOTE: this has a generated test found in the builddir
PYTESTS = sockcreator_test.py component_test.py
PYTESTS = sockcreator_test.py component_test.py socket_cache_test.py
EXTRA_DIST = $(PYTESTS)
......
......@@ -13,9 +13,6 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# This test file is generated .py.in -> .py just to be in the build dir,
# same as the rest of the tests. Saves a lot of stuff in makefile.
"""
Tests for the bind10.sockcreator module.
"""
......
# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
#
# 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 unittest
import isc.log
import isc.bind10.socket_cache
class SocketCacheTest(unittest.TestCase):
"""
Some tests for the isc.bind10.socket_cache.Cache.
This class, as well as being the testcase, pretends to be the
socket creator so it can hijack all the requests for sockets.
"""
def setUp(self):
"""
Creates the cache for tests with us being the socket creator.
"""
self.__cache = isc.bind10.socket_cache.Cache(self)
def test_init(self):
"""
Checks the internals of the cache just after the creation.
"""
self.assertEqual(self, self.__cache._creator)
self.assertEqual({}, self.__cache._waiting_tokens)
self.assertEqual({}, self.__cache._active_tokens)
self.assertEqual({}, self.__cache._active_apps)
self.assertEqual({}, self.__cache._sockets)
self.assertEqual(set(), self.__cache._live_tokens)
if __name__ == '__main__':
isc.log.init("bind10")
isc.log.resetUnitTestRootLogger()
unittest.main()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment