Mangle Developers' Guide
Sub Modules
Mangle is a spring-boot application with implementation of web services to invoke Fault injection on Supported Endpoints.
The mangle Code is organised is as below sub modules using Maven build tool.
mangle-byteman-root:
Module for the Mangle java Agent, which is used to support application level fault injection against apps running on JVM.
mangle-models:
Module for the complete data model of Mangle Web Application.
mangle–utils:
Module for all the core logic shared across Mangle Application.
mangle-task-framework:
Module for command execution orchestration in Mangle. Every fault execution or request processing in Mangle is handled as an asynchronous task. This module also contains the code responsible for managing scheduler functionality of Mangle.
mangle-test-plugin:
Module for the test utilities required for testing the mangle–task-framework.
mangle-default-plugin:
Module for all the out of the box faults supported by Mangle as a plugin. This is developed using the pf4j-spring framework. Mangle can support fault execution only if this module is available as plugin.
mangle-ui
Module for the presentation layer of mangle.
mangle –services
Module for core web services exposed to user, corresponding persistence layer and business logic.
mangle-vcenter-adapter:
Module for the spring-boot application that has to be deployed as a container or hosted as an application reachable by Mangle for executing faults against VMware vCenter Server.
The order of execution of sub modules is:
Build Profiles
Different build profiles available in Mangle pom are:
default
This profile builds mangle with last known good configuration of mangle-byteman-agent and does not take latest changes to mangle-byteman-root module into consideration.
To build:
build-all
This profile builds mangle with latest changes of mangle-byteman-agent and is recommended for use if the Mangle java agent jar has to be updated.
To build using this profile:
byteman
This profile builds only the mangle-byteman-root module with the latest changes.
To build using profile byteman
vcenter-adapter
This profile builds only mangle-vcenter-adapter with the latest changes.
Building the code
Prerequisites
Java
Java 8 JDK installed on your OS of choice (Mac OSX, Linux variants, Windows are all supported hosts)
Eclipse Luna or a modern IDE of your choice. Make sure to apply the same formatting profile for code.
Git for source code management.
Maven
Maven is used to build and test the project. Install maven 3.5.X to your local system.
(Optional) Install Maven with your system's package manager (e.g. apt on Ubuntu/Debian, homebrew on OSX, ...).
Set your
JAVA_HOME
environment variable to be the home of the Java 8 JDK. On OSX, this lands in/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/
.Run
mvn clean install
to compile the code, run checkstyle and run unit tests.
Packaging a fat jar
Resulting JAR goes to mangle-services/target/mangle-services.jar
.
./mvnw clean package -DskipTests
(packages without running tests)
Please refer to Mangle Administrator Guide for starting the jar by providing the Supported DB_OPTIONS and supported CLUSTER_OPTIONS as inputs to jar execution command.
Code Style
License
Each source file has to specify the license at the very top of the file:
Line length
Set to 100
Import statements
The order of import statements is:
import static
java.*
import static
javax.*
blank line
import static all other imports
blank line
import static
com.vmware.*
blank line
import
java.*
import
javax.*
blank line
import all other imports
blank line
import
com.vmware.*
Comments are always placed at independent line. Do not append the comment at the end of the line.
Wrong
Correct
Commit message
Follow the widely used format:
Sample:
50 char in title
Wrap the body at 72 char or less
Checkstyle
Checkstyle runs as part of maven validate
lifecycle.
You can call it manually like ./mvnw validate
or ./mvnw checkstyle:checkstyle
.
checkstyle file: checkstyle.xml
IDE Settings
Formatter
For both Eclipse and IntellJ, import contrib/eclipse-java-style.xml
IntelliJ
IntelliJ can import eclipse formatter file.
Preference
- Editor
- Code Style
- Manage
- Import
Import contrib/eclipse-java-style.xml
.
IntelliJ Specific
Setting java package import order
Update
.idea/codeStyleSettings.xml
with contrib/idea-java-style.xmlRestart IntelliJ
Building Mangle Docker Images
Prerequisites
Install docker on the developer machine following docker installation manual. Change the working directory to the root of mangle code repository.
To build a docker image for Mangle
To build a docker image for Mangle vCenter Adapter
Dernière mise à jour