From f574332fc826da4f22b10187bbae29ec3213bb6d Mon Sep 17 00:00:00 2001 From: Barbora Smejkalová Date: Jan 07 2019 11:09:32 +0000 Subject: Issue 49618 - Set nsslapd-cachememsize to custom value Description: Added function for getting available memory. Added test case to set nsslapd-cachememsize to custom value above 3805132804 bytes. Test is skipped if available memory is lower than we want to set. https://pagure.io/389-ds-base/issue/49618 Reviewed by: vashirov, spichugi (Thanks!) --- diff --git a/dirsrvtests/tests/suites/config/regression_test.py b/dirsrvtests/tests/suites/config/regression_test.py index 30824c9..a7a31b4 100644 --- a/dirsrvtests/tests/suites/config/regression_test.py +++ b/dirsrvtests/tests/suites/config/regression_test.py @@ -8,12 +8,69 @@ # import logging import pytest +from lib389.utils import * from lib389.dseldif import DSEldif +from lib389.config import LDBMConfig +from lib389.backend import Backends from lib389.topologies import topology_st as topo logging.getLogger(__name__).setLevel(logging.INFO) log = logging.getLogger(__name__) +CUSTOM_MEM = '9100100100' + + +# Function to return value of available memory in kb +def get_available_memory(): + with open('/proc/meminfo') as file: + for line in file: + if 'MemAvailable' in line: + free_mem_in_kb = line.split()[1] + return int(free_mem_in_kb) + + +@pytest.mark.skipif(get_available_memory() < (int(CUSTOM_MEM)/1024), reason="available memory is too low") +@pytest.mark.bz1627512 +@pytest.mark.ds49618 +def test_set_cachememsize_to_custom_value(topo): + """Test if value nsslapd-cachememsize remains set + at the custom setting of value above 3805132804 bytes + after changing the value to 9100100100 bytes + + :id: 8a3efc00-65a9-4ee7-b8ee-e35840991ea9 + :setup: Standalone Instance + :steps: + 1. Disable in the cn=config,cn=ldbm database,cn=plugins,cn=config: + nsslapd-cache-autosize by setting it to 0 + 2. Disable in the cn=config,cn=ldbm database,cn=plugins,cn=config: + nsslapd-cache-autosize-split by setting it to 0 + 3. Restart the instance + 4. Set in the cn=UserRoot,cn=ldbm database,cn=plugins,cn=config: + nsslapd-cachememsize: CUSTOM_MEM + :expectedresults: + 1. nsslapd-cache-autosize is successfully disabled + 2. nsslapd-cache-autosize-split is successfully disabled + 3. The instance should be successfully restarted + 4. nsslapd-cachememsize is successfully set + """ + + config_ldbm = LDBMConfig(topo.standalone) + backends = Backends(topo.standalone) + userroot_ldbm = backends.get("userroot") + + log.info("Disabling nsslapd-cache-autosize by setting it to 0") + assert config_ldbm.set('nsslapd-cache-autosize', '0') + + log.info("Disabling nsslapd-cache-autosize-split by setting it to 0") + assert config_ldbm.set('nsslapd-cache-autosize-split', '0') + + log.info("Restarting instance") + topo.standalone.restart() + log.info("Instance restarted successfully") + + log.info("Set nsslapd-cachememsize to value {}".format(CUSTOM_MEM)) + assert userroot_ldbm.set('nsslapd-cachememsize', CUSTOM_MEM) + def test_maxbersize_repl(topo): """Check that instance starts when nsslapd-errorlog-maxlogsize @@ -52,3 +109,4 @@ def test_maxbersize_repl(topo): inst.start() log.info("Assert no init_dse_file errors in the error log") assert not inst.ds_error_log.match('.*ERR - init_dse_file.*') +