Releases: avito-tech/Emcee
Bug Fix & Clean Up
-
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
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
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
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: