Add additional logs on server and additional info in list mock operation

This commit is contained in:
Dominik Przybysz 2015-03-12 11:10:09 +01:00
parent bc3c3d1dc0
commit 332383ff15
6 changed files with 47 additions and 18 deletions

View file

@ -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() {

View file

@ -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)
}

View file

@ -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)
}
}