mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-08-02 04:04:26 -07:00
fix 'fail' tests
This commit is contained in:
parent
781bf601e7
commit
54b4effcc6
3 changed files with 107 additions and 58 deletions
|
@ -7,23 +7,7 @@ __metaclass__ = type
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from ansible_collections.community.mysql.plugins.module_utils.implementations.mariadb.replication import uses_replica_terminology
|
from ansible_collections.community.mysql.plugins.module_utils.implementations.mariadb.replication import uses_replica_terminology
|
||||||
from ..utils import dummy_cursor_class
|
from ..utils import dummy_cursor_class, MockCursor
|
||||||
|
|
||||||
|
|
||||||
class MockCursor:
|
|
||||||
def __init__(self, status="ONLINE"):
|
|
||||||
self.status = status
|
|
||||||
self.executed_queries = []
|
|
||||||
|
|
||||||
def execute(self, query):
|
|
||||||
if self.status == "ERROR":
|
|
||||||
raise Exception("Mocked execution error")
|
|
||||||
self.executed_queries.append(query)
|
|
||||||
|
|
||||||
def fetchone(self):
|
|
||||||
if "group_replication_status" in self.executed_queries[-1]:
|
|
||||||
return ["group_replication_status", self.status]
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
@ -89,25 +73,55 @@ def test_start_group_replication_fail():
|
||||||
"""Test startgroupreplication function with failure."""
|
"""Test startgroupreplication function with failure."""
|
||||||
from ansible_collections.community.mysql.plugins.modules.mysql_replication import startgroupreplication
|
from ansible_collections.community.mysql.plugins.modules.mysql_replication import startgroupreplication
|
||||||
|
|
||||||
cursor = MockCursor(status="ERROR")
|
# Create a mock mysql_driver with a Warning attribute
|
||||||
module = type('obj', (object,), {
|
class MockDriver:
|
||||||
'fail_json': lambda msg: None,
|
Warning = MockCursor.Warning
|
||||||
})
|
|
||||||
|
|
||||||
result = startgroupreplication(module, cursor, [], True)
|
# Save the original mysql_driver
|
||||||
|
from ansible_collections.community.mysql.plugins.modules import mysql_replication
|
||||||
|
original_driver = mysql_replication.mysql_driver
|
||||||
|
|
||||||
assert result is False
|
try:
|
||||||
|
# Replace with our mock driver
|
||||||
|
mysql_replication.mysql_driver = MockDriver
|
||||||
|
|
||||||
|
cursor = MockCursor(status="ERROR")
|
||||||
|
module = type('obj', (object,), {
|
||||||
|
'fail_json': lambda msg: None,
|
||||||
|
})
|
||||||
|
|
||||||
|
result = startgroupreplication(module, cursor, [], True)
|
||||||
|
|
||||||
|
assert result is False
|
||||||
|
finally:
|
||||||
|
# Restore the original driver
|
||||||
|
mysql_replication.mysql_driver = original_driver
|
||||||
|
|
||||||
|
|
||||||
def test_stop_group_replication_fail():
|
def test_stop_group_replication_fail():
|
||||||
"""Test stopgroupreplication function with failure."""
|
"""Test stopgroupreplication function with failure."""
|
||||||
from ansible_collections.community.mysql.plugins.modules.mysql_replication import stopgroupreplication
|
from ansible_collections.community.mysql.plugins.modules.mysql_replication import stopgroupreplication
|
||||||
|
|
||||||
cursor = MockCursor(status="ERROR")
|
# Create a mock mysql_driver with a Warning attribute
|
||||||
module = type('obj', (object,), {
|
class MockDriver:
|
||||||
'fail_json': lambda msg: None,
|
Warning = MockCursor.Warning
|
||||||
})
|
|
||||||
|
|
||||||
result = stopgroupreplication(module, cursor, True)
|
# Save the original mysql_driver
|
||||||
|
from ansible_collections.community.mysql.plugins.modules import mysql_replication
|
||||||
|
original_driver = mysql_replication.mysql_driver
|
||||||
|
|
||||||
assert result is False
|
try:
|
||||||
|
# Replace with our mock driver
|
||||||
|
mysql_replication.mysql_driver = MockDriver
|
||||||
|
|
||||||
|
cursor = MockCursor(status="ERROR")
|
||||||
|
module = type('obj', (object,), {
|
||||||
|
'fail_json': lambda msg: None,
|
||||||
|
})
|
||||||
|
|
||||||
|
result = stopgroupreplication(module, cursor, True)
|
||||||
|
|
||||||
|
assert result is False
|
||||||
|
finally:
|
||||||
|
# Restore the original driver
|
||||||
|
mysql_replication.mysql_driver = original_driver
|
||||||
|
|
|
@ -7,23 +7,7 @@ __metaclass__ = type
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from ansible_collections.community.mysql.plugins.module_utils.implementations.mysql.replication import uses_replica_terminology
|
from ansible_collections.community.mysql.plugins.module_utils.implementations.mysql.replication import uses_replica_terminology
|
||||||
from ..utils import dummy_cursor_class
|
from ..utils import dummy_cursor_class, MockCursor
|
||||||
|
|
||||||
|
|
||||||
class MockCursor:
|
|
||||||
def __init__(self, status="ONLINE"):
|
|
||||||
self.status = status
|
|
||||||
self.executed_queries = []
|
|
||||||
|
|
||||||
def execute(self, query):
|
|
||||||
if self.status == "ERROR":
|
|
||||||
raise Exception("Mocked execution error")
|
|
||||||
self.executed_queries.append(query)
|
|
||||||
|
|
||||||
def fetchone(self):
|
|
||||||
if "group_replication_status" in self.executed_queries[-1]:
|
|
||||||
return ["group_replication_status", self.status]
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
@ -93,25 +77,55 @@ def test_start_group_replication_fail():
|
||||||
"""Test startgroupreplication function with failure."""
|
"""Test startgroupreplication function with failure."""
|
||||||
from ansible_collections.community.mysql.plugins.modules.mysql_replication import startgroupreplication
|
from ansible_collections.community.mysql.plugins.modules.mysql_replication import startgroupreplication
|
||||||
|
|
||||||
cursor = MockCursor(status="ERROR")
|
# Create a mock mysql_driver with a Warning attribute
|
||||||
module = type('obj', (object,), {
|
class MockDriver:
|
||||||
'fail_json': lambda msg: None,
|
Warning = MockCursor.Warning
|
||||||
})
|
|
||||||
|
|
||||||
result = startgroupreplication(module, cursor, [], True)
|
# Save the original mysql_driver
|
||||||
|
from ansible_collections.community.mysql.plugins.modules import mysql_replication
|
||||||
|
original_driver = mysql_replication.mysql_driver
|
||||||
|
|
||||||
assert result is False
|
try:
|
||||||
|
# Replace with our mock driver
|
||||||
|
mysql_replication.mysql_driver = MockDriver
|
||||||
|
|
||||||
|
cursor = MockCursor(status="ERROR")
|
||||||
|
module = type('obj', (object,), {
|
||||||
|
'fail_json': lambda msg: None,
|
||||||
|
})
|
||||||
|
|
||||||
|
result = startgroupreplication(module, cursor, [], True)
|
||||||
|
|
||||||
|
assert result is False
|
||||||
|
finally:
|
||||||
|
# Restore the original driver
|
||||||
|
mysql_replication.mysql_driver = original_driver
|
||||||
|
|
||||||
|
|
||||||
def test_stop_group_replication_fail():
|
def test_stop_group_replication_fail():
|
||||||
"""Test stopgroupreplication function with failure."""
|
"""Test stopgroupreplication function with failure."""
|
||||||
from ansible_collections.community.mysql.plugins.modules.mysql_replication import stopgroupreplication
|
from ansible_collections.community.mysql.plugins.modules.mysql_replication import stopgroupreplication
|
||||||
|
|
||||||
cursor = MockCursor(status="ERROR")
|
# Create a mock mysql_driver with a Warning attribute
|
||||||
module = type('obj', (object,), {
|
class MockDriver:
|
||||||
'fail_json': lambda msg: None,
|
Warning = MockCursor.Warning
|
||||||
})
|
|
||||||
|
|
||||||
result = stopgroupreplication(module, cursor, True)
|
# Save the original mysql_driver
|
||||||
|
from ansible_collections.community.mysql.plugins.modules import mysql_replication
|
||||||
|
original_driver = mysql_replication.mysql_driver
|
||||||
|
|
||||||
assert result is False
|
try:
|
||||||
|
# Replace with our mock driver
|
||||||
|
mysql_replication.mysql_driver = MockDriver
|
||||||
|
|
||||||
|
cursor = MockCursor(status="ERROR")
|
||||||
|
module = type('obj', (object,), {
|
||||||
|
'fail_json': lambda msg: None,
|
||||||
|
})
|
||||||
|
|
||||||
|
result = stopgroupreplication(module, cursor, True)
|
||||||
|
|
||||||
|
assert result is False
|
||||||
|
finally:
|
||||||
|
# Restore the original driver
|
||||||
|
mysql_replication.mysql_driver = original_driver
|
||||||
|
|
|
@ -17,3 +17,24 @@ class dummy_cursor_class():
|
||||||
|
|
||||||
elif self.ret_val_type == 'list':
|
elif self.ret_val_type == 'list':
|
||||||
return [self.output]
|
return [self.output]
|
||||||
|
|
||||||
|
|
||||||
|
class MockCursor:
|
||||||
|
def __init__(self, status="ONLINE"):
|
||||||
|
self.status = status
|
||||||
|
self.executed_queries = []
|
||||||
|
|
||||||
|
def execute(self, query):
|
||||||
|
self.executed_queries.append(query)
|
||||||
|
if self.status == "ERROR":
|
||||||
|
# Create a custom exception that mimics mysql_driver.Warning
|
||||||
|
class MockWarning(Exception):
|
||||||
|
pass
|
||||||
|
# Make it available as a class attribute for tests to use
|
||||||
|
MockCursor.Warning = MockWarning
|
||||||
|
raise MockWarning("Mocked execution error")
|
||||||
|
|
||||||
|
def fetchone(self):
|
||||||
|
if len(self.executed_queries) > 0 and "group_replication_status" in self.executed_queries[-1]:
|
||||||
|
return ["group_replication_status", self.status]
|
||||||
|
return None
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue