mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-26 08:56:21 +02:00
Fixing more Cassandra consistency issues (#488)
* Fixing more Cassandra work * Fix tests
This commit is contained in:
parent
ccaec88a72
commit
85e669c763
23 changed files with 196 additions and 208 deletions
|
|
@ -30,9 +30,9 @@ class TestTriplesWriterConfiguration:
|
|||
with patch.dict(os.environ, env_vars, clear=True):
|
||||
processor = TriplesWriter(taskgroup=MagicMock())
|
||||
|
||||
assert processor.graph_host == ['env-host1', 'env-host2']
|
||||
assert processor.username == 'env-user'
|
||||
assert processor.password == 'env-pass'
|
||||
assert processor.cassandra_host == ['env-host1', 'env-host2']
|
||||
assert processor.cassandra_username == 'env-user'
|
||||
assert processor.cassandra_password == 'env-pass'
|
||||
|
||||
@patch('trustgraph.direct.cassandra.TrustGraph')
|
||||
def test_parameter_override_environment(self, mock_trust_graph):
|
||||
|
|
@ -51,13 +51,13 @@ class TestTriplesWriterConfiguration:
|
|||
cassandra_password='param-pass'
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['param-host1', 'param-host2']
|
||||
assert processor.username == 'param-user'
|
||||
assert processor.password == 'param-pass'
|
||||
assert processor.cassandra_host == ['param-host1', 'param-host2']
|
||||
assert processor.cassandra_username == 'param-user'
|
||||
assert processor.cassandra_password == 'param-pass'
|
||||
|
||||
@patch('trustgraph.direct.cassandra.TrustGraph')
|
||||
def test_backward_compatibility_graph_params(self, mock_trust_graph):
|
||||
"""Test backward compatibility with old graph_* parameter names."""
|
||||
def test_no_backward_compatibility_graph_params(self, mock_trust_graph):
|
||||
"""Test that old graph_* parameter names are no longer supported."""
|
||||
processor = TriplesWriter(
|
||||
taskgroup=MagicMock(),
|
||||
graph_host='compat-host',
|
||||
|
|
@ -65,9 +65,10 @@ class TestTriplesWriterConfiguration:
|
|||
graph_password='compat-pass'
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['compat-host']
|
||||
assert processor.username == 'compat-user'
|
||||
assert processor.password == 'compat-pass'
|
||||
# Should use defaults since graph_* params are not recognized
|
||||
assert processor.cassandra_host == ['cassandra'] # Default
|
||||
assert processor.cassandra_username is None
|
||||
assert processor.cassandra_password is None
|
||||
|
||||
@patch('trustgraph.direct.cassandra.TrustGraph')
|
||||
def test_default_configuration(self, mock_trust_graph):
|
||||
|
|
@ -75,9 +76,9 @@ class TestTriplesWriterConfiguration:
|
|||
with patch.dict(os.environ, {}, clear=True):
|
||||
processor = TriplesWriter(taskgroup=MagicMock())
|
||||
|
||||
assert processor.graph_host == ['cassandra']
|
||||
assert processor.username is None
|
||||
assert processor.password is None
|
||||
assert processor.cassandra_host == ['cassandra']
|
||||
assert processor.cassandra_username is None
|
||||
assert processor.cassandra_password is None
|
||||
|
||||
|
||||
class TestObjectsWriterConfiguration:
|
||||
|
|
@ -98,9 +99,9 @@ class TestObjectsWriterConfiguration:
|
|||
with patch.dict(os.environ, env_vars, clear=True):
|
||||
processor = ObjectsWriter(taskgroup=MagicMock())
|
||||
|
||||
assert processor.graph_host == ['obj-env-host1', 'obj-env-host2']
|
||||
assert processor.graph_username == 'obj-env-user'
|
||||
assert processor.graph_password == 'obj-env-pass'
|
||||
assert processor.cassandra_host == ['obj-env-host1', 'obj-env-host2']
|
||||
assert processor.cassandra_username == 'obj-env-user'
|
||||
assert processor.cassandra_password == 'obj-env-pass'
|
||||
|
||||
@patch('trustgraph.storage.objects.cassandra.write.Cluster')
|
||||
def test_cassandra_connection_with_hosts_list(self, mock_cluster):
|
||||
|
|
@ -174,24 +175,24 @@ class TestTriplesQueryConfiguration:
|
|||
with patch.dict(os.environ, env_vars, clear=True):
|
||||
processor = TriplesQuery(taskgroup=MagicMock())
|
||||
|
||||
assert processor.graph_host == ['query-env-host1', 'query-env-host2']
|
||||
assert processor.username == 'query-env-user'
|
||||
assert processor.password == 'query-env-pass'
|
||||
assert processor.cassandra_host == ['query-env-host1', 'query-env-host2']
|
||||
assert processor.cassandra_username == 'query-env-user'
|
||||
assert processor.cassandra_password == 'query-env-pass'
|
||||
|
||||
@patch('trustgraph.direct.cassandra.TrustGraph')
|
||||
def test_mixed_old_new_parameters(self, mock_trust_graph):
|
||||
"""Test mixing old and new parameter names (new should win)."""
|
||||
def test_only_new_parameters_work(self, mock_trust_graph):
|
||||
"""Test that only new parameters work."""
|
||||
processor = TriplesQuery(
|
||||
taskgroup=MagicMock(),
|
||||
cassandra_host='new-host',
|
||||
graph_host='old-host',
|
||||
graph_host='old-host', # Should be ignored
|
||||
cassandra_username='new-user',
|
||||
graph_username='old-user'
|
||||
graph_username='old-user' # Should be ignored
|
||||
)
|
||||
|
||||
# New parameters should take precedence
|
||||
assert processor.graph_host == ['new-host']
|
||||
assert processor.username == 'new-user'
|
||||
# Only new parameters should work
|
||||
assert processor.cassandra_host == ['new-host']
|
||||
assert processor.cassandra_username == 'new-user'
|
||||
|
||||
|
||||
class TestKgStoreConfiguration:
|
||||
|
|
@ -215,7 +216,7 @@ class TestKgStoreConfiguration:
|
|||
# Verify KnowledgeTableStore was called with resolved config
|
||||
mock_table_store.assert_called_once_with(
|
||||
cassandra_host=['kg-env-host1', 'kg-env-host2', 'kg-env-host3'],
|
||||
cassandra_user='kg-env-user',
|
||||
cassandra_username='kg-env-user',
|
||||
cassandra_password='kg-env-pass',
|
||||
keyspace='knowledge'
|
||||
)
|
||||
|
|
@ -236,28 +237,28 @@ class TestKgStoreConfiguration:
|
|||
# Verify KnowledgeTableStore was called with explicit config
|
||||
mock_table_store.assert_called_once_with(
|
||||
cassandra_host=['explicit-host'],
|
||||
cassandra_user='explicit-user',
|
||||
cassandra_username='explicit-user',
|
||||
cassandra_password='explicit-pass',
|
||||
keyspace='knowledge'
|
||||
)
|
||||
|
||||
@patch('trustgraph.storage.knowledge.store.KnowledgeTableStore')
|
||||
def test_backward_compatibility_cassandra_user(self, mock_table_store):
|
||||
"""Test backward compatibility with cassandra_user parameter."""
|
||||
def test_no_backward_compatibility_cassandra_user(self, mock_table_store):
|
||||
"""Test that cassandra_user parameter is no longer supported."""
|
||||
mock_store_instance = MagicMock()
|
||||
mock_table_store.return_value = mock_store_instance
|
||||
|
||||
processor = KgStore(
|
||||
taskgroup=MagicMock(),
|
||||
cassandra_host='compat-host',
|
||||
cassandra_user='compat-user', # Old parameter name
|
||||
cassandra_user='compat-user', # Old parameter name - should be ignored
|
||||
cassandra_password='compat-pass'
|
||||
)
|
||||
|
||||
# Should still work with old parameter name
|
||||
# cassandra_user should be ignored
|
||||
mock_table_store.assert_called_once_with(
|
||||
cassandra_host=['compat-host'],
|
||||
cassandra_user='compat-user',
|
||||
cassandra_username=None, # Should be None since cassandra_user is ignored
|
||||
cassandra_password='compat-pass',
|
||||
keyspace='knowledge'
|
||||
)
|
||||
|
|
@ -274,7 +275,7 @@ class TestKgStoreConfiguration:
|
|||
# Should use defaults
|
||||
mock_table_store.assert_called_once_with(
|
||||
cassandra_host=['cassandra'],
|
||||
cassandra_user=None,
|
||||
cassandra_username=None,
|
||||
cassandra_password=None,
|
||||
keyspace='knowledge'
|
||||
)
|
||||
|
|
@ -396,9 +397,9 @@ class TestConfigurationPriorityIntegration:
|
|||
# Password not provided - should fall back to env
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['cli-host1', 'cli-host2'] # From CLI
|
||||
assert processor.username == 'cli-user' # From CLI
|
||||
assert processor.password == 'env-pass' # From env
|
||||
assert processor.cassandra_host == ['cli-host1', 'cli-host2'] # From CLI
|
||||
assert processor.cassandra_username == 'cli-user' # From CLI
|
||||
assert processor.cassandra_password == 'env-pass' # From env
|
||||
|
||||
@patch('trustgraph.storage.knowledge.store.KnowledgeTableStore')
|
||||
def test_kg_store_priority_chain(self, mock_table_store):
|
||||
|
|
@ -422,7 +423,7 @@ class TestConfigurationPriorityIntegration:
|
|||
# Verify correct priority resolution
|
||||
mock_table_store.assert_called_once_with(
|
||||
cassandra_host=['param-host'], # From parameter
|
||||
cassandra_user='env-user', # From environment
|
||||
cassandra_username='env-user', # From environment
|
||||
cassandra_password='env-pass', # From environment
|
||||
keyspace='knowledge'
|
||||
)
|
||||
|
|
@ -20,9 +20,9 @@ class TestCassandraStorageProcessor:
|
|||
with patch.dict('os.environ', {}, clear=True):
|
||||
processor = Processor(taskgroup=taskgroup_mock)
|
||||
|
||||
assert processor.graph_host == ['cassandra'] # Updated default
|
||||
assert processor.username is None
|
||||
assert processor.password is None
|
||||
assert processor.cassandra_host == ['cassandra'] # Updated default
|
||||
assert processor.cassandra_username is None
|
||||
assert processor.cassandra_password is None
|
||||
assert processor.table is None
|
||||
|
||||
def test_processor_initialization_with_custom_params(self):
|
||||
|
|
@ -37,9 +37,9 @@ class TestCassandraStorageProcessor:
|
|||
cassandra_password='testpass'
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['cassandra.example.com']
|
||||
assert processor.username == 'testuser'
|
||||
assert processor.password == 'testpass'
|
||||
assert processor.cassandra_host == ['cassandra.example.com']
|
||||
assert processor.cassandra_username == 'testuser'
|
||||
assert processor.cassandra_password == 'testpass'
|
||||
assert processor.table is None
|
||||
|
||||
def test_processor_initialization_with_partial_auth(self):
|
||||
|
|
@ -51,11 +51,11 @@ class TestCassandraStorageProcessor:
|
|||
cassandra_username='testuser'
|
||||
)
|
||||
|
||||
assert processor.username == 'testuser'
|
||||
assert processor.password is None
|
||||
assert processor.cassandra_username == 'testuser'
|
||||
assert processor.cassandra_password is None
|
||||
|
||||
def test_processor_initialization_backward_compatibility(self):
|
||||
"""Test processor initialization with old graph_* parameters (backward compatibility)"""
|
||||
def test_processor_no_backward_compatibility(self):
|
||||
"""Test that old graph_* parameters are no longer supported"""
|
||||
taskgroup_mock = MagicMock()
|
||||
|
||||
processor = Processor(
|
||||
|
|
@ -65,12 +65,13 @@ class TestCassandraStorageProcessor:
|
|||
graph_password='old-pass'
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['old-host']
|
||||
assert processor.username == 'old-user'
|
||||
assert processor.password == 'old-pass'
|
||||
# Should use defaults since graph_* params are not recognized
|
||||
assert processor.cassandra_host == ['cassandra'] # Default
|
||||
assert processor.cassandra_username is None
|
||||
assert processor.cassandra_password is None
|
||||
|
||||
def test_processor_parameter_precedence(self):
|
||||
"""Test that new cassandra_* parameters take precedence over old graph_* parameters"""
|
||||
def test_processor_only_new_parameters_work(self):
|
||||
"""Test that only new cassandra_* parameters work"""
|
||||
taskgroup_mock = MagicMock()
|
||||
|
||||
processor = Processor(
|
||||
|
|
@ -81,8 +82,8 @@ class TestCassandraStorageProcessor:
|
|||
graph_username='old-user' # Should be ignored
|
||||
)
|
||||
|
||||
assert processor.graph_host == ['new-host'] # New parameter wins
|
||||
assert processor.username == 'new-user' # New parameter wins
|
||||
assert processor.cassandra_host == ['new-host'] # Only cassandra_* params work
|
||||
assert processor.cassandra_username == 'new-user' # Only cassandra_* params work
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@patch('trustgraph.storage.triples.cassandra.write.TrustGraph')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue