@@ -40,7 +40,8 @@ use crate::{
4040 } ,
4141 crd:: {
4242 DruidConfigOverrides , DruidRole , STACKABLE_TRUST_STORE , STACKABLE_TRUST_STORE_PASSWORD ,
43- build_recommended_labels, build_string_list, env_var_reference, file_reference,
43+ STACKABLE_TRUST_STORE_TYPE , build_recommended_labels, build_string_list, env_var_reference,
44+ file_reference,
4445 } ,
4546} ;
4647
@@ -113,7 +114,7 @@ fn middlemanager_indexer_java_opts() -> (String, String) {
113114 build_string_list ( & [
114115 format ! ( "-Djavax.net.ssl.trustStore={STACKABLE_TRUST_STORE}" ) ,
115116 format ! ( "-Djavax.net.ssl.trustStorePassword={STACKABLE_TRUST_STORE_PASSWORD}" ) ,
116- "-Djavax.net.ssl.trustStoreType=pkcs12" . to_owned ( ) ,
117+ format ! ( "-Djavax.net.ssl.trustStoreType={STACKABLE_TRUST_STORE_TYPE}" ) ,
117118 ] ) ,
118119 )
119120}
@@ -360,3 +361,77 @@ pub fn build_rolegroup_config_map(
360361 role_group : role_group_name. to_string ( ) ,
361362 } )
362363}
364+
365+ #[ cfg( test) ]
366+ mod tests {
367+ use std:: str:: FromStr ;
368+
369+ use stackable_operator:: {
370+ k8s_openapi:: api:: core:: v1:: ConfigMap , v2:: types:: operator:: RoleGroupName ,
371+ } ;
372+
373+ use super :: * ;
374+ use crate :: controller:: validate:: test_support:: {
375+ MINIMAL_DRUID_YAML , druid_from_yaml, validated_cluster,
376+ } ;
377+
378+ /// Builds the rolegroup `ConfigMap` for `<role>/<role_group>` from the minimal test fixture.
379+ fn build_cm ( role : DruidRole , role_group : & str ) -> ConfigMap {
380+ let druid = druid_from_yaml ( MINIMAL_DRUID_YAML ) ;
381+ let cluster = validated_cluster ( & druid) ;
382+ let role_group_name = RoleGroupName :: from_str ( role_group) . unwrap ( ) ;
383+ let rg = cluster
384+ . role_group_configs
385+ . get ( & role)
386+ . expect ( "role present" )
387+ . get ( & role_group_name)
388+ . expect ( "role group present" )
389+ . clone ( ) ;
390+ build_rolegroup_config_map ( & cluster, & role, & role_group_name, & rg) . expect ( "config map" )
391+ }
392+
393+ #[ test]
394+ fn contains_the_operator_written_config_files ( ) {
395+ let cm = build_cm ( DruidRole :: Broker , "default" ) ;
396+ let data = cm. data . expect ( "config map has data" ) ;
397+
398+ // Always-present operator-written files.
399+ assert ! ( data. contains_key( & ConfigFileName :: RuntimeProperties . to_string( ) ) ) ;
400+ assert ! ( data. contains_key( & ConfigFileName :: SecurityProperties . to_string( ) ) ) ;
401+ assert ! ( data. contains_key( & ConfigFileName :: JvmConfig . to_string( ) ) ) ;
402+ // Automatic logging is the default, so log4j2 is rendered.
403+ assert ! ( data. contains_key( & ConfigFileName :: Log4j2Properties . to_string( ) ) ) ;
404+ // The Vector agent is disabled by default, so no `vector.yaml` is added.
405+ assert ! ( !data. contains_key( VECTOR_CONFIG_FILE ) ) ;
406+ }
407+
408+ #[ test]
409+ fn has_the_expected_name_and_recommended_labels ( ) {
410+ let cm = build_cm ( DruidRole :: Broker , "default" ) ;
411+ let meta = cm. metadata ;
412+
413+ assert_eq ! ( meta. name. as_deref( ) , Some ( "simple-druid-broker-default" ) ) ;
414+
415+ let labels = meta. labels . expect ( "recommended labels" ) ;
416+ assert_eq ! (
417+ labels. get( "app.kubernetes.io/name" ) . map( String :: as_str) ,
418+ Some ( "druid" )
419+ ) ;
420+ assert_eq ! (
421+ labels. get( "app.kubernetes.io/instance" ) . map( String :: as_str) ,
422+ Some ( "simple-druid" )
423+ ) ;
424+ assert_eq ! (
425+ labels
426+ . get( "app.kubernetes.io/component" )
427+ . map( String :: as_str) ,
428+ Some ( "broker" )
429+ ) ;
430+ assert_eq ! (
431+ labels
432+ . get( "app.kubernetes.io/role-group" )
433+ . map( String :: as_str) ,
434+ Some ( "default" )
435+ ) ;
436+ }
437+ }
0 commit comments