1. 24 2月, 2017 1 次提交
    • L
      Test: Turn test status into a property · 990a5edc
      Lukáš Doktor 提交于
      I'm not 100% sure, but I don't see a benefit in allowing people to
      override test status from inside test. They are suppose to use
      assertions, or `self.fail`-like methods. With this change it'd be harder
      to manually override the test status (as can be seen on updated
      unittests) but we minimize the accidental write into `self.status`
      variable, which can lead to confusing results.
      
      Note we can consider adding `set_status` method to allow setting this
      property, but I'd like to avoid allowing direct `self.status = ` usage.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      990a5edc
  2. 06 2月, 2017 1 次提交
  3. 03 2月, 2017 1 次提交
  4. 12 1月, 2017 1 次提交
  5. 24 11月, 2016 1 次提交
    • C
      Selftests: move resource/time sensitive tests to check-full · 9c18588f
      Cleber Rosa 提交于
      We've been seen failures on resource constrained environments on some
      tests that are either time sensitive and/or assume a some computing
      resources will be available.
      
      Environments such as TravisCI and RPM build servers may not have the
      resources these tests expect, so let's move them to runs of `make
      check-full`.  This will hopefully put an end to the false positives
      we've been getting on TravisCI.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      9c18588f
  6. 23 11月, 2016 1 次提交
  7. 07 11月, 2016 1 次提交
  8. 02 11月, 2016 1 次提交
  9. 30 10月, 2016 1 次提交
    • C
      Functional tests: prevent the persistence of temporary job results · f9cec025
      Cleber Rosa 提交于
      Some functional tests, most of which execute a full avocado command,
      were missing the `--job-results-dir`, pointing to a directory that
      would be removed after the tests.  This has led to the pollution of
      the standard job results directory (usually `~/avocado/job-results`)
      when selftests are run.
      
      This proposal fixes all but one set of functional tests, which has
      to be fixed with a different set of changes (see reference).
      
      Besides the functional tests, some unittests are also creating
      job results that should be discarded.  It's believed that at least
      some of this is caused by the relationship between tests and jobs,
      but this is speculation and it's not attepted to be fixed on this
      patch.
      
      Reference: https://trello.com/c/I2ieqhR5Signed-off-by: NCleber Rosa <crosa@redhat.com>
      f9cec025
  10. 28 10月, 2016 3 次提交
  11. 21 10月, 2016 1 次提交
  12. 10 10月, 2016 1 次提交
  13. 27 9月, 2016 2 次提交
    • C
      Plugins: add mechanism to disable plugins · 193a10ce
      Cleber Rosa 提交于
      While the behavior of having a plugin enabled once it's installed
      has suited Avocado reasonably well, there are valid use cases that
      require plugins to be disabled.
      
      While adding this mechanism, let's define what the Avocado fully
      qualified name for a given plugin is.
      
      While not an urgent feature, enabling and disabling plugins is
      actually one requirement for the implementation of the Job API.  While
      this change allows for disabling plugins globally, a refinement of the
      same logic will allow a given Job to enable/disable some of Avocado's
      functionality.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      193a10ce
    • C
      Functional selftests: conditionally skip based tests that need cc · 5b8e7675
      Cleber Rosa 提交于
      When no C compiler is available, these tests will produce errors.
      Let's skip them when the requirements cannot be met.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      5b8e7675
  14. 21 9月, 2016 1 次提交
  15. 03 8月, 2016 1 次提交
  16. 21 7月, 2016 1 次提交
  17. 08 7月, 2016 1 次提交
  18. 02 6月, 2016 2 次提交
    • L
      avocado.core.runner: Unify the runner error handling · 98d82f0f
      Lukáš Doktor 提交于
      There are two places, where runner can modify the test's status, each
      handling it differently. Let's create a method to handle such occasions
      in the same manner.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      98d82f0f
    • L
      avocado: Avoid left-over processes when test reports status · d86e5912
      Lukáš Doktor 提交于
      Currently when the test reports status avocado does not check whether
      the process finished, leaving open space for left-over test processes.
      This patch unifies the test process handling in case the test reported
      test status and allows the runner to destroy and report error in case
      the test process did not finish.
      
      Additionally it modifies the error message in case the test was
      interrupted, because the original message is IMO not clear enough (I
      spent quite a time analyzing how that happened and if that's an avocado
      bug or supported result).
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      d86e5912
  19. 10 5月, 2016 1 次提交
  20. 06 5月, 2016 1 次提交
    • L
      avocado: Avoid custom handling of SIGINT and SIGUSR · d37c23fa
      Lukáš Doktor 提交于
      Currently avocado adds custom handlers of SIGINT and SIGUSR1 in order to
      produce traceback and notify about user interaction or timeout. This
      could be missleading in case the test uses those signals and potentially
      dangerous as some tests assume default behavior.
      
      This patch removes the custom handling of SIGINT and SIGUSR1 and
      reports the failure in `job.log`. Additionally it tries to inject the
      error message in the test output, if status.logfile available.
      
      In order to keep the useful traceback in case of interruption, this
      patch overrides the default SIGTERM handler. The default behavior of
      SIGTERM is to die, our custom handler raises SystemExit with info saying
      the test was interrupted by sigterm, which should generate traceback and
      finish. The runner then changes the result to INTERRUPTED, so even
      when the test modifies the SIGTERM handler, we get the correct status.
      
      Worth mentioning that in case test ignores SIGTERM, SIGKILL is emitted
      by the runner, so this should be safe approach.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      d37c23fa
  21. 03 5月, 2016 1 次提交
    • L
      avocado.core.loader: Fix the test alias resolver · 3ff48800
      Lukáš Doktor 提交于
      This patch fixes and improves resolving of the test aliases (paths
      relative to `data_dir.get_tests_dir`).
      
      1. It removes the magic `.py` suffix, which prevented non-python files
         from being resolved (simple.sh was resolved to $tests/simple.sh.py)
      2. It adds the feature to filter the class/method from the test
         reference by parsing $test_reference:$class.$method for implicit
         resolver. (previously this worked only for absolute path resolver)
      
      Visible changes are:
      
      * `avocado run passtest` => fails (used to work)
      * `avocado run passtest.py` => works (did not work)
      * `avocado run env_variables.sh` => works (did not work)
      * `avocado run passtest.py:PassTest.test` => works (did not work)
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      3ff48800
  22. 27 4月, 2016 1 次提交
    • C
      Avocado: Release 35.0 · 523c0e41
      Cleber Rosa 提交于
      This release introduces a new versioning scheme, so the "big bump"
      from 0.34.0 to 35.0 is not such a big bump.
      
      Some additional changes with regards to versioning were added, such as
      the way the remote runner checks for Avocado on the remote host.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      523c0e41
  23. 26 4月, 2016 1 次提交
    • L
      avocado: Implement serialized test ids · 5973e898
      Lukáš Doktor 提交于
      This commit implements the serialized test ids described in the
      Introduce proper test IDs RFC.
      
      https://www.redhat.com/archives/avocado-devel/2016-March/msg00024.html
      
      It implements `TestName` class, which contains the test uid, test name
      and the variant uid and allows querying for the file-system-friendly
      name.
      
      The workflow is:
      
      1. tests are discovered, name is translated to "Test Name" by loader
      2. test_suite is passed to the runner (new) along with the number of
         tests+variants to be executed (used to get number of digits)
      3. the Mux (params generator) yields the template + (new) variant id
      4. the runner replaces template['name'] to TestName(uid, test_name,
         variant_id); where uid is currently no executed tests, test_name is
         the original name from Loader and variant_id is either None or the
         variant index.
      
      This commit makes the `tag` argument unused. To avoid problems a warning
      is issued on it's usage so we can remove it in the upcoming releases.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      5973e898
  24. 13 4月, 2016 2 次提交
  25. 11 4月, 2016 1 次提交
    • L
      avocado.core.test: Avoid None status on early exception · af10c0df
      Lukáš Doktor 提交于
      When avocado fails early in the process (for example in
      _setup_environment_variables) it crashes, because the test status is
      None. Other example could be user-defined status, which is not inside
      user-facing-statuses.
      
      This patch modifies the "status" to "ERROR" when test reports
      unsupported status and sets related values to provide details regarding
      this failure.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      af10c0df
  26. 07 4月, 2016 1 次提交
    • A
      avocado.code.job fix job return code on timed out jobs · 41177f0a
      Amador Pahim 提交于
      When a job is timed out during a test execution, we fail the test
      and put status ERROR in the test. The job then exits with the rc
      AVOCADO_TESTS_FAIL. This patch fixes this, making the test status
      INTERRUPTED and the job to exit with AVOCADO_JOB_INTERRUPTED.
      
      Also, when a job is timed out before a test, the test is skipped
      and the job exits with rc AVOCADO_ALL_OK. For that case, this patch
      makes the job to exit with AVOCADO_JOB_INTERRUPTED instead, keeping
      the test status as SKIP.
      
      Given this change, now we have the following combinations of test status
      and job return code:
      
      Case1:
          - Test1: PASS
          - Test2: SKIP (TestTimeoutSkip)
      
          Job RC: AVOCADO_JOB_INTERRUPTED
      
      Case2:
          - Test1: PASS
          - Test2: INTERRUPTED (TestTimeoutInterrupted)
          - Test3: SKIP (TestTimeoutSkip)
      
          Job RC: AVOCADO_JOB_INTERRUPTED
      
      Case3:
          - Test1: PASS
          - Test2: FAIL
          - Test3: INTERRUPTED (TestTimeoutInterrupted)
          - Test4: SKIP (TestTimeoutSkip)
      
          Job RC: AVOCADO_JOB_INTERRUPTED
      Signed-off-by: NAmador Pahim <apahim@redhat.com>
      41177f0a
  27. 30 3月, 2016 1 次提交
  28. 18 3月, 2016 1 次提交
    • C
      External Runner: deal with empty test URL · 139e717b
      Cleber Rosa 提交于
      A test base on the external runner feature depends on both the
      external runner and the test URL. These two are always combined to
      generate the complete command that will be executed by Avocado.
      
      But, the Avocado command line application does not require URLs to be
      given on the command line, because these may come from other sources
      on loaders other than the basic FileLoader.
      
      So, let's also explicitly require a URL to be given to to the External
      Runner loader to return a test factory (class and parameters).
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      139e717b
  29. 16 3月, 2016 1 次提交
    • L
      avocado.core: Log all messages to sys.stdout except of errors · f5acea12
      Lukáš Doktor 提交于
      While working on the avocado logging system we thought it'd be
      consistent and better to log certain streams to sys.stderr rather than
      sys.stdout. It turned out to be a bit confusing and unexpected, so after
      a discussion this commit adjusts the streams to:
      
       * avocado.app - loglevel <= info goes to stdout
                     - loglevel > info goes to stderr
       * other streams - go always into stdout
       * sys.stdout - goes to sys.stdout when enabled
       * sys.stderr - goes to sys.stderr when enabled
                    - goes to sys.stdout when enabled as test output
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      f5acea12
  30. 10 3月, 2016 1 次提交
    • C
      selftests/functional/test_basic.py: extend timeout on test_kill_stopped_sleep · 27029ff4
      Cleber Rosa 提交于
      Given the last CI jobs, RunnerSimpleTest:test_kill_stopped_sleep() has
      been failing often. The obvious reason, given the nature of the test
      and the heavily shared and loaded computing resources they run on, is
      the lack of resources.
      
      One example of such as failure:
      
         ======================================================================
         FAIL: test_kill_stopped_sleep (selftests.functional.test_basic.RunnerSimpleTest)
         ----------------------------------------------------------------------
         Traceback (most recent call last):
           File "/home/travis/build/avocado-framework/avocado/selftests/functional/test_basic.py", line 549, in test_kill_stopped_sleep
             % proc.get_output())
         AssertionError: Avocado process still alive 1s after job-timeout:
         JOB ID     : 5c65a06b4ab15e69d6c4a1fc762368e0e99cbc1f
         JOB LOG    : /tmp/avocado_selftests.functional.test_basicHIyhV4/job-2016-03-09T15.08-5c65a06/job.log
         TESTS      : 1
          (1/1) /bin/sleep 60:
         ctrl+z pressed, stopping test (5046)
         ERROR
      
      So, let's give 4 extra seconds for the process to be
      terminated. Hopefully failures in the timeout handling will still be
      revealed given the relatively small buffer.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      27029ff4
  31. 04 3月, 2016 1 次提交
    • C
      avocado/core/data_dir.py: make data_dir settings dynamic · be47dcc4
      Cleber Rosa 提交于
      The configurations related to the "data_dir" are currently read at
      module load time. This means that changes in the configuration between
      module load time and changes to the settings (such as parsing an
      additional config file) is never seen.
      
      Since the avocado command line application parses extra configuration
      files (given with `--config`) after the module is loaded, these extra
      configuration files are never applied to the data_dir configuration.
      
      There's one more issue with regards to the the settings usage: because
      once references to the `settings` instance singleton are grabbed, they
      will always point to the same settings objects. The data_dir unittests
      exercise changes to the settings objects by replacing that
      instance. So, let's refer to the settings using the full location
      (module.attribute), which will always give back the "current" (be it
      original or replaced) settings instance.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      be47dcc4
  32. 03 3月, 2016 2 次提交
  33. 24 2月, 2016 2 次提交
    • C
      raise/except statements: mass style change · 2b2f6fca
      Cleber Rosa 提交于
      This commit changes the idiom on (hopefully all) except statements,
      from:
         except foo, details:
      
      to:
         except foo as details:
      
      Which is compatible with both Python 2 and 3.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      2b2f6fca
    • L
      avocado: Change logging initialization · 83a50b5f
      Lukáš Doktor 提交于
      This patch changes the way logging is initialized in avocado app:
      
      1. stdout/stderr/logging is replaced with in-memory handlers
      2. when arg parsing is done, logging is reconfigured accordingly to
         setting and re-logs stored messages (when streams are enabled)
      3. when job starts and "test" stream is enabled, "" and "avocado.test"
         streams are enabled
      4. when job finishes and "test" stream enabled the additional outputs,
         the additional outputs are disabled again.
      
      The 3 and 4 is necessarily as the "" logger contains all logs including
      avocado initialization (stevedore, PIL, ...). This way the "test" stream
      still outputs everything, but only during the job-execution and not
      during avocado initialization and cleanup. (one can use "early" log to
      see those).
      
      Last but not least it keeps "avocado.app" output in stdout (and stderr),
      but it moves all other outputs to stderr instead. This is IMO better
      handling as one can distinguish between debug and "additional" output.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      83a50b5f