ManageIQ / integration_tests

ManageIQ integration tests
GNU General Public License v2.0
69 stars 165 forks source link

Report creation fails #4036

Closed nachandr closed 7 years ago

nachandr commented 7 years ago

I ran into this issue while running automation to create Chargeback reports. Here's a link to my PR.The failure was seen while running the PR on 5.7.Note that the issue occurs when the PR is run locally and on PRT. https://github.com/ManageIQ/integration_tests/pull/4023/

2017-01-19 19:58:10,813 [I] Wait for Any of the elements '(<cfme.web_ui.tabstrip._TabStripField ident_string='Columns', arg=None>,)' to appear took 1 tries and 1.22817802429 seconds before failure from an exception. (/usr/lib/python2.7/site-packages/wait_for/__init__.py:144)
2017-01-19 19:58:14,460 [I] wait_for hit an exception: TypeError: Unprocessable type for elements(<cfme.web_ui.multibox.MultiBoxSelect unselected=None, selected=None>) -> class MultiBoxSelect (kwargs: {}) (/usr/lib/python2.7/site-packages/wait_for/__init__.py:135)
2017-01-19 19:58:14,460 [I] Wait for Any of the elements '(<cfme.web_ui.tabstrip._TabStripField ident_string='Columns', arg=<cfme.web_ui.multibox.MultiBoxSelect unselected=None, selected=None>>,)' to appear took 1 tries and 1.43055796623 seconds before failure from an exception. (/usr/lib/python2.7/site-packages/wait_for/__init__.py:144)
2017-01-19 19:58:17,280 [E] @pytest.yield_fixture(scope="module")
    def chargeback_report_default(vm_ownership, assign_compute_default_rate, provider):
        # Create a Chargeback report based on the default Compute rate; Queue the report.
        owner = vm_ownership
        data = {'menu_name': 'cb_' + provider.name,
                'title': 'cb_' + provider.name,
                'base_report_on': 'Chargeback for Vms',
                'report_fields': ['Memory Used', 'Memory Used Cost', 'Owner',
                'CPU Used', 'CPU Used Cost',
                'Disk I/O Used', 'Disk I/O Used Cost',
                'Network I/O Used', 'Network I/O Used Cost'],
                'filter_show_costs': 'Owner',
                'filter_owner': owner,
                'interval_end': 'Today (partial)'}
        report = CustomReport(is_candu=True, **data)
>       report.create()

cfme/tests/intelligence/reports/test_validate_chargeback_report.py:306: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
cfme/intelligence/reports/reports.py:176: in create
    fill(report_form, self, action=form_buttons.cancel if cancel else form_buttons.add)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
    return best(*args, **kwds)
utils/update.py:80: in _fill_with_updateable
    fill(o, u.__dict__, **kw)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
    return best(*args, **kwds)
cfme/web_ui/__init__.py:1553: in _fill_form_dict
    return _fill_form_list(form, values.items(), **kwargs)
cfme/web_ui/__init__.py:1535: in _fill_form_list
    fill_prev = fill(loc, value)  # re-dispatch to fill for each item
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
    return best(*args, **kwds)
cfme/web_ui/tabstrip.py:138: in _fill_tabstrip
    web_ui.fill(tabstrip_field.locate(), value)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
    return best(*args, **kwds)
cfme/web_ui/multibox.py:238: in _fill_multibox_list
    multi.add(*map(str, values), flush=True)
cfme/web_ui/multibox.py:119: in add
    self.remove_all()
cfme/web_ui/multibox.py:97: in remove_all
    if len(self._selected.options) == 0:
/usr/lib/python2.7/site-packages/selenium/webdriver/support/select.py:47: in options
    return self._el.find_elements(By.TAG_NAME, 'option')
cfme/fixtures/pytest_selenium.py:1106: in _el
    if self.is_patternfly:
cfme/fixtures/pytest_selenium.py:1102: in is_patternfly
    return "selectpicker" in get_attribute(self._loc, "class")
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
    return f(*args, **kwargs)
cfme/fixtures/pytest_selenium.py:792: in get_attribute
    return element(loc).get_attribute(attr)
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
    return f(*args, **kwargs)
cfme/fixtures/pytest_selenium.py:262: in element
    matches = elements(o, **kwargs)
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
    return f(*args, **kwargs)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
    return best(*args, **kwds)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    @removed
    @singledispatch
    def elements(o, **kwargs):
        """
        Convert object o to list of matching WebElements. Can be extended by registering the type of o
        to this function.

        Args:
            o: An object to be converted to a matching web element, eg str, WebElement, tuple.

        Returns: A list of WebElement objects
        """
        check_visibility = kwargs.pop("check_visibility", True)
        if hasattr(o, "locate"):
            els = elements(o.locate(), **kwargs)
            if check_visibility:
                return [e for e in els if is_displayed(e)]
            else:
                return els
        elif callable(o):
            els = elements(o(), **kwargs)
            if check_visibility:
                return [e for e in els if is_displayed(e)]
            else:
                return els
        else:
            raise TypeError("Unprocessable type for elements({}) -> class {} (kwargs: {})".format(
>               str(repr(o)), o.__class__.__name__, str(repr(kwargs))
            ))
E           TypeError: Unprocessable type for elements(None) -> class NoneType (kwargs: {})
nachandr commented 7 years ago

Closing this issue since this doesn't occur anymore.