def testHolder(self): pool_address = '127.0.0.1:%d' % get_next_port() with create_actor_pool(n_process=1, backend='gevent', address=pool_address) as pool: pool.create_actor(PlasmaKeyMapActor, uid=PlasmaKeyMapActor.default_uid()) pool.create_actor(WorkerClusterInfoActor, [pool_address], uid=WorkerClusterInfoActor.default_uid()) pool.create_actor(KVStoreActor, uid=KVStoreActor.default_uid()) pool.create_actor(DispatchActor, uid=DispatchActor.default_uid()) pool.create_actor(QuotaActor, 1024 * 1024 * 10, uid=MemQuotaActor.default_uid()) cache_ref = pool.create_actor(ChunkHolderActor, self.plasma_storage_size, uid=ChunkHolderActor.default_uid()) pool.create_actor(SpillActor) try: test_ref = pool.create_actor(CacheTestActor) test_ref.run_test_cache() while not test_ref.get_exc_info()[0]: pool.sleep(0.1) exc_info = test_ref.get_exc_info()[1] if exc_info: six.reraise(*exc_info) finally: pool.destroy_actor(cache_ref)
def testEnsureTimeout(self, *_): from mars.errors import PromiseTimeout pool_address = '127.0.0.1:%d' % get_next_port() with create_actor_pool(n_process=1, backend='gevent', address=pool_address) as pool: pool.create_actor(PlasmaKeyMapActor, uid=PlasmaKeyMapActor.default_uid()) pool.create_actor(WorkerClusterInfoActor, [pool_address], uid=WorkerClusterInfoActor.default_uid()) pool.create_actor(KVStoreActor, uid=KVStoreActor.default_uid()) pool.create_actor(DispatchActor, uid=DispatchActor.default_uid()) pool.create_actor(QuotaActor, 1024 * 1024 * 10, uid=MemQuotaActor.default_uid()) pool.create_actor(SpillActor, uid=SpillActor.default_uid()) cache_ref = pool.create_actor(ChunkHolderActor, self.plasma_storage_size, uid=ChunkHolderActor.default_uid()) try: options.worker.prepare_data_timeout = 2 test_ref = pool.create_actor(CacheTestActor) test_ref.run_test_ensure_timeout() while not test_ref.get_exc_info()[0]: pool.sleep(0.1) exc_info = test_ref.get_exc_info()[1] self.assertIsNotNone(exc_info) self.assertIsInstance(exc_info[1], PromiseTimeout) finally: options.worker.prepare_data_timeout = 600 pool.destroy_actor(cache_ref)
def testKVStoreActor(self): etcd_port = get_next_port() proc_helper = EtcdProcessHelper(port_range_start=etcd_port) options.kv_store = 'etcd://127.0.0.1:%s' % etcd_port with proc_helper.run(), create_actor_pool(n_process=1, backend='gevent') as pool: store_ref = pool.create_actor(KVStoreActor, uid=KVStoreActor.default_uid()) store_ref.write('/node/v1', 'value1') store_ref.write('/node/v2', 'value2') store_ref.write_batch([ ('/node/v2', 'value2'), ('/node/v3', 'value3'), ]) self.assertEqual(store_ref.read('/node/v1').value, 'value1') self.assertListEqual([ v.value for v in store_ref.read_batch(['/node/v2', '/node/v3']) ], ['value2', 'value3']) store_ref.delete('/node', dir=True, recursive=True) with self.assertRaises(KeyError): store_ref.delete('/node', dir=True, recursive=True) store_ref.delete('/node', dir=True, recursive=True, silent=True)