- Notifications
You must be signed in to change notification settings - Fork45
CI in UTBot Java
UTBot Java offers contributors bunch of workflows e.g., the workflowbuilding the project and running tests, the workflowarchiving plugin and CLI.
The main CI features in UTBot Java:
- reproducible environment
- available monitoring processes
Depending on the resources where you are intended to build and test software environment will be different. The key goal is to provide the same environment on different resources. To do that we use Docker images with appropriate software, environment variables and OS settings.
Crucial CI workflows run in those docker containers thus you can reproduce the environment locally. The environment can be used for running tests or for debugging (see detailed information).
If you have any questions of where images are placed, how many they are, what software versions are used, visitrepository please (now is private, will be changed in the future), leave an issue with your questions or ask in DM.
Since the workflow has started you can check access to the metrics on our monitoring service (ask teammates for url). The server offers developers the following dashboards:
- Node Exporter Full - metrics of consuming the RAM, CPU, Network and other resources on the host
- JVM dashboard (don't forget to set job to
pushgateway) - Java metrics - Test executor statistics* - RAM consuming by Java processes
- cAdvisor: container details* - system resources consuming by certain container
- cAdvisor: host summary* - summarized system resources consuming by all containers
Note: * developed by UTBot team
When you open a dashboard you need to choose valid instance. GitHub runseach job on separate runner so instance ID (HOSTNAME env var) would be different. But all instances havethe same Run ID (GITHUB_RUN_ID env var). Follow this steps:
- Go to Actions and open your Run;
- Expand job list and choose any job you need;
- At the right you'll see a list of steps. You need step
Run monitoring; - Find the string like:
Find your Prometheus metrics using label {instance="2911909439-7f83f93ff335"}- Copy value between double quotes and go to monitoring dashboard. Set
githubservice and expand instance list, CTRL+F and paste copied value. Choose your instance

Note: label consists of two part -${GITHUB_RUN_ID}-${HOSTNAME}. Use only one part to find all jobs of your Run.
| Workflow name | What it's supposed to do | What it triggers on |
|---|---|---|
| UTBot Java: build and run tests | Builds the project and runs tests for it | push orpull request to themain branch |
| [M] UTBot Java: build and run tests | Builds the project and runs tests for it | manual call or call fromanother workflow |
| [M] Run chosen tests | Runs a single test or tests in chosen package/class | manual call |
| Plugin and CLI: publish as archives | Archives plugin and CLI and stores them attached to the workflow run report | push to themain branch |
| [M] Plugin and CLI: publish as archives | Archives plugin and CLI and stores them attached to the workflow run report | manual call or call fromanother workflow |
| [M] Publish on GitHub Packages | Publishes artifacts such asutbot-api,utbot-core,utbot-framework, etc., on GitHub Packages | manual call |
- Check system requirements
- Install or update plugin
- Generate tests with default configuration
- Fine-tune test generation
- Get use of test results
(redirect to/docs inmain repo)
- Contributing guide
- Developer guide
- Naming and labeling conventions
- Interprocess debugging
- Interprocess logging
- UnitTestBot overall architecture
- Android Studio support
- Assumption mechanism
- Choosing language-specific IDE
- Code generation and rendering
- Fuzzing Platform (FP) Design
- Instrumented process API: handling errors and results
- UnitTestBot JavaScript plugin setup
- Night statistics monitoring
- RD for UnitTestBot
- Sandboxing
- UnitTestBot settings
- Speculative field non-nullability assumptions
- Symbolic analysis of static initializers
- Summarization module
- Taint analysis
- UnitTestBot decomposition
- UtUtils class
- UnitTestBot Family changes