diff --git a/src/test/groovy/io/emeraldpay/dshackle/monitoring/accesslog/AccessLogWriterSpec.groovy b/src/test/groovy/io/emeraldpay/dshackle/monitoring/accesslog/AccessLogWriterSpec.groovy new file mode 100644 index 00000000..bde9ce73 --- /dev/null +++ b/src/test/groovy/io/emeraldpay/dshackle/monitoring/accesslog/AccessLogWriterSpec.groovy @@ -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" + } + } +}