spotify / luigi

Luigi is a Python module that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, visualization etc. It also comes with Hadoop support built in.
Apache License 2.0
17.71k stars 2.39k forks source link

Facing test failures for test/servertest.py on PPC64LE #3263

Open vinodk99 opened 10 months ago

vinodk99 commented 10 months ago

Below are the test failures for test/server_test.py for py39-core:

`py39-core run-test: commands[1] | python test/runtests.py --doctest-modules -m 'not minicluster and not gcloud and not postgres and not unixsocket and not contrib and not apache and not aws and not azureblob and not dropbox' test/server_test.py ================================================================== test session starts ================================================================== platform linux -- Python 3.9.18, pytest-6.2.5, py-1.11.0, pluggy-1.3.0 -- /luigi/.tox/py39-core/bin/python cachedir: .tox/py39-core/.pytest_cache hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase(PosixPath('/luigi/.hypothesis/examples')) rootdir: /luigi, configfile: tox.ini plugins: hypothesis-6.89.0, cov-2.12.1 collected 59 items / 5 deselected / 54 selected

test/server_test.py::ServerTest::test_404 PASSED [ 1%] test/server_test.py::ServerTest::test_api_404 PASSED [ 3%] test/server_test.py::ServerTest::test_api_allow_head_on_root PASSED [ 5%] test/server_test.py::ServerTest::test_api_cors_headers PASSED [ 7%] test/server_test.py::ServerTest::test_api_cors_headers_disabled PASSED [ 9%] test/server_test.py::ServerTest::test_api_cors_headers_disallow_any PASSED [ 11%] test/server_test.py::ServerTest::test_api_cors_headers_disallow_any_no_allowed_origins PASSED [ 12%] test/server_test.py::ServerTest::test_api_cors_headers_disallow_any_no_matched_allowed_origins PASSED [ 14%] test/server_test.py::ServerTest::test_api_cors_headers_disallow_null PASSED [ 16%] test/server_test.py::ServerTest::test_api_cors_headers_no_origin_header PASSED [ 18%] test/server_test.py::ServerTest::test_api_cors_headers_null_origin PASSED [ 20%] test/server_test.py::ServerTest::test_api_preflight_cors_headers PASSED [ 22%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_all_response_headers PASSED [ 24%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_disabled PASSED [ 25%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_disallow_any PASSED [ 27%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_disallow_any_no_allowed_origins PASSED [ 29%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_disallow_any_no_matched_allowed_origins PASSED [ 31%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_disallow_null PASSED [ 33%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_no_origin_header PASSED [ 35%] test/server_test.py::ServerTest::test_api_preflight_cors_headers_null_origin PASSED [ 37%] test/server_test.py::ServerTest::test_root_redirect PASSED [ 38%] test/server_test.py::ServerTest::test_visualiser PASSED [ 40%] test/server_test.py::_ServerTest::test_404 FAILED [ 42%] test/server_test.py::_ServerTest::test_ping FAILED [ 44%] test/server_test.py::_ServerTest::test_raw_ping FAILED [ 46%] test/server_test.py::_ServerTest::test_raw_ping_extended FAILED [ 48%] test/server_test.py::_ServerTest::test_save_state FAILED [ 50%] test/server_test.py::INETProcessServerTest::test_404 ^[[BPASSED [ 51%] test/server_test.py::INETProcessServerTest::test_ping PASSED [ 53%] test/server_test.py::INETProcessServerTest::test_raw_ping PASSED [ 55%] test/server_test.py::INETProcessServerTest::test_raw_ping_extended PASSED [ 57%] test/server_test.py::INETProcessServerTest::test_save_state PASSED [ 59%] test/server_test.py::INETProcessServerTest::test_with_cmdline PASSED [ 61%] test/server_test.py::INETURLLibServerTest::test_404 PASSED [ 62%] test/server_test.py::INETURLLibServerTest::test_ping PASSED [ 64%] test/server_test.py::INETURLLibServerTest::test_raw_ping PASSED [ 66%] test/server_test.py::INETURLLibServerTest::test_raw_ping_extended PASSED [ 68%] test/server_test.py::INETURLLibServerTest::test_save_state PASSED [ 70%] test/server_test.py::INETURLLibServerTest::test_with_cmdline PASSED [ 72%] test/server_test.py::INETLuigidServerTest::test_404 PASSED [ 74%] test/server_test.py::INETLuigidServerTest::test_ping PASSED [ 75%] test/server_test.py::INETLuigidServerTest::test_raw_ping PASSED [ 77%] test/server_test.py::INETLuigidServerTest::test_raw_ping_extended PASSED [ 79%] test/server_test.py::INETLuigidServerTest::test_save_state PASSED [ 81%] test/server_test.py::INETLuigidServerTest::test_with_cmdline PASSED [ 83%] test/server_test.py::INETLuigidDaemonServerTest::test_404 PASSED [ 85%] test/server_test.py::INETLuigidDaemonServerTest::test_ping PASSED [ 87%] test/server_test.py::INETLuigidDaemonServerTest::test_raw_ping PASSED [ 88%] test/server_test.py::INETLuigidDaemonServerTest::test_raw_ping_extended PASSED [ 90%] test/server_test.py::INETLuigidDaemonServerTest::test_save_state PASSED [ 92%] test/server_test.py::INETLuigidDaemonServerTest::test_with_cmdline PASSED [ 94%] test/server_test.py::MetricsHandlerTest::test_get PASSED [ 96%] test/server_test.py::MetricsHandlerTest::test_get_no_metrics PASSED [ 98%] test/server_test.py::MetricsHandlerTest::test_initialize PASSED [100%]

======================================================================= FAILURES ======================================================================== _____ _ServerTest.test_404 __

self = <unittest.case._Outcome object at 0x7fff91fd7850>, test_case = , isTest = False

@contextlib.contextmanager
def testPartExecutor(self, test_case, isTest=False):
    old_success = self.success
    self.success = True
    try:
      yield

/usr/lib64/python3.9/unittest/case.py:59:


self = , result =

def run(self, result=None):
    if result is None:
        result = self.defaultTestResult()
        startTestRun = getattr(result, 'startTestRun', None)
        stopTestRun = getattr(result, 'stopTestRun', None)
        if startTestRun is not None:
            startTestRun()
    else:
        stopTestRun = None

    result.startTest(self)
    try:
        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                        or getattr(testMethod, '__unittest_skip_why__', ''))
            self._addSkip(result, self, skip_why)
            return result

        expecting_failure = (
            getattr(self, "__unittest_expecting_failure__", False) or
            getattr(testMethod, "__unittest_expecting_failure__", False)
        )
        outcome = _Outcome(result)
        try:
            self._outcome = outcome

            with outcome.testPartExecutor(self):
              self._callSetUp()

/usr/lib64/python3.9/unittest/case.py:588:


self =

def _callSetUp(self):
  self.setUp()

/usr/lib64/python3.9/unittest/case.py:547:


self =

def setUp(self):
  self.server_client = self.server_client_class()

E TypeError: 'str' object is not callable

test/servertest.py:318: TypeError ____ _ServerTest.testping ____

self = <unittest.case._Outcome object at 0x7fff91f1cfd0>, test_case = , isTest = False

@contextlib.contextmanager
def testPartExecutor(self, test_case, isTest=False):
    old_success = self.success
    self.success = True
    try:
      yield

/usr/lib64/python3.9/unittest/case.py:59:


self = , result =

def run(self, result=None):
    if result is None:
        result = self.defaultTestResult()
        startTestRun = getattr(result, 'startTestRun', None)
        stopTestRun = getattr(result, 'stopTestRun', None)
        if startTestRun is not None:
            startTestRun()
    else:
        stopTestRun = None

    result.startTest(self)
    try:
        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                        or getattr(testMethod, '__unittest_skip_why__', ''))
            self._addSkip(result, self, skip_why)
            return result

        expecting_failure = (
            getattr(self, "__unittest_expecting_failure__", False) or
            getattr(testMethod, "__unittest_expecting_failure__", False)
        )
        outcome = _Outcome(result)
        try:
            self._outcome = outcome

            with outcome.testPartExecutor(self):
              self._callSetUp()

/usr/lib64/python3.9/unittest/case.py:588:


self =

def _callSetUp(self):
  self.setUp()

/usr/lib64/python3.9/unittest/case.py:547:


self =

def setUp(self):
  self.server_client = self.server_client_class()

E TypeError: 'str' object is not callable

test/server_test.py:318: TypeError ___ _ServerTest.test_raw_ping ___

self = <unittest.case._Outcome object at 0x7fff916270d0>, test_case = , isTest = False

@contextlib.contextmanager
def testPartExecutor(self, test_case, isTest=False):
    old_success = self.success
    self.success = True
    try:
      yield

/usr/lib64/python3.9/unittest/case.py:59:


self = , result =

def run(self, result=None):
    if result is None:
        result = self.defaultTestResult()
        startTestRun = getattr(result, 'startTestRun', None)
        stopTestRun = getattr(result, 'stopTestRun', None)
        if startTestRun is not None:
            startTestRun()
    else:
        stopTestRun = None

    result.startTest(self)
    try:
        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                        or getattr(testMethod, '__unittest_skip_why__', ''))
            self._addSkip(result, self, skip_why)
            return result

        expecting_failure = (
            getattr(self, "__unittest_expecting_failure__", False) or
            getattr(testMethod, "__unittest_expecting_failure__", False)
        )
        outcome = _Outcome(result)
        try:
            self._outcome = outcome

            with outcome.testPartExecutor(self):
              self._callSetUp()

/usr/lib64/python3.9/unittest/case.py:588:


self =

def _callSetUp(self):
  self.setUp()

/usr/lib64/python3.9/unittest/case.py:547:


self =

def setUp(self):
  self.server_client = self.server_client_class()

E TypeError: 'str' object is not callable

test/server_test.py:318: TypeError __ _ServerTest.test_raw_ping_extended ___

self = <unittest.case._Outcome object at 0x7fff9164e4c0>, test_case = , isTest = False

@contextlib.contextmanager
def testPartExecutor(self, test_case, isTest=False):
    old_success = self.success
    self.success = True
    try:
      yield

/usr/lib64/python3.9/unittest/case.py:59:


self = , result =

def run(self, result=None):
    if result is None:
        result = self.defaultTestResult()
        startTestRun = getattr(result, 'startTestRun', None)
        stopTestRun = getattr(result, 'stopTestRun', None)
        if startTestRun is not None:
            startTestRun()
    else:
        stopTestRun = None

    result.startTest(self)
    try:
        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                        or getattr(testMethod, '__unittest_skip_why__', ''))
            self._addSkip(result, self, skip_why)
            return result

        expecting_failure = (
            getattr(self, "__unittest_expecting_failure__", False) or
            getattr(testMethod, "__unittest_expecting_failure__", False)
        )
        outcome = _Outcome(result)
        try:
            self._outcome = outcome

            with outcome.testPartExecutor(self):
              self._callSetUp()

/usr/lib64/python3.9/unittest/case.py:588:


self =

def _callSetUp(self):
  self.setUp()

/usr/lib64/python3.9/unittest/case.py:547:


self =

def setUp(self):
  self.server_client = self.server_client_class()

E TypeError: 'str' object is not callable

test/server_test.py:318: TypeError __ _ServerTest.test_save_state __

self = <unittest.case._Outcome object at 0x7fff916dbb20>, test_case = , isTest = False

@contextlib.contextmanager
def testPartExecutor(self, test_case, isTest=False):
    old_success = self.success
    self.success = True
    try:
      yield

/usr/lib64/python3.9/unittest/case.py:59:


self = , result =

def run(self, result=None):
    if result is None:
        result = self.defaultTestResult()
        startTestRun = getattr(result, 'startTestRun', None)
        stopTestRun = getattr(result, 'stopTestRun', None)
        if startTestRun is not None:
            startTestRun()
    else:
        stopTestRun = None

    result.startTest(self)
    try:
        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                        or getattr(testMethod, '__unittest_skip_why__', ''))
            self._addSkip(result, self, skip_why)
            return result

        expecting_failure = (
            getattr(self, "__unittest_expecting_failure__", False) or
            getattr(testMethod, "__unittest_expecting_failure__", False)
        )
        outcome = _Outcome(result)
        try:
            self._outcome = outcome

            with outcome.testPartExecutor(self):
              self._callSetUp()

/usr/lib64/python3.9/unittest/case.py:588:


self =

def _callSetUp(self):
  self.setUp()

/usr/lib64/python3.9/unittest/case.py:547:


self =

def setUp(self):
  self.server_client = self.server_client_class()

E TypeError: 'str' object is not callable

test/server_test.py:318: TypeError =================================================================== warnings summary ==================================================================== luigi/init.py:87 /luigi/luigi/init.py:87: DeprecationWarning: Autoloading range tasks by default has been deprecated and will be removed in a future version. To get the behavior now add an option to luigi.cfg:

        [core]
          autoload_range: false

      Alternately set the option to true to continue with existing behaviour and suppress this warning.

warnings.warn(warning_message, DeprecationWarning)

luigi/server.py:47 /luigi/luigi/server.py:47: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources

test/server_test.py::INETURLLibServerTest::test_with_cmdline /usr/lib64/python3.9/os.py:679: ResourceWarning: unclosed <socket.socket [closed] fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6> raise KeyError(key) from None

-- Docs: https://docs.pytest.org/en/stable/warnings.html

---------- coverage: platform linux, python 3.9.18-final-0 ----------- Name Stmts Miss Cover

luigi/main.py 3 3 0% luigi/meta.py 6 0 100% luigi/batch_notifier.py 137 101 26% luigi/cmdline.py 26 3 88% luigi/cmdline_parser.py 69 9 87% luigi/configuration/base_parser.py 16 1 94% luigi/configuration/cfg_parser.py 109 22 80% luigi/configuration/core.py 42 9 79% luigi/configuration/toml_parser.py 58 35 40% luigi/contrib/azureblob.py 144 144 0% luigi/contrib/batch.py 84 84 0% luigi/contrib/beam_dataflow.py 257 257 0% luigi/contrib/bigquery.py 351 351 0% luigi/contrib/bigquery_avro.py 55 55 0% luigi/contrib/datadog_metric.py 81 81 0% luigi/contrib/dataproc.py 124 124 0% luigi/contrib/docker_runner.py 121 121 0% luigi/contrib/dropbox.py 183 183 0% luigi/contrib/ecs.py 70 70 0% luigi/contrib/esindex.py 150 150 0% luigi/contrib/external_daily_snapshot.py 29 29 0% luigi/contrib/external_program.py 136 136 0% luigi/contrib/ftp.py 227 227 0% luigi/contrib/gcp.py 18 18 0% luigi/contrib/gcs.py 267 267 0% luigi/contrib/hadoop.py 585 585 0% luigi/contrib/hadoop_jar.py 77 77 0% luigi/contrib/hdfs/abstract_client.py 38 38 0% luigi/contrib/hdfs/clients.py 28 28 0% luigi/contrib/hdfs/config.py 42 42 0% luigi/contrib/hdfs/error.py 8 8 0% luigi/contrib/hdfs/format.py 116 116 0% luigi/contrib/hdfs/hadoopcli_clients.py 169 169 0% luigi/contrib/hdfs/target.py 97 97 0% luigi/contrib/hdfs/webhdfs_client.py 79 79 0% luigi/contrib/hive.py 282 282 0% luigi/contrib/kubernetes.py 175 175 0% luigi/contrib/lsf.py 158 158 0% luigi/contrib/lsf_runner.py 39 39 0% luigi/contrib/mongodb.py 64 64 0% luigi/contrib/mrrunner.py 42 42 0% luigi/contrib/mssqldb.py 48 48 0% luigi/contrib/mysqldb.py 99 99 0% luigi/contrib/opener.py 83 83 0% luigi/contrib/pai.py 148 148 0% luigi/contrib/pig.py 116 116 0% luigi/contrib/postgres.py 192 192 0% luigi/contrib/presto.py 160 160 0% luigi/contrib/prometheus_metric.py 28 28 0% luigi/contrib/pyspark_runner.py 66 66 0% luigi/contrib/rdbms.py 136 136 0% luigi/contrib/redis_store.py 30 30 0% luigi/contrib/redshift.py 291 291 0% luigi/contrib/s3.py 375 375 0% luigi/contrib/salesforce.py 335 335 0% luigi/contrib/scalding.py 155 155 0% luigi/contrib/sge.py 133 133 0% luigi/contrib/sge_runner.py 40 40 0% luigi/contrib/simulate.py 41 41 0% luigi/contrib/spark.py 239 239 0% luigi/contrib/sparkey.py 20 20 0% luigi/contrib/sqla.py 127 127 0% luigi/contrib/ssh.py 206 206 0% luigi/contrib/target.py 32 32 0% luigi/contrib/webhdfs.py 51 51 0% luigi/date_interval.py 142 84 41% luigi/db_task_history.py 143 143 0% luigi/event.py 13 0 100% luigi/execution_summary.py 271 127 53% luigi/format.py 314 199 37% luigi/freezing.py 38 19 50% luigi/interface.py 93 12 87% luigi/local_target.py 113 79 30% luigi/lock.py 78 67 14% luigi/metrics.py 62 27 56% luigi/mock.py 97 97 0% luigi/notifications.py 165 121 27% luigi/parameter.py 517 218 58% luigi/process.py 64 10 84% luigi/retcodes.py 39 25 36% luigi/rpc.py 116 13 89% luigi/scheduler.py 1071 471 56% luigi/server.py 205 50 76% luigi/setup_logging.py 98 37 62% luigi/target.py 100 45 55% luigi/task.py 379 150 60% luigi/task_history.py 33 9 73% luigi/task_register.py 122 35 71% luigi/task_status.py 9 0 100% luigi/tools/deps.py 58 58 0% luigi/tools/deps_tree.py 34 34 0% luigi/tools/luigi_grep.py 58 58 0% luigi/tools/range.py 331 219 34% luigi/util.py 113 113 0% luigi/worker.py 717 312 56%

TOTAL 13506 10462 23%

================================================================ short test summary info ================================================================ FAILED test/server_test.py::_ServerTest::test_404 - TypeError: 'str' object is not callable FAILED test/server_test.py::_ServerTest::test_ping - TypeError: 'str' object is not callable FAILED test/server_test.py::_ServerTest::test_raw_ping - TypeError: 'str' object is not callable FAILED test/server_test.py::_ServerTest::test_raw_ping_extended - TypeError: 'str' object is not callable FAILED test/server_test.py::_ServerTest::test_save_state - TypeError: 'str' object is not callable ========================================== 5 failed, 49 passed, 5 deselected, 3 warnings in 250.95s (0:04:10) =========================================== ERROR: InvocationError for command /luigi/.tox/py39-core/bin/python test/runtests.py --doctest-modules -m 'not minicluster and not gcloud and not postgres and not unixsocket and not contrib and not apache and not aws and not azureblob and not dropbox' test/server_test.py (exited with code 1) ____ summary ____`