@@ -115,4 +115,91 @@ private void assertEquals(
115115 Assert .assertTrue (valueConf .contains (value ));
116116 }
117117 }
118+
119+ @ Test
120+ public void testGetConfigMapWithEnvironmentVariables () {
121+ // Test cases for environment variable substitution.
122+ // We assume these environment variables are NOT set in the test environment,
123+ // so they should resolve to their placeholder strings.
124+
125+ // Case 1: Simple env var placeholder
126+ MultipleParameterTool params1 =
127+ MultipleParameterTool .fromArgs (
128+ new String [] {"--test-conf" , "db.user=$DB_USER_UNSET" });
129+ Map <String , String > expected1 = new HashMap <>();
130+ expected1 .put ("db.user" , "$DB_USER_UNSET" );
131+ Assert .assertEquals (
132+ expected1 , CdcTools .getConfigMap (params1 , "test-conf" ));
133+
134+ // Case 2: Env var with braces placeholder
135+ MultipleParameterTool params2 =
136+ MultipleParameterTool .fromArgs (
137+ new String [] {"--test-conf" , "db.pass=${DB_PASS_UNSET}" });
138+ Map <String , String > expected2 = new HashMap <>();
139+ expected2 .put ("db.pass" , "${DB_PASS_UNSET}" );
140+ Assert .assertEquals (
141+ expected2 , CdcTools .getConfigMap (params2 , "test-conf" ));
142+
143+ // Case 3: Mix of plain string and env var placeholder
144+ MultipleParameterTool params3 =
145+ MultipleParameterTool .fromArgs (
146+ new String [] {
147+ "--test-conf" , "db.host=localhost" , "--test-conf" , "db.port=$DB_PORT_UNSET"
148+ });
149+ Map <String , String > expected3 = new HashMap <>();
150+ expected3 .put ("db.host" , "localhost" );
151+ expected3 .put ("db.port" , "$DB_PORT_UNSET" );
152+ Assert .assertEquals (
153+ expected3 , CdcTools .getConfigMap (params3 , "test-conf" ));
154+
155+ // Case 4: Env var within a string
156+ MultipleParameterTool params4 =
157+ MultipleParameterTool .fromArgs (
158+ new String [] {
159+ "--test-conf" , "conn.string=jdbc:mysql://$DB_HOST_UNSET:3306/mydb"
160+ });
161+ Map <String , String > expected4 = new HashMap <>();
162+ expected4 .put ("conn.string" , "jdbc:mysql://$DB_HOST_UNSET:3306/mydb" );
163+ Assert .assertEquals (
164+ expected4 , CdcTools .getConfigMap (params4 , "test-conf" ));
165+
166+ // Case 5: Multiple env vars in one string
167+ MultipleParameterTool params5 =
168+ MultipleParameterTool .fromArgs (
169+ new String [] {"--test-conf" , "credentials=user:$USER_UNSET,pass:$PASS_UNSET" });
170+ Map <String , String > expected5 = new HashMap <>();
171+ expected5 .put ("credentials" , "user:$USER_UNSET,pass:$PASS_UNSET" );
172+ Assert .assertEquals (
173+ expected5 , CdcTools .getConfigMap (params5 , "test-conf" ));
174+
175+ // Case 6: No env vars (regular behavior)
176+ MultipleParameterTool params6 =
177+ MultipleParameterTool .fromArgs (
178+ new String [] {"--test-conf" , "key1=value1" , "--test-conf" , "key2=value2" });
179+ Map <String , String > expected6 = new HashMap <>();
180+ expected6 .put ("key1" , "value1" );
181+ expected6 .put ("key2" , "value2" );
182+ Assert .assertEquals (
183+ expected6 , CdcTools .getConfigMap (params6 , "test-conf" ));
184+
185+ // Case 7: Env var for a key that allows empty value (e.g. password), resolves to placeholder
186+ MultipleParameterTool params7 =
187+ MultipleParameterTool .fromArgs (
188+ new String [] {"--test-conf" , "password=$PASSWORD_UNSET" });
189+ Map <String , String > expected7 = new HashMap <>();
190+ expected7 .put ("password" , "$PASSWORD_UNSET" ); // DatabaseSyncConfig.PASSWORD is in EMPTY_KEYS
191+ Assert .assertEquals (
192+ expected7 , CdcTools .getConfigMap (params7 , "test-conf" ));
193+
194+ // Case 8: Env var that resolves to an empty string (if it were set to empty)
195+ // For this test, we simulate it by having the placeholder itself, as we can't set it to empty easily here.
196+ // If $EMPTY_VAR was set to "", the result for "key" would be "".
197+ // Since it's not set, it remains "$EMPTY_VAR".
198+ MultipleParameterTool params8 =
199+ MultipleParameterTool .fromArgs (new String [] {"--test-conf" , "key=$EMPTY_VAR" });
200+ Map <String , String > expected8 = new HashMap <>();
201+ expected8 .put ("key" , "$EMPTY_VAR" );
202+ Assert .assertEquals (
203+ expected8 , CdcTools .getConfigMap (params8 , "test-conf" ));
204+ }
118205}
0 commit comments