Substituted a hardcoded suffix name with a constant DOMAIN_SUFFIX_NAME

On 12/08/2015 02:33 PM, Oleg Fayans wrote:
> Hi all,
> 
> 
> The patches are rebased against the current master.
> 
> On 12/02/2015 05:10 PM, Martin Basti wrote:
>>
>>
>> On 02.12.2015 16:18, Oleg Fayans wrote:
>>> Hi Martin,
>>>
>>> On 12/01/2015 04:08 PM, Martin Basti wrote:
>>>>
>>>>
>>>> On 27.11.2015 16:26, Oleg Fayans wrote:
>>>>> And patch N 16 passes lint too:
>>>>>
>>>>> On 11/27/2015 04:03 PM, Oleg Fayans wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On 11/27/2015 03:26 PM, Martin Basti wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 27.11.2015 15:04, Oleg Fayans wrote:
>>>>>>>> Hi Martin,
>>>>>>>>
>>>>>>>> All your suggestions were taken into account. Both patches are
>>>>>>>> updated. Thank you for your help!
>>>>>>>>
>>>>>>>> On 11/26/2015 10:50 AM, Martin Basti wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 26.11.2015 10:04, Oleg Fayans wrote:
>>>>>>>>>> Hi Martin,
>>>>>>>>>>
>>>>>>>>>> I agree to all your points but one. please, see my comment below
>>>>>>>>>>
>>>>>>>>>> On 11/25/2015 07:42 PM, Martin Basti wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> 0) Note
>>>>>>>>>>> Please be aware of https://fedorahosted.org/freeipa/ticket/5469
>>>>>>>>>>> during
>>>>>>>>>>> KRA testing
>>>>>>>>>>>
>>>>>>>>>>> 1)
>>>>>>>>>>> Please do not use MIN and MAX_DOMAIN_LEVEL constants, this may
>>>>>>>>>>> change
>>>>>>>>>>> over time, use DOMAIN_LEVEL_0 and DOMAIN_LEVEL_1 for domain
>>>>>>>>>>> level 0
>>>>>>>>>>> and 1
>>>>>>>>>>>
>>>>>>>>>>> 2)
>>>>>>>>>>> Why uninstall KRA then server, is not enough just uninstall
>>>>>>>>>>> server
>>>>>>>>>>> which
>>>>>>>>>>> covers KRA uninstall?
>>>>>>>>>>>
>>>>>>>>>>> +    def teardown_method(self, method):
>>>>>>>>>>> +        for host in self.replicas:
>>>>>>>>>>> +            host.run_command(self.kra_uninstall,
>>>>>>>>>>> raiseonerr=False)
>>>>>>>>>>> +            tasks.uninstall_master(host)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 3)
>>>>>>>>>>> Can be this function more generic? It should allow specify host
>>>>>>>>>>> where
>>>>>>>>>>> KRA should be installed not just master
>>>>>>>>>>>
>>>>>>>>>>> +    def test_kra_install_master(self):
>>>>>>>>>>> +        self.master.run_command(self.kra_install)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 4)
>>>>>>>>>>>
>>>>>>>>>>> TestLevel0(Dummy):
>>>>>>>>>>> Can be the test name more specific, something like
>>>>>>>>>>> TestReplicaPromotionLevel0
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 5)
>>>>>>>>>>> please remove this, the patch is on review and it will be pushed
>>>>>>>>>>> sooner
>>>>>>>>>>> than tests
>>>>>>>>>>> +    @pytest.mark.xfail  # Ticket N 5455
>>>>>>>>>>>
>>>>>>>>>>> and as I mentioned in ticket #5455, I cannot reproduce it with
>>>>>>>>>>> ipa-kra-install, so please provide steps to reproduce if you
>>>>>>>>>>> insist
>>>>>>>>>>> that
>>>>>>>>>>> this still does not work as expected with KRA.
>>>>>>>>>>>
>>>>>>>>>>> 6) This is completely wrong, it removes everything that we
>>>>>>>>>>> tried to
>>>>>>>>>>> achieve with previous patches with domain level in CI
>>>>>>>>>>
>>>>>>>>>> Actually, being able to configure domain level per class is WAY
>>>>>>>>>> more
>>>>>>>>>> convenient, than to always have to think which domain level is
>>>>>>>>>> appropriate for which particular test during jenkins job
>>>>>>>>>> configuration. In fact, I should have thought about it from the
>>>>>>>>>> very
>>>>>>>>>> beginning. For example, in test_replica_promotion.py we have on
>>>>>>>>>> class,
>>>>>>>>>> which intiates with domain level = 1, while others - with domain
>>>>>>>>>> level
>>>>>>>>>> 0. With config-based approach, we would have to implement a
>>>>>>>>>> separate
>>>>>>>>>> step that raises domain level. Overall, I am against the approach,
>>>>>>>>>> when you have to remember to set certain domain level in config
>>>>>>>>>> for
>>>>>>>>>> any particular test. The tests themselves should be aware of the
>>>>>>>>>> domain level they need.
>>>>>>>>> I do not say that we should not have something that overrides
>>>>>>>>> settings
>>>>>>>>> in from config in a particular test case, I say your patch is
>>>>>>>>> doing it
>>>>>>>>> wrong.
>>>>>>>>>
>>>>>>>>> I agree it is useful to have param domain_level in install_master,
>>>>>>>>> and
>>>>>>>>> intall_topo methods,  but is cannot be MAX_DOMAIN_LEVEL by default,
>>>>>>>>> because with your current patch the domain_level in config is not
>>>>>>>>> used
>>>>>>>>> at all, it will be always MAX_DOMAIN_LEVEL
>>>>>>>>>
>>>>>>>>> For example I want to achieve this goal:
>>>>>>>>> test_vault.py, this test suite can run on domain level1 and on
>>>>>>>>> domain
>>>>>>>>> level0, so with one test we can test 2 domain levels just with
>>>>>>>>> putting
>>>>>>>>> domain level into config file.
>>>>>>>>>
>>>>>>>>> I agree that with extraordinary test like replica promotion test
>>>>>>>>> is, we
>>>>>>>>> need something that allows override the config file.
>>>>>>>>>
>>>>>>>>> As I said bellow, domain_level default value should be None in
>>>>>>>>> install_master and install_topo plugin. If domain level was
>>>>>>>>> specified
>>>>>>>>> use the specified one, if not (value is None) use the domain level
>>>>>>>>> from
>>>>>>>>> config file.
>>>>>>>>
>>>>>>>> Agreed :)
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Martin
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> [PATCH] Enabled setting domain_level per class derived from
>>>>>>>>>>> TestIntegration
>>>>>>>>>>>
>>>>>>>>>>> When I configure domain level 0 in yaml config, how is this
>>>>>>>>>>> supposed to
>>>>>>>>>>> get into install methods when you removed that code?
>>>>>>>>>>>
>>>>>>>>>>> -        "--domain-level=%i" % host.config.domain_level
>>>>>>>>>>> +        "--domain-level=%i" % domain_level
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> You always use MAX_DOMAIN_LEVEL in this case or whatever is
>>>>>>>>>>> specified in
>>>>>>>>>>> domain_level option.
>>>>>>>>>>> I suggest to use domain_level=None, and when it is None use
>>>>>>>>>>> 'host.config.domain_level', if it is not None, use 'domain_level'
>>>>>>>>>>>
>>>>>>>>>>> With this we can specify domain level in config file for test
>>>>>>>>>>> that
>>>>>>>>>>> can
>>>>>>>>>>> be used for both domain levels and you can manually specify
>>>>>>>>>>> domain
>>>>>>>>>>> level
>>>>>>>>>>> for test that requires specific domain level.
>>>>>>>>>>>
>>>>>>>>>>> Also this should go away
>>>>>>>>>>>
>>>>>>>>>>>       @classmethod
>>>>>>>>>>>       def install(cls, mh):
>>>>>>>>>>> +        if hasattr(cls, "domain_level") and cls.master:
>>>>>>>>>>> +            cls.master.config.domain_level = cls.domain_level
>>>>>>>>>>>           if cls.topology is None:
>>>>>>>>>>>               return
>>>>>>>>>>>
>>>>>>>>>>> I do not see reason why test should override configuration in
>>>>>>>>>>> config in
>>>>>>>>>>> this case.
>>>>>>>>>>>
>>>>>>>>>>> Martin
>>>>>>>>>>>
>>>>>>>>>>> On 25.11.2015 16:44, Oleg Fayans wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Here is the updated version of the patch (more tests + fixed the
>>>>>>>>>>>> issues of the first one) + patch 0017, that implements the
>>>>>>>>>>>> necessary
>>>>>>>>>>>> changes in the background code, i. e. patch 16 does not work
>>>>>>>>>>>> without
>>>>>>>>>>>> patch 17
>>>>>>>>>>>>
>>>>>>>>>>>> On 11/18/2015 05:20 PM, Martin Basti wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 09.11.2015 15:09, Oleg Fayans wrote:
>>>>>>>>>>>>>> Hi guys,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Here are first two automated testcases from this (so far
>>>>>>>>>>>>>> incomplete)
>>>>>>>>>>>>>> testplan:
>>>>>>>>>>>>>> http://www.freeipa.org/page/V4/Replica_Promotion/Test_plan
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Testplan review is highly appreciated
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> PATCH 16: NACK
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1)
>>>>>>>>>>>>> What is the reason to add an unused parameter to
>>>>>>>>>>>>> 'domain_level' to
>>>>>>>>>>>>> install_topo()?
>>>>>>>>>>>>> Also it is good practise to add new option as the last
>>>>>>>>>>>>> parameter.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2)
>>>>>>>>>>>>> cab you in both tests specify a domain level with constant
>>>>>>>>>>>>> instead of
>>>>>>>>>>>>> number literal?
>>>>>>>>>>>>>
>>>>>>>>>>>>> 3)
>>>>>>>>>>>>> both test call install_topo with custom domain level, but it
>>>>>>>>>>>>> cannot
>>>>>>>>>>>>> work
>>>>>>>>>>>>> because 1)  (did you run the test?)
>>>>>>>>>>>>>
>>>>>>>>>>>>> 4)
>>>>>>>>>>>>> How the test "TestLevel1" is supposed to work?
>>>>>>>>>>>>> Respectively why there is call of install_topo() that installs
>>>>>>>>>>>>> replica.
>>>>>>>>>>>>> As this test just tests that ipa-replica-prepare is not working
>>>>>>>>>>>>> anymore,
>>>>>>>>>>>>> is it worth to spend 20 minutes with installing replica and
>>>>>>>>>>>>> then
>>>>>>>>>>>>> just no
>>>>>>>>>>>>> tot use it? IMO to install master in install step is enough.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Martin^2
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>> ./make-lint
>>>>>>> ************* Module ipatests.test_integration.base
>>>>>>> ipatests/test_integration/base.py:66: [E1101(no-member),
>>>>>>> IntegrationTest.install] Class 'IntegrationTest' has no
>>>>>>> 'domain_level'
>>>>>>> member)
>>>>>>> ************* Module ipatests.test_integration.test_replica_promotion
>>>>>>> ipatests/test_integration/test_replica_promotion.py:16:
>>>>>>> [E1101(no-member), Dummy.install] Class 'Dummy' has no 'domain_level'
>>>>>>> member)
>>>>>>> ipatests/test_integration/test_replica_promotion.py:117:
>>>>>>> [E1101(no-member),
>>>>>>> TestCAInstall.test_ca_install_without_replica_file]
>>>>>>> Module 'ipatests.test_integration.tasks' has no 'setup_replica'
>>>>>>> member)
>>>>>>>
>>>>>>>
>>>>>>> Is it so hard to run pylint before patch is posted for review?
>>>>>>
>>>>>> Sorry, my bad. Fixed.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> 1)
>>>> Why is this change in the patch?
>>>> -    # Clean up the test directory
>>>> -    host.run_command(['rm', '-rvf', host.config.test_dir])
>>>
>>> Otherwise 2 out of 8 tests fail with IOError at line 78 of
>>> ipatests/test_integration/tasks.py
>>>
>>> I do not understand yet how does this happen, but if you remove
>>> ipatests folder once, it then fails to be created again.
>>>
>> So this should be in separated patch and investigated properly.
> Agree. Removed
>>
>>>> -
>>>>
>>>>
>>>> 2)
>>>> is enough to have this check only in install_master, install_topo can
>>>> pass None to install_master
>>>> +    if domain_level is None:
>>>> +        domain_level = master.config.domain_level
>>>
>>> Done
>>>
>>>>
>>>>
>>>> 3)
>>>> IMO replica-manage del should cleanup hosts entry, so following code
>>>> should not be needed.
>>>> +    if cleanhost:
>>>> +        kinit_admin(master)
>>>> +        master.run_command(["ipa", "host-del", "--updatedns",
>>>> replica.hostname],
>>>> +                           raiseonerr=False)
>>>
>>> Well, in fact it does not. At least the corresponding dns record stays
>>> and causes the subsequent ipa-client-install to fail. Probably it's a
>>> bug. On the other hand, if I promote an existing client to replica and
>>> then delete this replica, then, I probably want the host record (that
>>> was created during client-install) to stay in the system. So, does not
>>> look like a bug to me.
>> No you don't, because replica uninstallation also removes the client.
>>
>> I tried it with ipa42, ipa-replica-manage del removes host entry, and
>> DNS A records, only SSHFP records stay there (I'm not sure if it is bug
>> or feature)
>>
>> Also I received this message
>> """
>> Failed to cleanup replica1.ipa.test DNS entries: no matching entry found
>> You may need to manually remove them from the tree
>> """
>> But, A record has been removed, so this is probably false positive and
>> it needs to have a ticket.
> 
> Agree, that was an issue with my setup.
> Removed
> 
>>>
>>>>
>>>> 4)
>>>> This variable is not used
>>>> +    kra_uninstall = ["ipa-kra-install", "--uninstall", "-U"]
>>>
>>> Removed
>>>
>>>>
>>>> 5)
>>>> Why do you need this
>>>> +    kra_install = ["ipa-kra-install", "-U", "-p",
>>>> config.dirman_password]
>>>> when you implemented tasks.install_kra that returns the exactly the same
>>>> result?
>>>
>>> Right. Removed
>>>
>>>>
>>>> 6)
>>>> PEP8
>>>> ./ipatests/test_integration/tasks.py:928:1: E302 expected 2 blank lines,
>>>> found 1
>>>> ./ipatests/test_integration/tasks.py:934:1: E302 expected 2 blank lines,
>>>> found 1
>>>> ./ipatests/test_integration/tasks.py:939:1: E302 expected 2 blank lines,
>>>> found 1
>>>> ./ipatests/test_integration/tasks.py:943:1: E302 expected 2 blank lines,
>>>> found 1
>>>> ./ipatests/test_integration/tasks.py:950:80: E501 line too long (80 > 79
>>>> characters)
>>>>
>>>> ./ipatests/test_integration/test_replica_promotion.py:29:80: E501 line
>>>> too long (85 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:64:80: E501 line
>>>> too long (85 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:67:80: E501 line
>>>> too long (88 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:93:80: E501 line
>>>> too long (80 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:94:80: E501 line
>>>> too long (83 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:118:80: E501 line
>>>> too long (81 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:128:80: E501 line
>>>> too long (80 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:129:80: E501 line
>>>> too long (82 > 79 characters)
>>>> ./ipatests/test_integration/test_replica_promotion.py:181:80: E501 line
>>>> too long (80 > 79 characters)
>>>
>>> Most of these complaints are unrelated to the current patches.
>>> It's better to create a separate patch addressing PEP8 errors.
>>>
>> I beg for your pardon, those PEP8 errors have been introduced by your
>> patches.
> 
> Fixed
> 
>>>>
>>>> 7)
>>>> Why this must be stored in instance? IMO to have it stored as local
>>>> variable is perfect
>>>> TestKRAInstall, TestCAInstall
>>>>          self.replica1_filename = tasks.get_replica_filename(replica1)
>>>>          self.replica2_filename = tasks.get_replica_filename(replica2)
>>>
>>> Agree. Fixed
>>>
>>
> 
> 
> 

-- 
Oleg Fayans
Quality Engineer
FreeIPA team
RedHat.
From 761c3e4da49b2686f6e39c79863a129505634cc0 Mon Sep 17 00:00:00 2001
From: Oleg Fayans <ofay...@redhat.com>
Date: Tue, 8 Dec 2015 23:44:46 +0100
Subject: [PATCH] Prepared integration tests for replica promotion

---
 ipatests/test_integration/test_replica_promotion.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ipatests/test_integration/test_replica_promotion.py b/ipatests/test_integration/test_replica_promotion.py
index 9282a47aa07682a5aec296c941f5ebbff84ab89c..48d97d62cca070a1d3d46499767ad5c295d00425 100644
--- a/ipatests/test_integration/test_replica_promotion.py
+++ b/ipatests/test_integration/test_replica_promotion.py
@@ -4,6 +4,7 @@ from ipatests.test_integration.test_caless import assert_error
 from ipalib.constants import DOMAIN_LEVEL_0
 from ipalib.constants import DOMAIN_LEVEL_1
 from env_config import get_global_config
+from ipalib.constants import DOMAIN_SUFFIX_NAME
 
 
 class Dummy(IntegrationTest):
@@ -61,7 +62,7 @@ class TestReplicaPromotionLevel0(Dummy):
         http://www.freeipa.org/page/V4/Replica_Promotion/Test_plan#Test_case:
         _ipa-restore_after_domainlevel_raise_restores_original_domain_level
         """
-        command = ["ipa", "topologysegment-find", "realm"]
+        command = ["ipa", "topologysegment-find", DOMAIN_SUFFIX_NAME]
         tasks.install_replica(self.master, self.replicas[0])
         backup_file = tasks.ipa_backup(self.master)
         self.master.run_command(["ipa", "domainlevel-set", "1"])
-- 
2.4.3

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to