@@ -6,16 +6,21 @@ package org.lightningdevkit.ldknode
6
6
import kotlin.UInt
7
7
import kotlin.test.Test
8
8
import kotlin.test.assertEquals
9
+ import kotlin.test.assertTrue
9
10
import kotlin.io.path.createTempDirectory
10
11
import org.junit.runner.RunWith
11
12
import org.lightningdevkit.ldknode.*;
12
13
import android.content.Context.MODE_PRIVATE
13
14
import androidx.test.core.app.ApplicationProvider
14
15
import androidx.test.ext.junit.runners.AndroidJUnit4
16
+ import com.sun.jna.Pointer
15
17
16
18
@RunWith(AndroidJUnit4 ::class )
17
19
class AndroidLibTest {
18
20
@Test fun node_start_stop () {
21
+ val logWriter1 = CustomLogWriter (CustomLogWriter .LogLevel .GOSSIP )
22
+ val logWriter2 = CustomLogWriter (CustomLogWriter .LogLevel .GOSSIP )
23
+
19
24
val tmpDir1 = createTempDirectory(" ldk_node" ).toString()
20
25
println (" Random dir 1: $tmpDir1 " )
21
26
val tmpDir2 = createTempDirectory(" ldk_node" ).toString()
@@ -37,6 +42,9 @@ class AndroidLibTest {
37
42
val builder1 = Builder .fromConfig(config1)
38
43
val builder2 = Builder .fromConfig(config2)
39
44
45
+ builder1.setCustomLogger(logWriter1)
46
+ builder2.setCustomLogger(logWriter2)
47
+
40
48
val node1 = builder1.build()
41
49
val node2 = builder2.build()
42
50
@@ -55,7 +63,63 @@ class AndroidLibTest {
55
63
val address2 = node2.onchain_payment().newOnchainAddress()
56
64
println (" Funding address 2: $address2 " )
57
65
66
+ assertTrue(logWriter1.getLogMessages().isNotEmpty())
67
+ assertTrue(logWriter2.getLogMessages().isNotEmpty())
68
+
58
69
node1.stop()
59
70
node2.stop()
60
71
}
61
72
}
73
+
74
+ class CustomLogWriter (private var currentLogLevel : LogLevel = LogLevel .INFO ) :
75
+ LogWriter (Pointer .NULL ) {
76
+ enum class LogLevel {
77
+ ERROR , WARN , INFO , DEBUG , TRACE , GOSSIP
78
+ }
79
+
80
+ private val logMessages = mutableListOf<String >()
81
+
82
+ fun setLogLevel (level : LogLevel ) {
83
+ currentLogLevel = level
84
+ }
85
+
86
+ fun getLogMessages (): List <String > {
87
+ return logMessages.toList()
88
+ }
89
+
90
+ override fun log (record : LogRecord ) {
91
+ val recordLevel =
92
+ when (record.level.toString().lowercase()) {
93
+ " error" -> LogLevel .ERROR
94
+ " warn" -> LogLevel .WARN
95
+ " info" -> LogLevel .INFO
96
+ " debug" -> LogLevel .DEBUG
97
+ " trace" -> LogLevel .TRACE
98
+ " gossip" -> LogLevel .GOSSIP
99
+ else -> LogLevel .INFO
100
+ }
101
+
102
+ if (isLevelEnabled(recordLevel)) {
103
+ val logMessage = formatRecord(record)
104
+ logMessages.add(logMessage)
105
+ }
106
+ }
107
+
108
+ private fun formatRecord (record : LogRecord ): String {
109
+ val timestamp =
110
+ java.time.LocalDateTime .now()
111
+ .format(java.time.format.DateTimeFormatter .ofPattern(" yyyy-MM-dd HH:mm:ss" ))
112
+ return String .format(
113
+ " %s %-5s [%s:%d] %s\n " ,
114
+ timestamp,
115
+ record.level,
116
+ record.modulePath,
117
+ record.line,
118
+ record.args
119
+ )
120
+ }
121
+
122
+ private fun isLevelEnabled (level : LogLevel ): Boolean {
123
+ return level.ordinal <= currentLogLevel.ordinal
124
+ }
125
+ }
0 commit comments