@@ -3,8 +3,6 @@ package io.github.numichi.reactive.logger.reactor
3
3
import io.github.numichi.reactive.logger.DefaultValues
4
4
import io.github.numichi.reactive.logger.MDC
5
5
import io.github.numichi.reactive.logger.exception.InvalidContextDataException
6
- import io.github.numichi.reactive.logger.reactor.MDCContext.put
7
- import io.github.numichi.reactive.logger.reactor.MDCContext.read
8
6
import org.junit.jupiter.api.Test
9
7
import reactor.core.publisher.Mono
10
8
import reactor.test.StepVerifier
@@ -18,26 +16,26 @@ internal class MDCContextTest {
18
16
val mdc2 = MDC (ANOTHER_CONTEXT_KEY )
19
17
mdc2[" mdcKey" ] = " mdcValue"
20
18
21
- val resultDefaultByContext: Mono <MDC > = Mono .deferContextual { read(it) }
22
- .contextWrite { put(it, mdc1) }
19
+ val resultDefaultByContext: Mono <MDC > = Mono .deferContextual { MDCContext . read(it) }
20
+ .contextWrite { MDCContext . put(it, mdc1) }
23
21
StepVerifier .create(resultDefaultByContext)
24
22
.expectNext(mdc1)
25
23
.verifyComplete()
26
24
27
- val resultDefault: Mono <MDC > = Mono .defer { read() }
28
- .contextWrite { put(it, mdc1) }
25
+ val resultDefault: Mono <MDC > = MDCContext . read()
26
+ .contextWrite { MDCContext . put(it, mdc1) }
29
27
StepVerifier .create(resultDefault)
30
28
.expectNext(mdc1)
31
29
.verifyComplete()
32
30
33
- val resultAnotherByContext: Mono <MDC > = Mono .deferContextual { read(it, ANOTHER_CONTEXT_KEY ) }
34
- .contextWrite { put(it, mdc2) }
31
+ val resultAnotherByContext: Mono <MDC > = Mono .deferContextual { MDCContext . read(it, ANOTHER_CONTEXT_KEY ) }
32
+ .contextWrite { MDCContext . put(it, mdc2) }
35
33
StepVerifier .create(resultAnotherByContext)
36
34
.expectNext(mdc2)
37
35
.verifyComplete()
38
36
39
- val resultAnother: Mono <MDC > = Mono .defer { read(ANOTHER_CONTEXT_KEY ) }
40
- .contextWrite { put(it, mdc2) }
37
+ val resultAnother: Mono <MDC > = MDCContext . read(ANOTHER_CONTEXT_KEY )
38
+ .contextWrite { MDCContext . put(it, mdc2) }
41
39
StepVerifier .create(resultAnother)
42
40
.expectNext(mdc2)
43
41
.verifyComplete()
@@ -52,49 +50,105 @@ internal class MDCContextTest {
52
50
anotherMdc[" mdcKey" ] = " mdcValue"
53
51
54
52
val contextSize1 = Mono .deferContextual { Mono .just(it.size()) }
55
- .contextWrite { put(it, defaultMdc) }
56
- .contextWrite { put(it, anotherMdc) }
53
+ .contextWrite { MDCContext . put(it, defaultMdc) }
54
+ .contextWrite { MDCContext . put(it, anotherMdc) }
57
55
StepVerifier .create(contextSize1)
58
56
.expectNext(2 )
59
57
.verifyComplete()
60
58
61
59
val contextSize2 = Mono .deferContextual { Mono .just(it.size()) }
62
- .contextWrite { put(it, defaultMdc, anotherMdc) }
60
+ .contextWrite { MDCContext . put(it, defaultMdc, anotherMdc) }
63
61
StepVerifier .create(contextSize2)
64
62
.expectNext(2 )
65
63
.verifyComplete()
66
64
67
65
val contextSize3 = Mono .deferContextual { Mono .just(it.size()) }
68
- .contextWrite { put(it, defaultMdc, null ) }
66
+ .contextWrite { MDCContext . put(it, defaultMdc, null ) }
69
67
StepVerifier .create(contextSize3)
70
68
.expectNext(1 )
71
69
.verifyComplete()
72
70
73
71
val contextSize4 = Mono .deferContextual { Mono .just(it.size()) }
74
- .contextWrite { put(it, defaultMdc, null ) }
72
+ .contextWrite { MDCContext . put(it, defaultMdc, null ) }
75
73
.contextWrite { it.put(" A" , " B" ) }
76
74
StepVerifier .create(contextSize4)
77
75
.expectNext(2 )
78
76
.verifyComplete()
79
77
}
80
78
79
+ @Test
80
+ fun `should write within writeContext` () {
81
+ val data1 = MDCContext .read()
82
+ .mapNotNull { it[" key" ] }
83
+ .contextWrite {
84
+ val mdc = MDCContext .getMDCOrDefault(it)
85
+ mdc[" key" ] = " example"
86
+ MDCContext .put(it, mdc)
87
+ }
88
+ StepVerifier .create(data1)
89
+ .expectNext(" example" )
90
+ .verifyComplete()
91
+
92
+ val data2 = MDCContext .read(" another" )
93
+ .mapNotNull { it[" key" ] }
94
+ .contextWrite {
95
+ val mdc = MDCContext .getMDCOrDefault(it, " another" )
96
+ mdc[" key" ] = " example"
97
+ MDCContext .put(it, mdc)
98
+ }
99
+ StepVerifier .create(data2)
100
+ .expectNext(" example" )
101
+ .verifyComplete()
102
+
103
+ val data3 = MDCContext .read()
104
+ .mapNotNull { it[" key" ] }
105
+ .contextWrite {
106
+ var mdc = MDCContext .getMDCOrNull(it)
107
+ if (mdc == null ) {
108
+ mdc = MDC ()
109
+ }
110
+
111
+ mdc[" key" ] = " example"
112
+ MDCContext .put(it, mdc)
113
+ }
114
+ StepVerifier .create(data3)
115
+ .expectNext(" example" )
116
+ .verifyComplete()
117
+
118
+ val data4 = MDCContext .read(" another" )
119
+ .mapNotNull { it[" key" ] }
120
+ .contextWrite {
121
+ var mdc = MDCContext .getMDCOrNull(it, " another" )
122
+
123
+ if (mdc == null ) {
124
+ mdc = MDC (" another" )
125
+ mdc!! [" key" ] = " example"
126
+ }
127
+
128
+ MDCContext .put(it, mdc)
129
+ }
130
+ StepVerifier .create(data4)
131
+ .expectNext(" example" )
132
+ .verifyComplete()
133
+ }
134
+
81
135
@Test
82
136
fun `should give the MDC you are looking for (more MDC Context)` () {
83
137
val defaultMdc = MDC ()
84
138
defaultMdc[" mdcKey" ] = " mdcValue"
85
139
val anotherMdc = MDC (ANOTHER_CONTEXT_KEY )
86
140
anotherMdc[" mdcKey" ] = " mdcValue"
87
141
88
- val resultDefault: Mono <MDC > = Mono .defer { read() }
89
- .contextWrite { put(it, defaultMdc) }
90
- .contextWrite { put(it, anotherMdc) }
142
+ val resultDefault: Mono <MDC > = Mono .defer { MDCContext . read() }
143
+ .contextWrite { MDCContext . put(it, defaultMdc) }
144
+ .contextWrite { MDCContext . put(it, anotherMdc) }
91
145
StepVerifier .create(resultDefault)
92
146
.expectNext(defaultMdc)
93
147
.verifyComplete()
94
148
95
- val resultAnother: Mono <MDC > = Mono .defer { read(ANOTHER_CONTEXT_KEY ) }
96
- .contextWrite { put(it, defaultMdc) }
97
- .contextWrite { put(it, anotherMdc) }
149
+ val resultAnother: Mono <MDC > = Mono .defer { MDCContext . read(ANOTHER_CONTEXT_KEY ) }
150
+ .contextWrite { MDCContext . put(it, defaultMdc) }
151
+ .contextWrite { MDCContext . put(it, anotherMdc) }
98
152
StepVerifier .create(resultAnother)
99
153
.expectNext(anotherMdc)
100
154
.verifyComplete()
@@ -105,26 +159,26 @@ internal class MDCContextTest {
105
159
val mdc = MDC (ANOTHER_CONTEXT_KEY )
106
160
mdc[" mdcKey2" ] = " mdcValue2"
107
161
108
- val result1: Mono <MDC > = Mono .defer { read() }
109
- .contextWrite { put(it, mdc) }
162
+ val result1: Mono <MDC > = Mono .defer { MDCContext . read() }
163
+ .contextWrite { MDCContext . put(it, mdc) }
110
164
StepVerifier .create(result1)
111
165
.expectError(InvalidContextDataException ::class .java)
112
166
.verify()
113
167
114
168
115
- val result2: Mono <MDC > = Mono .defer { read(" not-exist-context-id" ) }
116
- .contextWrite { put(it!! , mdc) }
169
+ val result2: Mono <MDC > = Mono .defer { MDCContext . read(" not-exist-context-id" ) }
170
+ .contextWrite { MDCContext . put(it!! , mdc) }
117
171
StepVerifier .create(result2)
118
172
.expectError(InvalidContextDataException ::class .java)
119
173
.verify()
120
174
121
- val result3: Mono <MDC > = Mono .defer { read() }
175
+ val result3: Mono <MDC > = Mono .defer { MDCContext . read() }
122
176
.contextWrite { it.put(DefaultValues .getInstance().defaultReactorContextMdcKey, " " ) }
123
177
StepVerifier .create(result3)
124
178
.expectError(InvalidContextDataException ::class .java)
125
179
.verify()
126
180
127
- val result4: Mono <MDC > = Mono .defer { read() }
181
+ val result4: Mono <MDC > = Mono .defer { MDCContext . read() }
128
182
.contextWrite { it.put(DefaultValues .getInstance().defaultReactorContextMdcKey, 100 ) }
129
183
StepVerifier .create(result4)
130
184
.expectError(InvalidContextDataException ::class .java)
0 commit comments