solution: test accesslog writer
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
package io.emeraldpay.dshackle.monitoring.accesslog
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
|
import io.emeraldpay.dshackle.Global
|
||||||
|
import io.emeraldpay.dshackle.config.AccessLogConfig
|
||||||
|
import io.emeraldpay.dshackle.config.MainConfig
|
||||||
|
import io.emeraldpay.grpc.Chain
|
||||||
|
import spock.lang.Specification
|
||||||
|
|
||||||
|
import java.time.Instant
|
||||||
|
|
||||||
|
class AccessLogWriterSpec extends Specification {
|
||||||
|
|
||||||
|
def "writes log event"() {
|
||||||
|
setup:
|
||||||
|
File dir = File.createTempDir("dshackle-test-")
|
||||||
|
File accessLog = new File(dir, "accesslog.jsonl")
|
||||||
|
println("Write access log to $accessLog.absolutePath")
|
||||||
|
MainConfig config = new MainConfig()
|
||||||
|
config.accessLogConfig = new AccessLogConfig(true).tap {
|
||||||
|
it.filename = accessLog.absolutePath
|
||||||
|
}
|
||||||
|
AccessLogWriter logWriter = new AccessLogWriter(config)
|
||||||
|
|
||||||
|
when:
|
||||||
|
def event = new Events.Status(
|
||||||
|
Chain.ETHEREUM, UUID.fromString("9d8ecbf3-12fb-49cf-af9d-949a1050a000"),
|
||||||
|
new Events.StreamRequestDetails(
|
||||||
|
UUID.fromString("9d8ecbf3-12fb-49cf-af9d-949a1050a000"),
|
||||||
|
Instant.ofEpochMilli(1626746880123),
|
||||||
|
new Events.Remote(
|
||||||
|
["127.0.0.1", "172.217.8.78"], "172.217.8.78", "UnitTest"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
logWriter.submit([event])
|
||||||
|
logWriter.flush()
|
||||||
|
def act = accessLog.readLines()
|
||||||
|
then:
|
||||||
|
act.size() == 1
|
||||||
|
with(act[0]) {
|
||||||
|
def json = Global.objectMapper.readValue(it, Map)
|
||||||
|
json["version"] == "accesslog/v1beta"
|
||||||
|
json["id"] == "9d8ecbf3-12fb-49cf-af9d-949a1050a000"
|
||||||
|
json["method"] == "Status"
|
||||||
|
json["blockchain"] == "ETHEREUM"
|
||||||
|
json["request"]["start"] == "2021-07-20T02:08:00.123Z"
|
||||||
|
json["request"]["id"] == "9d8ecbf3-12fb-49cf-af9d-949a1050a000"
|
||||||
|
json["request"]["remote"]["ip"] == "172.217.8.78"
|
||||||
|
json["request"]["remote"]["userAgent"] == "UnitTest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user