Get Started
Wire ReṼoman into your JVM project, then run your first API-Graph against a deterministic local
real-wire handler using ReṼoman’s public MockHttpServer.
Artifact
Maven
<dependency>
<groupId>com.salesforce.revoman</groupId>
<artifactId>revoman</artifactId>
<version>0.90.0</version>
</dependency>
Bazel
"com.salesforce.revoman:revoman"
Gradle Kts
implementation("com.salesforce.revoman:revoman:0.90.0")
Minimum Java Version required = 25 (0.90.x is the last line that runs on JDK 21)
A Simple Example
Here is a simple exported Postman collection and Environment JSON file for a deterministic local
real-wire handler. You can import the same metadata and manually test it through the Run
collection button:
You can automate the same with ReṼoman by supplying the metadata and environment paths. ReṼoman
ships MockHttpServer; DeterministicMockApi is this repository’s application-specific example
handler. The example below explicitly owns the handler and server, injects the server URL, and then
executes the API metadata (serialized in the Postman V2 schema) directly on the JVM:
import com.salesforce.revoman.integration.testsupport.DeterministicMockApi;
import com.salesforce.revoman.testing.http.MockHttpServer;
@Test
@DisplayName("restful-api.dev")
void restfulApiDev() {
final var api = new DeterministicMockApi();
try (final var server = MockHttpServer.start(api)) {
final var rundown =
ReVoman.revUp( (1)
Kick.configure()
.templatePath(PM_COLLECTION_PATH) (2)
.environmentPath(PM_ENVIRONMENT_PATH) (3)
.dynamicEnvironment("baseUrl", server.getBaseUrl())
.nodeModulesPath("js")
.off());
assertThat(rundown.firstUnsuccessfulStepReport()).isNull(); (4)
assertThat(rundown.stepReports).hasSize(4); (5)
assertThat(
rundown.stepReports.stream()
.map(report -> report.requestInfo.get().httpMsg.getUri().toString())
.toList())
.containsExactly(
server.getBaseUrl() + "/objects",
server.getBaseUrl() + "/objects",
server.getBaseUrl() + "/objects/local-object-1",
server.getBaseUrl() + "/objects/local-object-1")
.inOrder();
assertThat(
server.requests().stream()
.map(request -> request.getMethod() + " " + request.getPath())
.toList())
.containsExactly(
"GET /objects",
"POST /objects",
"PATCH /objects/local-object-1",
"GET /objects/local-object-1")
.inOrder();
}
}
| 1 | revUp is the method to call passing a configuration, built as below |
| 2 | Supply an exported Postman collection JSON file path |
| 3 | Supply an exported Postman environment JSON file path |
| 4 | Assert that the execution doesn’t have any failures |
| 5 | Run more assertions on the Rundown |
MockHttpServer is a test-only listener bound to an ephemeral IPv4 127.0.0.1 address. It records
request bodies in memory so you can inspect what ReVoman sent without calling a real HTTP service.
Handlers may run concurrently, so mutable handler state must be thread-safe.
Next, see Configuration for how you build that configuration through
Kick.configure(), and Rundown for the structured result the engine hands back.