Skip to content

Mercenary: Distributed Automation Framework Documentation

License

Notifications You must be signed in to change notification settings

aaquresh/mercenary-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

#Mercenary# An Open Source Distributed Task Orchestration Framework

While its intended use case is for managing and reporting on the execution of vendor-agnostic automated testing, its extensible framework means it is not limited to just software testing applications.

As the framework is open source, servers and targets can be implemented in any language on any platform, as long a they can be send and receive HTTP.

Server starts up and listens for two kinds of requests

##The Target## ###Overview### Target has specific capabilities via plugins Target has a specific environment

A target receives a request to perform a task detailed in JSON. If it is not currently engaged in performing a task, and has the environment and capabilities specified in the request, then it passes the request on to the appropriate plugin to execute the task. The plugin that performs the task has the option to manipulate and/or append to the JSON payload. Once complete, the payload is returned.

If there is no server (is this an option? I think it should be) where does the data go?

###Target Configuration### { "registration-url" : "192.168.0.1:7001", "listen-on-host" : "localhost", "listen-on-port" : "7050",

	"environment": {...},

	"capabilities": {...}
}

##The Server## Running a target locally without a server is a good way to test and debug, but in a production system, you will likely want to employ a server, as without it you no longer have "distributed" or "orchestration".

When the server starts, it begins listening on the configured port. Are servers are optional? Server listens for two different kinds of requests

###Server Configuration### { "listening-on" : "localhost:8080", "listen-on-host" : "localhost", "listen-on-port" : "8080" }

##Request Interface## { "target-url" : "localhost:8080",

	"environment":
	{
		"os" : "Windows",
		"video-card" : "NVidia",
		"x-important-environment" : "y-whatever-value"
	},

	"capabilities":
	[
		"plugin-name",
		"other-plugin"
	]
}

Notice how this looks very similar to the target configuration file? A few unnecessary key-value pairs are removed, and the capabilities configuration section is flattened out to an array, as the names are the only relevant information to the server.

###Task Execution Request###

##Server and Target Administration## Via the url, see status and task history Turn off a server or a target Turn off a target, have it notify the server

About

Mercenary: Distributed Automation Framework Documentation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published