nailgun perfomance test fails due to ClusterOperationsLoadTest.test_put_deploy_selected_nodes taking too long

Bug #1498365 reported by Aleksandra Fedorova
34
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Fuel for OpenStack
Fix Released
High
Dmitry Guryanov
7.0.x
Won't Fix
High
Fuel Python (Deprecated)
8.0.x
Won't Fix
High
Alexander Kislitsky
Mitaka
Fix Released
High
Dmitry Guryanov

Bug Description

ClusterOperationsLoadTest.test_put_deploy_selected_nodes is running longer then expected

https://ci.fuel-infra.org/job/nailgun_performance_tests/308/console

=================================== FAILURES ===================================
___________ ClusterOperationsLoadTest.test_put_deploy_selected_nodes ___________

args = (<nailgun.test.performance.unit.test_cluster_operations.ClusterOperationsLoadTest testMethod=test_put_deploy_selected_nodes>,)
kwargs = {}
test = <nailgun.test.performance.unit.test_cluster_operations.ClusterOperationsLoadTest testMethod=test_put_deploy_selected_nodes>
number_of_runs = 10, run = 9, compare_with_previous = False
class_name = 'ClusterOperationsLoadTest', previous_test_results = {}
current_rest_results = defaultdict(<function <lambda> at 0x5e93b90>, {'1': defaultdict(<type 'list'>,...272289991378784, 11.296671152114868], 'request_name': 'DeploySelectedNodes'})})
call_number = '1'
results = defaultdict(<type 'list'>, {'expect_time': 10, 'results': [11.261782884597778,...1.272289991378784, 11.296671152114868], 'request_name': 'DeploySelectedNodes'})
request_name = 'DeploySelectedNodes'

    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        # read results of previous correct run
        test = args[0]
        number_of_runs = settings.PERFORMANCE_TESTS_RUN_NUMBER

        # run tests multiple time to get more exact results
        for run in six.moves.range(number_of_runs):
            f(*args, **kwargs)
            copy_test_results(run)
            # reset call number for unittests
            test.call_number = 1

        compare_with_previous = False
        class_name = test.__class__.__name__
        previous_test_results = read_previous_results().get(class_name, {}).\
            get(str(test), {})
        current_rest_results = test.tests_results[str(test)]
        if len(previous_test_results) == len(current_rest_results):
            compare_with_previous = True

        for call_number, results in six.iteritems(
                test.tests_results[str(test)]):
            request_name = results['request_name']

            # normalize results and compute avg
            normalized = normalize(results['results'], 0.025)
            avg_time = sum(normalized) / len(normalized)

            # check if previous results exists
            prev_time = None
            if compare_with_previous:
                if request_name in \
                   previous_test_results[call_number]['request_name']:
                    # we give some % (default 10%) of tolerance for previous
                    # expected time
                    prev_time = (
                        previous_test_results[call_number]['expect_time'] *
                        (1.0 + settings.PERFORMANCE_TESTS_TOLERANCE))
            expect_time = prev_time or results['expect_time']
            test.tests_results[str(test)]
            test.assertTrue(
                avg_time <= expect_time,
                "Average execution time: {exec_time} is greater, "
                "than expected: {max_exec_time}".format(
                exec_time=avg_time,
> max_exec_time=expect_time))
E AssertionError: False is not True : Average execution time: 11.269977755 is greater, than expected: 10

nailgun/test/performance/base.py:360: AssertionError
 generated xml file: /home/jenkins/workspace/nailgun_performance_tests/nailgun.xml

Changed in fuel:
status: New → Confirmed
importance: Undecided → High
milestone: none → 8.0
tags: added: module-nailgun
Changed in fuel:
assignee: Fuel Python Team (fuel-python) → Alexander Kislitsky (akislitsky)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-web (master)

Fix proposed to branch: master
Review: https://review.openstack.org/232533

Changed in fuel:
status: Confirmed → In Progress
Dmitry Pyzhov (dpyzhov)
tags: added: tech-debt
Dmitry Pyzhov (dpyzhov)
tags: added: area-python
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/239714

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on fuel-web (master)

Change abandoned by Alexander Kislitsky (<email address hidden>) on branch: master
Review: https://review.openstack.org/232533
Reason: Will be fixed in another changeset

Changed in fuel:
status: In Progress → Confirmed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Change abandoned by Alexander Kislitsky (<email address hidden>) on branch: master
Review: https://review.openstack.org/239714
Reason: This approach should be done with sqlalchemy tool: joinedload.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-web (master)

Fix proposed to branch: master
Review: https://review.openstack.org/253073

Changed in fuel:
status: Confirmed → In Progress
Changed in fuel:
milestone: 8.0 → 9.0
status: In Progress → New
Artem Roma (aroma-x)
Changed in fuel:
status: New → Confirmed
Revision history for this message
Ihor Kalnytskyi (ikalnytskyi) wrote :

The fix is to danger and possible destructive. It's about performance optimisation. It's too late for such changes in 8.0. Mark it as Won't fixed and move to 9.0.

no longer affects: fuel/future
Changed in fuel:
assignee: Alexander Kislitsky (akislitsky) → Dmitry Guryanov (dguryanov)
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-web (master)

Reviewed: https://review.openstack.org/253073
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=38eeb939aaab62339304837bce4721a2db8cad08
Submitter: Jenkins
Branch: master

commit 38eeb939aaab62339304837bce4721a2db8cad08
Author: Alexander Kislitsky <email address hidden>
Date: Tue Mar 22 09:31:58 2016 +0300

    Performance of network manager operation improve

    We have extra SQLs generated in the NetworkManager when passing
    node_id instead already loaded SQLAlchemy node object.

    Additional changes:
    - Bulk insert used in IPs assiging process.
    - zip changed on six.moves.zip in the NetworkManager.
    - Removed unused function get_admin_ips_for_interfaces from NetworkManager.

    Co-Authored-By: Dmitry Guryanov <email address hidden>

    Partial-Bug: #1498365
    Change-Id: I0518a5879c775d568de5652dbdd856a0cede80ce

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on fuel-web (master)

Change abandoned by Dmitry Guryanov (<email address hidden>) on branch: master
Review: https://review.openstack.org/295757
Reason: I can't reproduce issue, which this patch is fixing

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-web (master)

Reviewed: https://review.openstack.org/293920
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=ac2efa618bbb7cfb0f4eab140839827ec308fb58
Submitter: Jenkins
Branch: master

commit ac2efa618bbb7cfb0f4eab140839827ec308fb58
Author: Dmitry Guryanov <email address hidden>
Date: Tue Mar 29 15:48:37 2016 +0300

    Don't fetch fuelweb_admin network for each node

    fuelweb_admin network is not related to node object,
    so there is no reason for quering it from the database
    for each node in a loop. Let's instead get in once and
    pass to functions, which need it.

    Partial-Bug: #1498365
    Change-Id: Ie3afb209bfda2c3858e2a1b84645c3e2398a07e8

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/293985
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=573c7ee3a5c1ef67dbe3dd975725a011028a608c
Submitter: Jenkins
Branch: master

commit 573c7ee3a5c1ef67dbe3dd975725a011028a608c
Author: Dmitry Guryanov <email address hidden>
Date: Tue Mar 22 11:09:19 2016 +0300

    Don't fetch cluster roles metadata for every node

    Cluster roles metadata can be fetched from the database
    once before iterating over nodes in cluster instead of
    doing it in a loop. This patch significantly reduces
    number of database requests.

    Partial-Bug: #1498365
    Change-Id: Iec12bf9aee1d7a190a5cdb736d2d971529b0cdf3

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/294072
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=1f79eee4352f1ba447837422cbb1c45a1797826f
Submitter: Jenkins
Branch: master

commit 1f79eee4352f1ba447837422cbb1c45a1797826f
Author: Dmitry Guryanov <email address hidden>
Date: Tue Mar 29 12:31:34 2016 +0300

    Check if task deploy supported before cluster serialization

    If some tasks in deployment graph have version less
    than 2.0.0 than we fallback to granular deploy
    method. This check should be done before cluster
    serialization, which take more time.

    So let's check if task can be executed with task based
    method before serialization.

    This patch significantly improves performance.

    Partial-Bug: #1498365
    Change-Id: I5d0fe8ee9b73958ac07e2fda3ed1bd2f29f0e5fb

Changed in fuel:
status: In Progress → Fix Committed
Revision history for this message
Tatyanka (tatyana-leontovich) wrote :
Changed in fuel:
status: Fix Committed → Fix Released
tags: added: non-release
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-nailgun-extension-cluster-upgrade (stable/mitaka)

Fix proposed to branch: stable/mitaka
Review: https://review.openstack.org/360086

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-nailgun-extension-cluster-upgrade (stable/mitaka)
Download full text (21.0 KiB)

Reviewed: https://review.openstack.org/360086
Committed: https://git.openstack.org/cgit/openstack/fuel-nailgun-extension-cluster-upgrade/commit/?id=40dd411fe461441e943de806f5de632eeb64dc4a
Submitter: Jenkins
Branch: stable/mitaka

commit 17ab5a3aaa7d2c4ae4652d1a4dc0410b31e7c47d
Author: Sergey Abramov <email address hidden>
Date: Wed Aug 24 18:32:39 2016 +0300

    Add create upgrade release handler

    Required for create new release just for upgrade, that have overwrited
    params. This params are valid for orig cluster release.

    Change-Id: Ib2387b9c2b74902c7289ee8f69a5f5d323ec82ca

commit 8de47e0dbf5955b3cbe59a3956e1ca1f4d8679ef
Author: Nikita Zubkov <email address hidden>
Date: Wed Aug 24 15:42:32 2016 +0300

    Add VIPs transformer

    Move upgrade vips code to the transformer

    Change-Id: Ia6935521b8b90b73fb74ba92859e7febf74c4ced

commit b54f9d4c29808c4561b20af508b85b9e40fa72b6
Author: Nikita Zubkov <email address hidden>
Date: Wed Aug 24 17:51:39 2016 +0300

    Move partition info transformation to extension

    octane have some dirty hacks to change volumes attributes using nailgun
    as a library, such modifications should be done in a extension

    Change-Id: I422bb368916f3a319e286edcc6103a2834097a87

commit b3ce0d348cc20ed988b5adf66474836f631eb12d
Author: Anastasiya <email address hidden>
Date: Mon Aug 1 15:47:13 2016 +0300

    Add tests for assign_node_to_cluster

    Change-Id: Iafa1baa6a1ca4d701ec89e49dd9d6f969804c82e

commit a764ba306dcd0cfb65a82c89f07ec0f3d129c66b
Author: Nikita Zubkov <email address hidden>
Date: Tue Aug 23 14:05:16 2016 +0300

    Update README

    Add instalation section

    Change-Id: Ib16132ab9c18d757e96e98304fdd8339ddf5497a

commit 95ff3a3598397bb6e3c68793051298aaa006d163
Author: Yuriy Taraday <email address hidden>
Date: Tue Aug 23 23:01:16 2016 +0300

    Add cluster transformations

    Implement transformations that are applied to cluster attributes during
    environment cloning.

    Conversion from text to text_list type has been limited to dns_list and
    ntp_list keys only to keep predictable behavior.

    Change-Id: I1ff596f850bd42243697cad1c1c35f0cf1386376

commit 163ce243fbade3dac05eb535ad2987687a57f87d
Author: Yuriy Taraday <email address hidden>
Date: Tue Aug 23 22:51:19 2016 +0300

    Add pluggable transformations for data migration

    This change introduces new transformation mechanism:
    - all available transformations are listed in setuptools entry points
      under namespace like this (for cluster transformations):

        nailgun.cluster_upgrade.transformations.cluster.9.0 =
            dns_list = ...
            ntp_list = ...
        nailgun.cluster_upgrade.transformations.cluster.8.0 =
            ...
        <etc>

    - config file will include section that specifies enabled
      transformations like this:

        CLUSTER_UPGRADE_TRANSFORMATIONS:
          cluster:
            9.0: dns_list ntp_list ...
            8.0: ...
            7.0: ...

      (only default values are implemented here, actual config support will
      follow)

    - when transformations...

tags: added: in-stable-mitaka
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-nailgun-extension-cluster-upgrade (master)

Fix proposed to branch: master
Review: https://review.openstack.org/367019

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on fuel-nailgun-extension-cluster-upgrade (master)

Change abandoned by Ilya Kharin (<email address hidden>) on branch: master
Review: https://review.openstack.org/367019

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-nailgun-extension-cluster-upgrade (master)

Fix proposed to branch: master
Review: https://review.openstack.org/367419

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on fuel-nailgun-extension-cluster-upgrade (master)

Change abandoned by Ilya Kharin (<email address hidden>) on branch: master
Review: https://review.openstack.org/367419

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to fuel-nailgun-extension-cluster-upgrade (master)
Download full text (14.8 KiB)

Reviewed: https://review.openstack.org/367019
Committed: https://git.openstack.org/cgit/openstack/fuel-nailgun-extension-cluster-upgrade/commit/?id=e38d48cbc5d216ac0f853466ab48e5d6d9687521
Submitter: Jenkins
Branch: master

commit a4e2a67e3e5024b0ae65f445355965a1263fef73
Author: Ilya Kharin <email address hidden>
Date: Sat Sep 3 02:42:07 2016 +0300

    Add support to re-assign a set of nodes

    This patch adds an ability to re-assign a set of the given nodes at
    once. This feature was technically available but not exposed to the
    client. A groupped re-assigning allows to effectively re-provision nodes
    by creating an atomic task in Astute.

    Change-Id: I4a7c7e35d844683ef73ad7f8459d1892e80e0a64
    Related-Bug: #1616925

commit d87125662f2f55204244e43ec6522fe36c6bf21e
Author: Nikita Zubkov <email address hidden>
Date: Mon Aug 29 17:56:09 2016 +0300

    Add test for vip transformer

    Change-Id: I65124237604fe6718ad6c351825f192a98d470fb
    (cherry picked from commit 55422ddce7b0e9e1b9976504500de8a1688a99d7)

commit 3cac9b551cdecaf9148800cc6fd9b81fbb3149c5
Author: Nikita Zubkov <email address hidden>
Date: Tue Jul 19 18:24:42 2016 +0300

    Switch to upstream fuel-web repository

    Change-Id: I994304bdc8eaf7e4da175981cb721d41a286fed0
    Depends-On: Id0bc78478cf3f40767fed760cd54e487a934fa10

commit a78f4348f84dd470ba1f3b99d2c751fa2dd12d7a
Author: Anastasiya <email address hidden>
Date: Mon Aug 1 14:39:35 2016 +0300

    Move change_env_settings function from octane to cluster upgrade extension

    * change_env_settings function was moved to cluster upgrade extention
    * merge generated attributes code was written

    Change-Id: I6d1e27b8b0c01f3251067bc88931cd2354feb5ce
    Partial-Bug: #1602587
    (cherry picked from commit dc2e3f930957b2c8af2d6c6a60bfcc6c5e6bb061)

commit 280fc4f08258f1e85ba099f74c4956233652e9a2
Author: Ilya Kharin <email address hidden>
Date: Wed Aug 10 17:28:17 2016 +0300

    Add absent __init__.py to migrations/versions

    Without the versions/__init__.py file versions was not identified as
    a package and was not included in a distribution.

    Change-Id: I67f152ebb9234df880c61d79d154b1aabc8828c6
    Closes-Bug: #1611793

commit f7ebb08b46f5beb13701f7a6a71a1f4fea05f451
Author: Alexander Tsamutali <email address hidden>
Date: Mon Aug 1 15:47:58 2016 +0300

    Add package spec

    Change-Id: Id71764dff07a4b32851eb8ccf69c66dca4a7b6ab
    Related-Bug: #1604492

commit b93ebedc49f79f6ba4a710a9d1715c9f965b3081
Author: Anastasiya <email address hidden>
Date: Fri Jul 15 10:24:11 2016 +0300

    Correction of transformation for text_list

    * added removing of space in text_list
    * added test for merge_attributes

    Change-Id: I5582878fc7c524551593abf21dfd4ea45cd430c9
    Closes-bug: 1602607
    (cherry picked from commit fdd2a6226483c67ce8bc7adc8b2d354862125bac)

commit d4db5ba78ccefd08e465cd30116094678c5cb35f
Author: Nikita Zubkov <email address hidden>
Date: Wed Jul 13 13:43:58 2016 +0300

    Fix package namespace

commit 443fc43da6e963cd0825880a80678e8e385c0a3a
Author: Nikita Zubkov <email address hidden>
Date: Wed J...

Revision history for this message
Alexey Stupnikov (astupnikov) wrote :

We no longer support MOS5.1, MOS6.0, MOS6.1
We deliver only Critical/Security fixes to MOS7.0, MOS8.0.
We deliver only High/Critical/Security fixes to MOS9.2.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.