[Freeipa-devel] [PATCH 016, 024, 025] First part of the replica promotion tests + testplan

Oleg Fayans ofayans at redhat.com
Thu Mar 17 15:00:13 UTC 2016


Hi Lukas,

On 03/17/2016 11:28 AM, Lukas Slebodnik wrote:
> On (10/03/16 23:09), Oleg Fayans wrote:
>> Hi Martin,
>>
>>
>>
>> On 03/08/2016 08:18 PM, Martin Basti wrote:
>>>
>>>
>>> On 08.03.2016 18:24, Martin Basti wrote:
>>>>
>>>>
>>>> On 08.03.2016 12:38, Oleg Fayans wrote:
>>>>> The patches were rebased against the current master
>>>>>
>>>>> On 03/04/2016 05:33 PM, Martin Basti wrote:
>>>>>> * old messages have been removed *
>>>>>>>>>> 1)
>>>>>>>>>> this method is unused please remove it
>>>>>>>>>>
>>>>>>>>>>       def test_kra_install_master(self):
>>>>>>> Well, in fact it is used twice: in both domain levels, so I'd better
>>>>>>> keep it:
>>>>>>>
>>>>>>> -bash-4.3$ ipa-run-tests test_integration/test_replica_promotion.py
>>>>>>> --collect-only
>>>>>>> ====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> test session starts
>>>>>>> =====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> platform linux2 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.3
>>>>>>> rootdir: /usr/lib/python2.7/site-packages/ipatests, inifile:
>>>>>>> pytest.ini
>>>>>>> plugins: sourceorder, multihost
>>>>>>> collected 8 items
>>>>>>> <Module 'test_integration/test_replica_promotion.py'>
>>>>>>>     <Class 'TestReplicaPromotionLevel0'>
>>>>>>>       <Instance '()'>
>>>>>>>         <Function 'test_kra_install_master'>
>>>>>>>         <Function 'test_promotion_disabled'>
>>>>>>>         <Function 'test_backup_restore'>
>>>>>>>     <Class 'TestKRAInstall'>
>>>>>>>       <Instance '()'>
>>>>>>>         <Function 'test_kra_install_without_replica_file'>
>>>>>>>     <Class 'TestCAInstall'>
>>>>>>>       <Instance '()'>
>>>>>>>         <Function 'test_ca_install_without_replica_file'>
>>>>>>>     <Class 'TestReplicaPromotionLevel1'>
>>>>>>>       <Instance '()'>
>>>>>>>         <Function 'test_kra_install_master'>
>>>>>>>         <Function 'test_replica_prepare_disabled'>
>>>>>>>     <Class 'TestReplicaManageCommands'>
>>>>>>>       <Instance '()'>
>>>>>>>         <Function 'test_replica_manage_commands'>
>>>>>> aah my bad, I forgot that pytest executes it when it begins with test_*
>>>>>> even in parent class
>>>>>>>>>> 2)
>>>>>>>>>> Why are these there? I do not see any usage
>>>>>>>>>>
>>>>>>>>>> from env_config import get_global_config
>>>>>>>>>> config = get_global_config()
>>>>>>> Removed
>>>>>>>
>>>>>>>>>> 3) nitpick
>>>>>>>>>> +    num_clients = 0
>>>>>>>>>> this is set by default
>>>>>>> Removed
>>>>>>>
>>>>>>>>>> otherwise LGTM
>>>>>>>>>>
>>>>>>>>>> Results of testing tomorrow.
>>>>>>>>>>
>>>>>>>>>> Martin^2
>>>>>>>>>>
>>>>>>>>> I applied all patches including workarounds, but test failed.
>>>>>>>>>
>>>>>>>>> ipatests.test_integration.test_replica_promotion.TestReplicaPromotionLevel0
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51] RUN
>>>>>>>>> ['ipa-replica-install', '-U', '-p', 'Secret123', '-w', 'Secret123',
>>>>>>>>> '--setup-ca', '--ip-address', '192.168.144.102',
>>>>>>>>> '/root/ipatests/replica-info.gpg']
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51] The host
>>>>>>>>> replica1.ipa.test already exists on the master server.
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51] You should
>>>>>>>>> remove it before proceeding:
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51] % ipa
>>>>>>>>> host-del replica1.ipa.test
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51]
>>>>>>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    The
>>>>>>>>> ipa-replica-install command failed. See
>>>>>>>>> /var/log/ipareplica-install.log for more information
>>>>>>>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd51] Exit
>>>>>>>>> code: 3
>>>>>>>>> FAILED
>>>>>>> this is exactly the error that happens when a workaround for 5627
>>>>>>> is not
>>>>>>> applied. I have re-run the tests with all the patches and everything
>>>>>>> passed. Could you please double-check, whether patch 0027 was applied
>>>>>>> correctly?
>>>>>>>
>>>>>>> bash-4.3$ ipa-run-tests test_integration/test_replica_promotion.py
>>>>>>> --pdb
>>>>>>> ====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> test session starts
>>>>>>> =====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> platform linux2 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.3
>>>>>>> rootdir: /usr/lib/python2.7/site-packages/ipatests, inifile:
>>>>>>> pytest.ini
>>>>>>> plugins: sourceorder, multihost
>>>>>>> collected 8 items
>>>>>>>
>>>>>>> test_integration/test_replica_promotion.py ........
>>>>>>>
>>>>>>> ================================================================================
>>>>>>>
>>>>>>>
>>>>>>> 8 passed in 7561.93 seconds
>>>>>>> =================================================================================
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> I will
>>>>>>
>>>>>>>> And it needs ticket, otherwise it will not be in 4-3 branch.
>>>>>>> https://fedorahosted.org/freeipa/ticket/5723
>>>> NACK
>>>>
>>>> 1)
>>>> ipatests.test_integration.test_replica_promotion.TestReplicaPromotionLevel0
>>>>
>>>>
>>>> [ipa.ipatests.test_integration.host.Host.replica2.ParamikoTransport]
>>>> RUN ['ipa-replica-install', '-U', '-p', 'Secret123', '-w',
>>>> 'Secret123', '--setup-ca', '--ip-address', '192.168.200.103', '-r',
>>>> 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65] RUN
>>>> ['ipa-replica-install', '-U', '-p', 'Secret123', '-w', 'Secret123',
>>>> '--setup-ca', '--ip-address', '192.168.200.103', '-r', 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65] IPA client is
>>>> already configured on this system, ignoring the --domain, --server,
>>>> --realm, --hostname, --password and --keytab options.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65] Your system
>>>> may be partly configured.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65] Run
>>>> /usr/sbin/ipa-server-install --uninstall to clean up.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65]
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    You must
>>>> provide a file generated by ipa-replica-prepare to create a replica
>>>> when the domain is at level 0.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    The
>>>> ipa-replica-install command failed. See
>>>> /var/log/ipareplica-install.log for more information
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd65] Exit code: 1
>>>> FAILED
>>>>
>>>> 2)
>>>> ipatests.test_integration.test_replica_promotion.TestKRAInstall
>>>>
>>>> [ipa.ipatests.test_integration.host.Host.replica2.ParamikoTransport]
>>>> RUN ['ipa-replica-install', '-U', '-p', 'Secret123', '-w',
>>>> 'Secret123', '--setup-ca', '--ip-address', '192.168.200.103', '-r',
>>>> 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] RUN
>>>> ['ipa-replica-install', '-U', '-p', 'Secret123', '-w', 'Secret123',
>>>> '--setup-ca', '--ip-address', '192.168.200.103', '-r', 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] IPA client is
>>>> already configured on this system, ignoring the --domain, --server,
>>>> --realm, --hostname, --password and --keytab options.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Your system
>>>> may be partly configured.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Run
>>>> /usr/sbin/ipa-server-install --uninstall to clean up.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    You must
>>>> provide a file generated by ipa-replica-prepare to create a replica
>>>> when the domain is at level 0.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    The
>>>> ipa-replica-install command failed. See
>>>> /var/log/ipareplica-install.log for more information
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Exit code: 1
>>>> FAILED
>>>>
>>>>
>>>> 3)
>>>> ipatests.test_integration.test_replica_promotion.TestCAInstall
>>>>
>>>> [ipa.ipatests.test_integration.host.Host.replica2.ParamikoTransport]
>>>> RUN ['ipa-replica-install', '-U', '-p', 'Secret123', '-w',
>>>> 'Secret123', '--setup-dns', '--forwarder', '10.34.78.1',
>>>> '--ip-address', '192.168.200.103', '-r', 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] RUN
>>>> ['ipa-replica-install', '-U', '-p', 'Secret123', '-w', 'Secret123',
>>>> '--setup-dns', '--forwarder', '10.34.78.1', '--ip-address',
>>>> '192.168.200.103', '-r', 'IPA.TEST']
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] IPA client is
>>>> already configured on this system, ignoring the --domain, --server,
>>>> --realm, --hostname, --password and --keytab options.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Your system
>>>> may be partly configured.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Run
>>>> /usr/sbin/ipa-server-install --uninstall to clean up.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    You must
>>>> provide a file generated by ipa-replica-prepare to create a replica
>>>> when the domain is at level 0.
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22]
>>>> ipa.ipapython.install.cli.install_tool(Replica): ERROR    The
>>>> ipa-replica-install command failed. See
>>>> /var/log/ipareplica-install.log for more information
>>>> [ipa.ipatests.test_integration.host.Host.replica2.cmd22] Exit code: 1
>>>> FAILED
>>>>
>>>>
>>>> Reason:
>>>>
>>>>  def install_replica(master, replica, setup_ca=True, setup_dns=False,
>>>> -                    setup_kra=False, extra_args=()):
>>>> +                    setup_kra=False, extra_args=(), domain_level=None):
>>>> +    if domain_level is None:
>>>> +        domain_level = domainlevel(master)
>>
>> Oops. Sorry, must have been a result of inaccurate rebase. Fixed
>> The successful run is attached
>>
>>>>
>>>> -    if domainlevel(master) == DOMAIN_LEVEL_0:
>>>> +    if domainlevel == DOMAIN_LEVEL_0:
>>>>
>>>> domain_level variable is actually unused
>>>>
>>> Also with your patch that removes host_prepare, I see many following
>>> errors in test debug output
>>>
>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd8] -bash: line 1:
>>> cd: /root/ipatests: No such file or directory
>>> [ipa.ipatests.test_integration.host.Host.replica1.cmd8] -bash: line 2:
>>> /root/ipatests/env.sh: No such file or directory
>>>
>>>
>>> I do not see these errors in current tests, so the patch does not seem
>>> right to me.
>>
>> http://jenkins.idm.lab.eng.brq.redhat.com:8080/job/freeipa-integration-f23master-customized_ds_config_install-domlevel-1/23/consoleFull
>>
>> I've been experimenting a lot to find get rid of it but was
>> unsuccessful. Seemingly it does not affect the tests.
>>
> Oleg it looks like you broke something
> in the test_integration/test_external_ca.py
> 
> _______________________ TestExternalCA.test_external_ca ________________________
> 
> self = <ipatests.test_integration.test_external_ca.TestExternalCA object at 0x7ff560a51750>
> 
>     def test_external_ca(self):
>         # Step 1 of ipa-server-install
>         self.master.run_command([
>             'ipa-server-install', '-U',
>             '-a', self.master.config.admin_password,
>             '-p', self.master.config.dirman_password,
>             '--setup-dns', '--no-forwarders',
>             '-n', self.master.domain.name,
>             '-r', self.master.domain.realm,
>             '--domain-level=%i' % self.master.config.domain_level,
>             '--external-ca'
>         ])
>     
>         nss_db = os.path.join(self.master.config.test_dir, 'testdb')
>         external_cert_file = os.path.join(nss_db, 'ipa.crt')
>         external_ca_file = os.path.join(nss_db, 'ca.crt')
>         noisefile = os.path.join(self.master.config.test_dir, 'noise.txt')
>         pwdfile = os.path.join(self.master.config.test_dir, 'pwdfile.txt')
>     
>         # Create noise and password files for NSS database
>>       self.master.run_command('date | sha256sum > %s' % noisefile)
> 
> test_integration/test_external_ca.py:49: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ../pytest_multihost/host.py:246: in run_command
>     command.wait(raiseonerr=raiseonerr)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pytest_multihost.transport.SSHCommand object at 0x7ff5609eb610>
> raiseonerr = True
> 
>     def wait(self, raiseonerr=True):
>         """Wait for the remote process to exit
>     
>             Raises an excption if the exit code is not 0, unless raiseonerr is
>             true.
>             """
>         if self._done:
>             return self.returncode
>     
>         self._end_process()
>     
>         self._done = True
>     
>         if raiseonerr and self.returncode:
>             self.log.error('Exit code: %s', self.returncode)
>>           raise subprocess.CalledProcessError(self.returncode, self.argv)
> E           CalledProcessError: Command 'date | sha256sum > /root/ipatests/noise.txt' returned non-zero exit status 1
> 
> ../pytest_multihost/transport.py:159: CalledProcessError
> ---------------------------- Captured stdout setup -----------------------------
> <ipatests.test_integration.config.Config object at 0x7ff560a51cd0>
> ========================== 1 failed in 32.25 seconds ===========================
> 
> 
> 
> The command "date | sha256sum > /root/ipatests/noise.txt"
> 
> The only explanation is that the directory /root/ipatests/ does not exist.

Obviously this is caused by my patch N 0025
freeipa-ofayans-0025-Removed-a-constantly-failing-call-to-prepare_host.patch

Without it replica_promotion tests would fail. The only compromise I see
is to remove this line in unapply_fixes function in
ipatests/test_integration/tasks.py:

host.run_command(['rm', '-rvf', host.config.test_dir])

Now the biggest question is: why do we keep removing the config folder
anyway? All the files (backups of /etc/hosts, etc) that ever get there
get overwritten each time anyway so it's quite safe to just keep the
folder throughout the whole test execution.

> 
> LS
> 

-- 
Oleg Fayans
Quality Engineer
FreeIPA team
RedHat.




More information about the Freeipa-devel mailing list