@@ -6,6 +6,7 @@ package org.lightningdevkit.ldknode
66import kotlin.UInt
77import kotlin.test.Test
88import kotlin.test.assertEquals
9+ import kotlin.test.assertTrue
910import kotlin.io.path.createTempDirectory
1011import org.junit.runner.RunWith
1112import org.lightningdevkit.ldknode.*;
@@ -16,6 +17,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
1617@RunWith(AndroidJUnit4 ::class )
1718class AndroidLibTest {
1819 @Test fun node_start_stop () {
20+ val logWriter1 = CustomLogWriter (CustomLogWriter .LogLevel .GOSSIP )
21+ val logWriter2 = CustomLogWriter (CustomLogWriter .LogLevel .GOSSIP )
22+
1923 val tmpDir1 = createTempDirectory(" ldk_node" ).toString()
2024 println (" Random dir 1: $tmpDir1 " )
2125 val tmpDir2 = createTempDirectory(" ldk_node" ).toString()
@@ -37,6 +41,9 @@ class AndroidLibTest {
3741 val builder1 = Builder .fromConfig(config1)
3842 val builder2 = Builder .fromConfig(config2)
3943
44+ builder1.set_custom_logger(logWriter1)
45+ builder2.set_custom_logger(logWriter2)
46+
4047 val node1 = builder1.build()
4148 val node2 = builder2.build()
4249
@@ -55,7 +62,55 @@ class AndroidLibTest {
5562 val address2 = node2.onchain_payment().newOnchainAddress()
5663 println (" Funding address 2: $address2 " )
5764
65+ assertTrue(logWriter1.getLogMessages().isNotEmpty())
66+ assertTrue(logWriter2.getLogMessages().isNotEmpty())
67+
5868 node1.stop()
5969 node2.stop()
6070 }
6171}
72+
73+ class CustomLogWriter (private var currentLogLevel : LogLevel = LogLevel .INFO ): LogWriter {
74+ enum class LogLevel {
75+ ERROR , WARN , INFO , DEBUG , TRACE , GOSSIP
76+ }
77+
78+ private val logMessages = mutableListOf<String >()
79+
80+ fun setLogLevel (level : LogLevel ) {
81+ currentLogLevel = level
82+ }
83+
84+ override fun log (record : LogRecord ) {
85+ val recordLevel = when (record.level.toLowerCase()) {
86+ " error" -> LogLevel .ERROR
87+ " warn" -> LogLevel .WARN
88+ " info" -> LogLevel .INFO
89+ " debug" -> LogLevel .DEBUG
90+ " trace" -> LogLevel .TRACE
91+ " gossip" -> LogLevel .GOSSIP
92+ else -> LogLevel .INFO
93+ }
94+
95+ if (isLevelEnabled(recordLevel)) {
96+ val log_message = formatRecord(record)
97+ logMessages.add(log_message)
98+ }
99+ }
100+
101+ private fun formatRecord (record : LogRecord ): String {
102+ val timestamp = java.time.LocalDateTime .now().format(java.time.format.DateTimeFormatter .ofPattern(" yyyy-MM-dd HH:mm:ss" ))
103+ return String .format(
104+ " %s %-5s [%s:%d] %s\n " ,
105+ timestamp,
106+ record.level,
107+ record.modulePath,
108+ record.line,
109+ record.message
110+ )
111+ }
112+
113+ private fun isLevelEnabled (level : LogLevel ): Boolean {
114+ return level.ordinal <= currentLogLevel.ordinal
115+ }
116+ }
0 commit comments