def createManagerAndView(cacheDir=None, useMemoChannel=False): viewChannel, managerChannel = SharedStateNative.InMemoryChannelWithoutMemo(callbackScheduler) storage = None if cacheDir: storage = SharedStateNative.Storage.FileStorage( cacheDir, 10, .1, useMemoChannel ) manager = SharedStateNative.KeyspaceManager( 0, 1, 0x7fffffff, 0x7fffffff, '', storage) manager.add(managerChannel) view = DummyView(viewChannel) view.initialize() return view, manager
def KeyspaceManager(randomSeed, numManagers, backupInterval=60 * 10, pingInterval=20, cachePathOverride=None, maxOpenFiles=None, maxLogFileSizeMb=10): if cachePathOverride is None: cachePathOverride = Setup.config().sharedStateCache if maxOpenFiles is None: import resource maxOpenFiles = min( resource.getrlimit(resource.RLIMIT_NOFILE)[0] / 2, 1000) if cachePathOverride != "": logging.info( "Creating FileStorage(cachePathOverride=%s, maxOpenFiles=%s, maxLogFileSizeMb=%s)", cachePathOverride, maxOpenFiles, maxLogFileSizeMb) storage = SharedStateNative.Storage.FileStorage( cachePathOverride, maxOpenFiles, maxLogFileSizeMb) else: storage = None return SharedStateNative.KeyspaceManager(randomSeed, numManagers, backupInterval, pingInterval, storage)
def test_simple_manager(self): view = createViewWithNoChannel() before = TCMalloc.getBytesUsed() keyspace = SharedState.Keyspace("TakeHighestIdKeyType", json('test'), 1) cache = SharedStateNative.KeyspaceManager(0, 1, 0x7fffffff, 0x7fffffff, None) for event in producePartialEvents(view, [keyspace], 'test', 1024 * 32, 1, 8): cache.addEvent(event) view = None gc.collect() bytesUsed = TCMalloc.getBytesUsed() - before self.assertTrue(bytesUsed < 1024 * 128)