Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
com.malinskiy.marathon:execution-timeline
Advanced tools
Marathon is a project that helps execute tests in the shortest time possible. Specifically it helps with stability of test execution adjusting for flakiness in the environment and in the tests and also achieves best performance using high parallelization
Marathon is a fast, platform-independent test runner focused on performance and stability. It offers easy to use platform implementations for Android and iOS as well as an API for use with custom hardware farms and more techstacks.
Marathon implements multiple key concepts of test execution such as test batching, device pools, test sharding, test sorting, preventive retries as well as post-factum retries. By default, most of these are set to conservative defaults but custom configurations are encouraged for those who want to optimize performance and/or stability.
Marathon's primary focus is on full control over the balance between stability of test execution, testing performance and cost.
For more information see the documentation
Marathon takes into account two key aspects of test execution:
Test run can only finish as quickly as possible if we plan the execution of tests with regard to the expected duration of the test. On the other hand, we need to address the flakiness of the environment and of the test itself. One key indicator of flakiness is the probability of the test passing.
Marathon takes a number of steps to ensure that each test run is as balanced as possible:
Create a basic Marathonfile in the root of your project with the following content:
Android:
name: "My application"
outputDir: "build/reports/marathon"
vendorConfiguration:
type: "Android"
applicationApk: "dist/app-debug.apk"
testApplicationApk: "dist/app-debug-androidTest.apk"
iOS:
name: "My application"
outputDir: "derived-data/Marathon"
vendorConfiguration:
type: "iOS"
bundle:
application: "sample.app"
testApplication: "sampleUITests.xctest"
testType: xcuitest
Vendor section describes platform specific details.
Since iOS doesn't have any way to discover remote execution devices you have to provide your simulators using the Marathondevices file:
workers:
- transport:
type: local
devices:
- type: simulator
udid: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
- type: simulatorProfile
deviceType: com.apple.CoreSimulator.SimDeviceType.iPhone-13-mini
This Marathondevices file specifies a list of macOS instances and simulators for use. Marathon can use pre-provisioned simulators, but it can also provision new ones if needed.
Example above uses the local instance where marathon is executed, but you can connect many more instance via SSH.
ℹ️ The instance where you run marathon is not limited to macOS: if you're using remote macOS instances then you can easily start your marathon run from Linux for example.
You can find more information on providing devices in the workers documentation
The file structure for testing should look something like this:
Android:
foo@bar $ tree .
.
├── Marathonfile
├── dist
│ ├── app-debug.apk
│ ├── app-debug-androidTest.apk
iOS:
foo@bar $ tree .
.
├── Marathondevices
├── Marathonfile
├── build
│ ├── my.app
│ ├── my.xctest
Start the test runner in the root of your project
$ marathon
XXX [main] INFO com.malinskiy.marathon.cli.ApplicationView - Starting marathon
XXX [main] INFO com.malinskiy.marathon.cli.config.ConfigFactory - Checking Marathonfile config
...
Marathon requires Java Runtime Environment 8 or higher.
Marathon codebase is GPL 2.0 LICENSE with following optional components under specific licenses:
FAQs
Cross-platform test runner
We found that com.malinskiy.marathon:execution-timeline demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.