Skip to content

Releases: avito-tech/Emcee

Bug Fix & Clean Up

27 Mar 18:37
Compare
Choose a tag to compare
  • Removed some models from Swift codebase

  • Fixed a bug: queue has been starting workers twice, once for each deployed file. Now queue starts workers only once, when all files has been deployed to the worker machines. [commit]

  • Emcee now expects a --version argument to be passed. This is rather a controversial way of versioning Emcee binary. If you update Emcee, you should update the value of this argument as well. [commit]

  • Emcee does not create new simulators when you update fbxctest. [commit]

  • Fixed a bug that would sometimes result to a corrupted cache state. When unzipping the downloaded artifacts, Emcee now will use temporary folder, and then move extracted data to a final location. [commit]

  • SimulatorVideoRecorder class has been updated to work with Xcode 11. [commit]

  • Emcee now passes TMPDIR environment to simulator control tool (e.g. fbsimctl) [commit]

Runtime Dump Cache, Simulator Timeout & Automatic Shutdown Configuration

21 Feb 10:36
Compare
Choose a tag to compare

Runtime Dump Cache

Emcee can now store results of runtime dump in a shared writable cache and re-use them to speed up runtime dumps on the same input. There are some requirements for this to work correctly:

  • You must pass an additional config to support shared cache via --remote-cache-config arg. You can read more about its contents here.

  • URL is used as a key to runtime dump cache entries. Thus, if you change the contents of xctest bundle behind some URL and attempt to dump it again, Emcee will re-use cached entry if it is available. This may lead to wrong or unexpected runtime dump results.

  • Runtime dump should output exactly the same results regardless of execution environment or kind. iOS runtime, runtime dump kind, time of the day, or any environment variable values should not affect the result of runtime dump.

Simulator Timeout Configuration & Automatic Shutdown

Test arg file now expects to have simulatorOperationTimeouts object provided. This object allows you to control timeouts for various simulator operations like creating, booting, shutting down and deleting, as well as automatic shutdown. The latter allows you to specify the time after which idle simulators will be shutdown.

Shutdown simulators allow them to be booted faster than booting a newly created simulator, but reduces RAM, swap, and max_proc/max_files system resources utilization. This is useful for CI where you might be running tests on various iOS versions. Updating Emcee is also safer now because the amount of running simulators now decrease when simulators are idle.

Models Target has been Refactored

Models target previously contained a lot of models used by the Emcee. Now most of them moved to corresponding modules, like SimulatorPoolModels, RunnerModels, TestArgFile, and so on. Emcee exposes all model targets as EmceeInterfaces product for convenience.

Stability Increase

Emcee workers are much stable and do not crash when fetching contents of URLs (fix FYI)

simctl, Plugins Lifecycle

21 Feb 09:33
Compare
Choose a tag to compare

simctl

Emcee now correctly uses xcrun simctl to control simulators, making it unnecessary to provide a location of fbsimctl tool.

To use xcrun simctl, pass the following values via test arg file:

    "toolResources": {
        "simulatorControlTool": {
            "toolType": "simctl"
        },
    }

To switch between Xcode versions, provide developerDir value using toolchainConfiguration field in test arg file.

You can still use fbsimctl if you prefer it more. fbxctest tool is still required to run tests, support for xcrun xcoebuild is still in WIP status.

Plugins

Implemented plugin lifecycle. Previously, Emcee would start plugins on both server and workers, and you defined plugins as part of queue server run configuration. Now this has changed:

  • You define plugins for a job using test arg file. This allows you to update plugins easily.
  • Plugins are started before executing tests, and terminated afterwards.
  • Plugins are expected to start within 30 seconds. Previously the timeout was 170 seconds (for unknown reason)

Bug fix

Fixed a nasty bug. Sometimes, when workers fetch a bucket for execution and then fail to execute it, they won't return it back to the queue. This would look like some worker took a bucket and keep executing it infinitely.

Now, if failure happens during bucket execution, worker will report back a test failure with a description of what happened.

Feature

Junit reports now have hostname and timestamp fields set for tests.

1.1.0

09 Jan 12:22
Compare
Choose a tag to compare

Simulator settings are now passed as data structures via test arg file instead of URLs to some JSON file with not very obvious contents.

These are the new models: