mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
migrate test_solr to pytest
This commit is contained in:
parent
5e471e104a
commit
72f35810a1
2 changed files with 501 additions and 516 deletions
501
tests/pytests/unit/modules/test_solr.py
Normal file
501
tests/pytests/unit/modules/test_solr.py
Normal file
|
@ -0,0 +1,501 @@
|
|||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
|
||||
Test cases for salt.modules.solr
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
import salt.modules.solr as solr
|
||||
from tests.support.mock import MagicMock, patch
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def configure_loader_modules():
|
||||
return {solr: {}}
|
||||
|
||||
|
||||
def test_lucene_version():
|
||||
"""
|
||||
Test to get the lucene version that solr is using.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True, True]):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False]
|
||||
):
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"data": {"lucene": {"lucene-spec-version": 1}},
|
||||
}
|
||||
with patch.object(
|
||||
solr,
|
||||
"_get_admin_info",
|
||||
side_effect=[tempdict, tempdict, {"success": None}],
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__salt__,
|
||||
{"config.option": MagicMock(return_value=["A"])},
|
||||
):
|
||||
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
assert solr.lucene_version("c") == {"A": "a"}
|
||||
|
||||
assert solr.lucene_version("c") == {"A": "a"}
|
||||
|
||||
assert solr.lucene_version("c") == {"success": None}
|
||||
|
||||
|
||||
def test_version():
|
||||
"""
|
||||
Test to get the solr version for the core specified
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True, True]):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False]
|
||||
):
|
||||
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
with patch.object(
|
||||
solr, "_get_admin_info", side_effect=[tempdict, tempdict]
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value=["A"])}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
assert solr.version() == {"A": "a"}
|
||||
|
||||
assert solr.version() == {"A": "a"}
|
||||
|
||||
with patch.object(
|
||||
solr, "_get_admin_info", return_value={"success": None}
|
||||
):
|
||||
assert solr.version() == {"success": None}
|
||||
|
||||
|
||||
def test_optimize():
|
||||
"""
|
||||
Test to search queries fast, but it is a very expensive operation.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__salt__,
|
||||
{"config.option": MagicMock(return_value=["A"])},
|
||||
):
|
||||
with patch.object(solr, "_http_request", return_value=tempdict):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
assert solr.optimize() == {"A": "a"}
|
||||
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
assert solr.optimize() == "A"
|
||||
|
||||
|
||||
def test_ping():
|
||||
"""
|
||||
Test to check on solr, makes sure solr can talk to the
|
||||
indexes.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value=["A"])}
|
||||
):
|
||||
with patch.object(solr, "_get_admin_info", return_value=tempdict):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
assert solr.ping() == {"A": "a"}
|
||||
|
||||
with patch.object(solr, "_get_admin_info", return_value="A"):
|
||||
assert solr.ping() == "A"
|
||||
|
||||
|
||||
def test_is_replication_enabled():
|
||||
"""
|
||||
Test to check for errors, and determine if a slave
|
||||
is replicating or not.
|
||||
"""
|
||||
error = 'Only "slave" minions can run "is_replication_enabled"'
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False]):
|
||||
assert solr.is_replication_enabled() is None
|
||||
with patch.object(solr, "_get_none_or_value", return_value=None):
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value="A"
|
||||
):
|
||||
assert solr.is_replication_enabled() == {
|
||||
"A": "a",
|
||||
"errors": [error],
|
||||
"success": False,
|
||||
}
|
||||
|
||||
|
||||
def test_match_index_versions():
|
||||
"""
|
||||
Test to verifies that the master and the slave versions are in sync by
|
||||
comparing the index version.
|
||||
"""
|
||||
err = 'solr.match_index_versions can only be called by "slave" minions'
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False]):
|
||||
|
||||
assert solr.match_index_versions() is None
|
||||
|
||||
with patch.object(solr, "_get_none_or_value", return_value=None):
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value="A"
|
||||
):
|
||||
assert solr.match_index_versions() == {
|
||||
"A": "a",
|
||||
"errors": [err],
|
||||
"success": False,
|
||||
}
|
||||
|
||||
|
||||
def test_replication_details():
|
||||
"""
|
||||
Test to get the full replication details.
|
||||
"""
|
||||
tempdict1 = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
tempdict2 = {
|
||||
"success": None,
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", return_value=True):
|
||||
with patch.object(
|
||||
solr, "_replication_request", side_effect=[tempdict2, tempdict1]
|
||||
):
|
||||
|
||||
assert solr.replication_details() == tempdict2
|
||||
|
||||
with patch.object(solr, "_update_return_dict", return_value=tempdict1):
|
||||
assert solr.replication_details() == tempdict1
|
||||
|
||||
|
||||
def test_backup():
|
||||
"""
|
||||
Test to tell solr make a backup.
|
||||
"""
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{
|
||||
"solr.backup_path": MagicMock(return_value="A"),
|
||||
"solr.num_backups": MagicMock(return_value="B"),
|
||||
"solr.cores": MagicMock(return_value=["A"]),
|
||||
},
|
||||
):
|
||||
with patch.object(os.path, "sep", return_value="B"):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value=tempdict
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value=["A"])},
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value="A"
|
||||
):
|
||||
assert solr.backup() == {"A": "a"}
|
||||
|
||||
assert solr.backup() == tempdict
|
||||
|
||||
|
||||
def test_set_is_polling():
|
||||
"""
|
||||
Test to prevent the slaves from polling the master for updates.
|
||||
"""
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
err = 'solr.set_is_polling can only be called by "slave" minions'
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False, False]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, True]
|
||||
):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
|
||||
assert solr.set_is_polling("p") is None
|
||||
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value=tempdict
|
||||
):
|
||||
assert solr.set_is_polling("p") == {
|
||||
"A": "a",
|
||||
"errors": [err],
|
||||
"success": False,
|
||||
}
|
||||
|
||||
with patch.object(solr, "_replication_request", return_value="A"):
|
||||
assert solr.set_is_polling("p") == "A"
|
||||
|
||||
|
||||
def test_set_replication_enabled():
|
||||
"""
|
||||
Test to sets the master to ignore poll requests from the slaves.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, True, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_return_dict", side_effect=[{"A": "a"}, {}]):
|
||||
with patch.object(solr, "_replication_request", return_value="A"):
|
||||
assert solr.set_replication_enabled("s") == {"A": "a"}
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
assert solr.set_replication_enabled("s") == {}
|
||||
assert solr.set_replication_enabled("s") == "A"
|
||||
assert solr.set_replication_enabled(False) == "A"
|
||||
|
||||
|
||||
def test_signal():
|
||||
"""
|
||||
Test to signals Apache Solr to start, stop, or restart.
|
||||
"""
|
||||
assert (
|
||||
solr.signal("signal")
|
||||
== "signal is an invalid signal. Try: one of: start, stop or restart"
|
||||
)
|
||||
|
||||
|
||||
def test_reload_core():
|
||||
"""
|
||||
Test to load a new core from the same configuration as
|
||||
an existing registered core.
|
||||
"""
|
||||
error = ['solr.reload_core can only be called by "multi-core" minions']
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[False, True, True, True]):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
assert solr.reload_core() is None
|
||||
assert solr.reload_core() == {
|
||||
"A": "a",
|
||||
"errors": error,
|
||||
"success": False,
|
||||
}
|
||||
assert solr.reload_core() == "A"
|
||||
|
||||
|
||||
def test_core_status():
|
||||
"""
|
||||
Test to get the status for a given core or all cores
|
||||
if no core is specified
|
||||
"""
|
||||
error = ['solr.reload_core can only be called by "multi-core" minions']
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[False, True, True, True]):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
assert solr.core_status() is None
|
||||
assert solr.core_status() == {
|
||||
"A": "a",
|
||||
"errors": error,
|
||||
"success": False,
|
||||
}
|
||||
|
||||
assert solr.core_status() == "A"
|
||||
|
||||
|
||||
def test_reload_import_config():
|
||||
"""
|
||||
Test to re-loads the handler config XML file.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, None, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
assert solr.reload_import_config("h") == {"A": "a"}
|
||||
assert solr.reload_import_config("h") == {"A": "a"}
|
||||
assert solr.reload_import_config("h") == "A"
|
||||
|
||||
|
||||
def test_abort_import():
|
||||
"""
|
||||
Test to aborts an existing import command to the specified handler.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, None, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
assert solr.abort_import("h") == {"A": "a"}
|
||||
assert solr.abort_import("h") == {"A": "a"}
|
||||
assert solr.abort_import("h") == "A"
|
||||
|
||||
|
||||
def test_full_import():
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch(
|
||||
"salt.modules.solr._format_url", MagicMock(return_value="A")
|
||||
), patch.object(
|
||||
solr, "_is_master", side_effect=[False, True, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_return_dict", return_value={"A": "a"}
|
||||
), patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False, False, False]
|
||||
), patch.object(
|
||||
solr,
|
||||
"_pre_index_check",
|
||||
side_effect=[{"success": False}, {"success": True}, {"success": True}],
|
||||
), patch.object(
|
||||
solr, "_merge_options", side_effect=[{"clean": True}, {"clean": False}]
|
||||
), patch.object(
|
||||
solr, "set_replication_enabled", return_value={"success": False}
|
||||
), patch.object(
|
||||
solr, "_http_request", return_value="A"
|
||||
):
|
||||
|
||||
assert solr.full_import("h") == {"A": "a"}
|
||||
assert solr.full_import("h") == {"A": "a"}
|
||||
assert solr.full_import("h") == {"success": False}
|
||||
assert solr.full_import("h") == {"A": "a"}
|
||||
assert solr.full_import("h") == "A"
|
||||
|
||||
|
||||
def test_delta_import():
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch(
|
||||
"salt.modules.solr._format_url", MagicMock(return_value="A")
|
||||
), patch.object(
|
||||
solr, "_is_master", side_effect=[False, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_return_dict", return_value={"A": "a"}
|
||||
), patch.object(
|
||||
solr,
|
||||
"_pre_index_check",
|
||||
side_effect=[
|
||||
{"success": False},
|
||||
{"success": True},
|
||||
{"success": True},
|
||||
{"success": True},
|
||||
],
|
||||
), patch.object(
|
||||
solr, "_merge_options", side_effect=[{"clean": True}, {"clean": False}]
|
||||
), patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
), patch.object(
|
||||
solr, "set_replication_enabled", return_value={"success": False}
|
||||
), patch.object(
|
||||
solr, "_http_request", return_value="A"
|
||||
):
|
||||
|
||||
assert solr.delta_import("h") == {"A": "a"}
|
||||
assert solr.delta_import("h") == {"success": False}
|
||||
assert solr.delta_import("h") == {"A": "a"}
|
||||
assert solr.delta_import("h") == "A"
|
||||
|
||||
|
||||
def test_import_status():
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True]):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
assert solr.import_status("h") == {"A": "a"}
|
||||
assert solr.import_status("h") == "A"
|
|
@ -1,516 +0,0 @@
|
|||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import salt.modules.solr as solr
|
||||
from tests.support.mixins import LoaderModuleMockMixin
|
||||
from tests.support.mock import MagicMock, patch
|
||||
from tests.support.unit import TestCase
|
||||
|
||||
|
||||
class SolrTestCase(TestCase, LoaderModuleMockMixin):
|
||||
"""
|
||||
Test cases for salt.modules.solr
|
||||
"""
|
||||
|
||||
def setup_loader_modules(self):
|
||||
return {solr: {}}
|
||||
|
||||
def test_lucene_version(self):
|
||||
"""
|
||||
Test to get the lucene version that solr is using.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False]
|
||||
):
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"data": {"lucene": {"lucene-spec-version": 1}},
|
||||
}
|
||||
with patch.object(
|
||||
solr,
|
||||
"_get_admin_info",
|
||||
side_effect=[tempdict, tempdict, {"success": None}],
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__salt__,
|
||||
{"config.option": MagicMock(return_value=["A"])},
|
||||
):
|
||||
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
self.assertDictEqual(
|
||||
solr.lucene_version("c"), {"A": "a"}
|
||||
)
|
||||
|
||||
self.assertDictEqual(solr.lucene_version("c"), {"A": "a"})
|
||||
|
||||
self.assertDictEqual(
|
||||
solr.lucene_version("c"), {"success": None}
|
||||
)
|
||||
|
||||
def test_version(self):
|
||||
"""
|
||||
Test to get the solr version for the core specified
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False]
|
||||
):
|
||||
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
with patch.object(
|
||||
solr, "_get_admin_info", side_effect=[tempdict, tempdict]
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value=["A"])}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
self.assertDictEqual(solr.version(), {"A": "a"})
|
||||
|
||||
self.assertDictEqual(solr.version(), {"A": "a"})
|
||||
|
||||
with patch.object(
|
||||
solr, "_get_admin_info", return_value={"success": None}
|
||||
):
|
||||
self.assertDictEqual(solr.version(), {"success": None})
|
||||
|
||||
def test_optimize(self):
|
||||
"""
|
||||
Test to search queries fast, but it is a very expensive operation.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__salt__,
|
||||
{"config.option": MagicMock(return_value=["A"])},
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_http_request", return_value=tempdict
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
self.assertDictEqual(solr.optimize(), {"A": "a"})
|
||||
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
self.assertEqual(solr.optimize(), "A")
|
||||
|
||||
def test_ping(self):
|
||||
"""
|
||||
Test to check on solr, makes sure solr can talk to the
|
||||
indexes.
|
||||
"""
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_check_for_cores", side_effect=[True, False]):
|
||||
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": {"lucene": {"solr-spec-version": 1}},
|
||||
}
|
||||
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value=["A"])}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_get_admin_info", return_value=tempdict
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value={"A": "a"}
|
||||
):
|
||||
self.assertDictEqual(solr.ping(), {"A": "a"})
|
||||
|
||||
with patch.object(solr, "_get_admin_info", return_value="A"):
|
||||
self.assertEqual(solr.ping(), "A")
|
||||
|
||||
def test_is_replication_enabled(self):
|
||||
"""
|
||||
Test to check for errors, and determine if a slave
|
||||
is replicating or not.
|
||||
"""
|
||||
error = 'Only "slave" minions can run "is_replication_enabled"'
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False]):
|
||||
self.assertIsNone(solr.is_replication_enabled())
|
||||
with patch.object(solr, "_get_none_or_value", return_value=None):
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value="A"
|
||||
):
|
||||
self.assertDictEqual(
|
||||
solr.is_replication_enabled(),
|
||||
{"A": "a", "errors": [error], "success": False},
|
||||
)
|
||||
|
||||
def test_match_index_versions(self):
|
||||
"""
|
||||
Test to verifies that the master and the slave versions are in sync by
|
||||
comparing the index version.
|
||||
"""
|
||||
err = 'solr.match_index_versions can only be called by "slave" minions'
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False]):
|
||||
|
||||
self.assertIsNone(solr.match_index_versions())
|
||||
|
||||
with patch.object(solr, "_get_none_or_value", return_value=None):
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value="A"
|
||||
):
|
||||
self.assertDictEqual(
|
||||
solr.match_index_versions(),
|
||||
{"A": "a", "errors": [err], "success": False},
|
||||
)
|
||||
|
||||
def test_replication_details(self):
|
||||
"""
|
||||
Test to get the full replication details.
|
||||
"""
|
||||
tempdict1 = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
tempdict2 = {
|
||||
"success": None,
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_get_none_or_value", return_value=True):
|
||||
with patch.object(
|
||||
solr, "_replication_request", side_effect=[tempdict2, tempdict1]
|
||||
):
|
||||
|
||||
self.assertDictEqual(solr.replication_details(), tempdict2)
|
||||
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value=tempdict1
|
||||
):
|
||||
self.assertDictEqual(solr.replication_details(), tempdict1)
|
||||
|
||||
def test_backup(self):
|
||||
"""
|
||||
Test to tell solr make a backup.
|
||||
"""
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{
|
||||
"solr.backup_path": MagicMock(return_value="A"),
|
||||
"solr.num_backups": MagicMock(return_value="B"),
|
||||
"solr.cores": MagicMock(return_value=["A"]),
|
||||
},
|
||||
):
|
||||
with patch.object(os.path, "sep", return_value="B"):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value=tempdict
|
||||
):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value=["A"])},
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value="A"
|
||||
):
|
||||
self.assertDictEqual(solr.backup(), {"A": "a"})
|
||||
|
||||
self.assertDictEqual(solr.backup(), tempdict)
|
||||
|
||||
def test_set_is_polling(self):
|
||||
"""
|
||||
Test to prevent the slaves from polling the master for updates.
|
||||
"""
|
||||
tempdict = {
|
||||
"success": "success",
|
||||
"errors": "errors",
|
||||
"warnings": "warnings",
|
||||
"data": "data",
|
||||
}
|
||||
|
||||
err = 'solr.set_is_polling can only be called by "slave" minions'
|
||||
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_is_master", side_effect=[True, False, False]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, True]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
):
|
||||
|
||||
self.assertIsNone(solr.set_is_polling("p"))
|
||||
|
||||
with patch.dict(
|
||||
solr.__opts__, {"solr.cores": MagicMock(return_value="A")}
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_update_return_dict", return_value=tempdict
|
||||
):
|
||||
self.assertDictEqual(
|
||||
solr.set_is_polling("p"),
|
||||
{"A": "a", "errors": [err], "success": False},
|
||||
)
|
||||
|
||||
with patch.object(
|
||||
solr, "_replication_request", return_value="A"
|
||||
):
|
||||
self.assertEqual(solr.set_is_polling("p"), "A")
|
||||
|
||||
def test_set_replication_enabled(self):
|
||||
"""
|
||||
Test to sets the master to ignore poll requests from the slaves.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, True, True, True]
|
||||
):
|
||||
with patch.object(
|
||||
solr, "_get_return_dict", side_effect=[{"A": "a"}, {}]
|
||||
):
|
||||
with patch.object(solr, "_replication_request", return_value="A"):
|
||||
self.assertDictEqual(
|
||||
solr.set_replication_enabled("s"), {"A": "a"}
|
||||
)
|
||||
with patch.object(solr, "_check_for_cores", return_value=True):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
self.assertEqual(solr.set_replication_enabled("s"), {})
|
||||
self.assertEqual(solr.set_replication_enabled("s"), "A")
|
||||
self.assertEqual(solr.set_replication_enabled(False), "A")
|
||||
|
||||
def test_signal(self):
|
||||
"""
|
||||
Test to signals Apache Solr to start, stop, or restart.
|
||||
"""
|
||||
self.assertEqual(
|
||||
solr.signal("signal"),
|
||||
"signal is an invalid signal. Try: one of: start, stop or restart",
|
||||
)
|
||||
|
||||
def test_reload_core(self):
|
||||
"""
|
||||
Test to load a new core from the same configuration as
|
||||
an existing registered core.
|
||||
"""
|
||||
error = ['solr.reload_core can only be called by "multi-core" minions']
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[False, True, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
self.assertIsNone(solr.reload_core())
|
||||
self.assertDictEqual(
|
||||
solr.reload_core(),
|
||||
{"A": "a", "errors": error, "success": False},
|
||||
)
|
||||
self.assertEqual(solr.reload_core(), "A")
|
||||
|
||||
def test_core_status(self):
|
||||
"""
|
||||
Test to get the status for a given core or all cores
|
||||
if no core is specified
|
||||
"""
|
||||
error = ['solr.reload_core can only be called by "multi-core" minions']
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[False, True, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
with patch.dict(
|
||||
solr.__opts__,
|
||||
{"solr.cores": MagicMock(return_value="n")},
|
||||
):
|
||||
self.assertIsNone(solr.core_status())
|
||||
self.assertDictEqual(
|
||||
solr.core_status(),
|
||||
{"A": "a", "errors": error, "success": False},
|
||||
)
|
||||
|
||||
self.assertEqual(solr.core_status(), "A")
|
||||
|
||||
def test_reload_import_config(self):
|
||||
"""
|
||||
Test to re-loads the handler config XML file.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, None, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
self.assertDictEqual(
|
||||
solr.reload_import_config("h"), {"A": "a"}
|
||||
)
|
||||
self.assertDictEqual(
|
||||
solr.reload_import_config("h"), {"A": "a"}
|
||||
)
|
||||
self.assertEqual(solr.reload_import_config("h"), "A")
|
||||
|
||||
def test_abort_import(self):
|
||||
"""
|
||||
Test to aborts an existing import command to the specified handler.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True, True]):
|
||||
with patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, None, None, True, True]
|
||||
):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
self.assertDictEqual(solr.abort_import("h"), {"A": "a"})
|
||||
self.assertDictEqual(solr.abort_import("h"), {"A": "a"})
|
||||
self.assertEqual(solr.abort_import("h"), "A")
|
||||
|
||||
def test_full_import(self):
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch(
|
||||
"salt.modules.solr._format_url", MagicMock(return_value="A")
|
||||
), patch.object(
|
||||
solr, "_is_master", side_effect=[False, True, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_return_dict", return_value={"A": "a"}
|
||||
), patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False, False, False, False]
|
||||
), patch.object(
|
||||
solr,
|
||||
"_pre_index_check",
|
||||
side_effect=[{"success": False}, {"success": True}, {"success": True}],
|
||||
), patch.object(
|
||||
solr, "_merge_options", side_effect=[{"clean": True}, {"clean": False}]
|
||||
), patch.object(
|
||||
solr, "set_replication_enabled", return_value={"success": False}
|
||||
), patch.object(
|
||||
solr, "_http_request", return_value="A"
|
||||
):
|
||||
|
||||
self.assertDictEqual(solr.full_import("h"), {"A": "a"})
|
||||
self.assertDictEqual(solr.full_import("h"), {"A": "a"})
|
||||
self.assertDictEqual(solr.full_import("h"), {"success": False})
|
||||
self.assertDictEqual(solr.full_import("h"), {"A": "a"})
|
||||
self.assertEqual(solr.full_import("h"), "A")
|
||||
|
||||
def test_delta_import(self):
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch(
|
||||
"salt.modules.solr._format_url", MagicMock(return_value="A")
|
||||
), patch.object(
|
||||
solr, "_is_master", side_effect=[False, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_none_or_value", side_effect=[None, True, True, True, True]
|
||||
), patch.object(
|
||||
solr, "_get_return_dict", return_value={"A": "a"}
|
||||
), patch.object(
|
||||
solr,
|
||||
"_pre_index_check",
|
||||
side_effect=[
|
||||
{"success": False},
|
||||
{"success": True},
|
||||
{"success": True},
|
||||
{"success": True},
|
||||
],
|
||||
), patch.object(
|
||||
solr, "_merge_options", side_effect=[{"clean": True}, {"clean": False}]
|
||||
), patch.object(
|
||||
solr, "_check_for_cores", side_effect=[True, False]
|
||||
), patch.object(
|
||||
solr, "set_replication_enabled", return_value={"success": False}
|
||||
), patch.object(
|
||||
solr, "_http_request", return_value="A"
|
||||
):
|
||||
|
||||
self.assertDictEqual(solr.delta_import("h"), {"A": "a"})
|
||||
self.assertDictEqual(solr.delta_import("h"), {"success": False})
|
||||
self.assertDictEqual(solr.delta_import("h"), {"A": "a"})
|
||||
self.assertEqual(solr.delta_import("h"), "A")
|
||||
|
||||
def test_import_status(self):
|
||||
"""
|
||||
Test to submits an import command to the specified handler using
|
||||
specified options.
|
||||
"""
|
||||
with patch.object(solr, "_is_master", side_effect=[False, True]):
|
||||
with patch.object(solr, "_get_none_or_value", side_effect=[None, True]):
|
||||
with patch.object(solr, "_get_return_dict", return_value={"A": "a"}):
|
||||
with patch.object(solr, "_format_url", return_value="A"):
|
||||
with patch.object(solr, "_http_request", return_value="A"):
|
||||
self.assertDictEqual(solr.import_status("h"), {"A": "a"})
|
||||
self.assertEqual(solr.import_status("h"), "A")
|
Loading…
Add table
Reference in a new issue