def test_datasource_poll(self): node = helper.make_dsenode_new_partition('testnode') pub = FakeDataSource('pub') sub = FakeDataSource('sub') node.register_service(pub) node.register_service(sub) sub.subscribe('pub', 'fake_table') pub.state = {'fake_table': set([(1, 2)])} pub.poll() helper.retry_check_function_return_value( lambda: sub.last_msg['data'], set(pub.state['fake_table'])) self.assertFalse(hasattr(pub, "last_msg"))
def test_policy(self): node = helper.make_dsenode_new_partition('testnode') data = FakeDataSource('data') engine = Dse2Runtime('engine') node.register_service(data) node.register_service(engine) engine.create_policy('alpha') engine.create_policy('data') self.insert_rule(engine, 'p(x) :- data:fake_table(x)', 'alpha') data.state = {'fake_table': set([(1,), (2,)])} data.poll() helper.retry_check_db_equal( engine, 'p(x)', 'p(1) p(2)', target='alpha') self.assertFalse(hasattr(engine, "last_msg"))
def test_policy_data(self): """Test policy correctly processes initial data snapshot.""" node = helper.make_dsenode_new_partition('testnode') node.always_snapshot = False data = FakeDataSource('data') engine = Dse2Runtime('engine') node.register_service(data) node.register_service(engine) engine.create_policy('policy1') engine.create_policy('data') self.insert_rule(engine, 'p(x) :- data:fake_table(x)', 'policy1') data.state = {'fake_table': set([(1,), (2,)])} data.poll() helper.retry_check_db_equal( engine, 'p(x)', 'p(1) p(2)', target='policy1') self.assertFalse(hasattr(engine, "last_msg"))