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