Skip to content

Commit 000072e

Browse files
authored
feat(messaging): add toggle for command request header propagation (#1114)
- Introduce ENABLED_KEY constant to control propagation feature - Add conditional check to enable/disable header injection - Update tests to cover both enabled and disabled scenarios
1 parent 036ef0f commit 000072e

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

Diff for: wow-core/src/main/kotlin/me/ahoo/wow/messaging/propagation/CommandRequestHeaderPropagator.kt

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import me.ahoo.wow.api.messaging.Message
1818

1919
class CommandRequestHeaderPropagator : MessagePropagator {
2020
companion object {
21+
const val ENABLED_KEY = "wow.messaging.propagation.request"
2122
private const val USER_AGENT = "user_agent"
2223
private const val REMOTE_IP = "remote_ip"
2324
val Header.userAgent: String?
@@ -39,7 +40,12 @@ class CommandRequestHeaderPropagator : MessagePropagator {
3940
}
4041
}
4142

43+
private val enabled: Boolean = System.getProperty(ENABLED_KEY)?.toBoolean() != false
44+
4245
override fun inject(header: Header, upstream: Message<*, *>) {
46+
if (!enabled) {
47+
return
48+
}
4349
upstream.header.userAgent?.let {
4450
header.withUserAgent(it)
4551
}

Diff for: wow-core/src/test/kotlin/me/ahoo/wow/messaging/propagation/CommandRequestHeaderPropagatorTest.kt

+28
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,32 @@ class CommandRequestHeaderPropagatorTest {
4848
assertThat(injectedHeader.userAgent, equalTo(null))
4949
assertThat(injectedHeader.remoteIp, equalTo(null))
5050
}
51+
52+
@Test
53+
fun injectDisabled() {
54+
System.setProperty(CommandRequestHeaderPropagator.ENABLED_KEY, "false")
55+
val injectedHeader = DefaultHeader.empty()
56+
val upstreamMessage =
57+
MockCreateAggregate(GlobalIdGenerator.generateAsString(), GlobalIdGenerator.generateAsString())
58+
.toCommandMessage()
59+
upstreamMessage.header.withUserAgent("userAgent").withRemoteIp("remoteIp")
60+
CommandRequestHeaderPropagator().inject(injectedHeader, upstreamMessage)
61+
assertThat(injectedHeader.userAgent, equalTo(null))
62+
assertThat(injectedHeader.remoteIp, equalTo(null))
63+
System.clearProperty(CommandRequestHeaderPropagator.ENABLED_KEY)
64+
}
65+
66+
@Test
67+
fun injectEnabled() {
68+
System.setProperty(CommandRequestHeaderPropagator.ENABLED_KEY, "true")
69+
val injectedHeader = DefaultHeader.empty()
70+
val upstreamMessage =
71+
MockCreateAggregate(GlobalIdGenerator.generateAsString(), GlobalIdGenerator.generateAsString())
72+
.toCommandMessage()
73+
upstreamMessage.header.withUserAgent("userAgent").withRemoteIp("remoteIp")
74+
CommandRequestHeaderPropagator().inject(injectedHeader, upstreamMessage)
75+
assertThat(injectedHeader.userAgent, equalTo(upstreamMessage.header.userAgent))
76+
assertThat(injectedHeader.remoteIp, equalTo(upstreamMessage.header.remoteIp))
77+
System.clearProperty(CommandRequestHeaderPropagator.ENABLED_KEY)
78+
}
5179
}

0 commit comments

Comments
 (0)