Add additional logs on server and additional info in list mock operation
This commit is contained in:
parent
bc3c3d1dc0
commit
332383ff15
6 changed files with 47 additions and 18 deletions
|
@ -17,23 +17,28 @@ class ContextExecutor {
|
|||
this.httpServerWraper = httpServerWraper
|
||||
this.path = '/' + initialMock.path
|
||||
this.mocks = new CopyOnWriteArrayList<>([initialMock])
|
||||
httpServerWraper.createContext(path, {
|
||||
httpServerWraper.createContext(path) {
|
||||
HttpExchange ex ->
|
||||
MockRequest request = new MockRequest(ex.requestBody.text, ex.requestHeaders, ex.requestURI)
|
||||
log.info("Mock received input")
|
||||
log.debug("Request: ${request.text}")
|
||||
for (Mock mock : mocks) {
|
||||
try {
|
||||
if (mock.match(ex.requestMethod, request)) {
|
||||
log.debug("Mock ${mock.name} match request ${request.text}")
|
||||
MockResponse httpResponse = mock.apply(request)
|
||||
fillExchange(ex, httpResponse)
|
||||
log.trace("Mock ${mock.name} response with body ${httpResponse.text}")
|
||||
return
|
||||
}
|
||||
log.debug("Mock ${mock.name} does not match request")
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace()
|
||||
log.warn("An exception occured when matching or applying mock ${mock.name}", e)
|
||||
}
|
||||
}
|
||||
log.warn("Any mock does not match request ${request.text}")
|
||||
Util.createResponse(ex, request.text, 404)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
String getPath() {
|
||||
|
|
|
@ -55,6 +55,9 @@ class HttpMockServer {
|
|||
name mock.name
|
||||
path mock.path
|
||||
port mock.port
|
||||
predicate mock.predicateClosureText
|
||||
response mock.responseClosureText
|
||||
responseHeaders mock.responseHeadersClosureText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -116,7 +119,7 @@ class HttpMockServer {
|
|||
if (!(name in mockNames)) {
|
||||
throw new RuntimeException('mock not registered')
|
||||
}
|
||||
log.info("Peeking mock $name")
|
||||
log.trace("Peeking mock $name")
|
||||
List<MockEvent> mockEvents = childServers.collect { it.peekMock(name) }.flatten()
|
||||
createResponse(ex, createMockPeekedResponse(mockEvents), 200)
|
||||
}
|
||||
|
|
|
@ -13,9 +13,12 @@ class Mock implements Comparable<Mock> {
|
|||
final String name
|
||||
final String path
|
||||
final int port
|
||||
Closure predicate = { _ -> true }
|
||||
Closure response = { _ -> '' }
|
||||
Closure responseHeaders = { _ -> [:] }
|
||||
String predicateClosureText = '{ _ -> true }'
|
||||
String responseClosureText = '''{ _ -> '' }'''
|
||||
String responseHeadersClosureText = '{ _ -> [:] }'
|
||||
Closure predicate = toClosure(predicateClosureText)
|
||||
Closure response = toClosure(responseClosureText)
|
||||
Closure responseHeaders =toClosure(responseHeadersClosureText)
|
||||
boolean soap = false
|
||||
int statusCode = 200
|
||||
String method = 'POST'
|
||||
|
@ -55,13 +58,19 @@ class Mock implements Comparable<Mock> {
|
|||
|
||||
void setPredicate(String predicate) {
|
||||
if (predicate) {
|
||||
this.predicate = Eval.me(predicate) as Closure
|
||||
this.predicateClosureText = predicate
|
||||
this.predicate = toClosure(predicate)
|
||||
}
|
||||
}
|
||||
|
||||
private Closure toClosure(String predicate) {
|
||||
return Eval.me(predicate) as Closure
|
||||
}
|
||||
|
||||
void setResponse(String response) {
|
||||
if (response) {
|
||||
this.response = Eval.me(response) as Closure
|
||||
this.responseClosureText = response
|
||||
this.response = toClosure(response)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,7 +94,8 @@ class Mock implements Comparable<Mock> {
|
|||
|
||||
void setResponseHeaders(String responseHeaders) {
|
||||
if (responseHeaders) {
|
||||
this.responseHeaders = Eval.me(responseHeaders) as Closure
|
||||
this.responseHeadersClosureText = responseHeaders
|
||||
this.responseHeaders = toClosure(responseHeaders)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue