blob: f477ce0c2f510aaec859859182dcb7f9445b8b9f [file]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package resource
import (
"reflect"
"strconv"
"testing"
dorisv1 "github.com/apache/doris-operator/api/doris/v1"
corev1 "k8s.io/api/core/v1"
)
func Test_GetStartMode(t *testing.T) {
tests := []map[string]interface{}{
{
"enable_fqdn_mode": "true",
},
{},
{
"enable_fqdn_mode": "IP",
}}
ress := []string{"FQDN", "FQDN", "IP"}
for i, test := range tests {
t.Run("test"+strconv.Itoa(i), func(t *testing.T) {
res := ress[i]
mode := GetStartMode(test)
if res != mode {
t.Errorf("mode %s not equal res %s", mode, res)
}
})
}
}
func Test_ResolveConfigMpas(t *testing.T) {
tests := []*corev1.ConfigMap{
&corev1.ConfigMap{
Data: map[string]string{
"fe.conf": `
# the output dir of stderr and stdout
LOG_DIR = ${DORIS_HOME}/log
JAVA_OPTS="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time"
# INFO, WARN, ERROR, FATAL
sys_log_level = INFO
# NORMAL, BRIEF, ASYNC
sys_log_mode = NORMAL
# Default dirs to put jdbc drivers,default value is ${DORIS_HOME}/jdbc_drivers
# jdbc_drivers_dir = ${DORIS_HOME}/jdbc_drivers
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
enable_fqdn_mode=true
`}},
{
Data: map[string]string{
"be.conf": `
PPROF_TMPDIR="$DORIS_HOME/log/"
JAVA_OPTS="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xloggc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000 -DJDBC_MAX_WAIT_TIME=5000"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000 -DJDBC_MAX_WAIT_TIME=5000"
# since 1.2, the JAVA_HOME need to be set to run BE process.
# JAVA_HOME=/path/to/jdk/
# https://github.com/apache/doris/blob/master/docs/zh-CN/community/developer-guide/debug-tool.md#jemalloc-heap-profile
# https://jemalloc.net/jemalloc.3.html
JEMALLOC_CONF="percpu_arena:percpu,background_thread:true,metadata_thp:auto,muzzy_decay_ms:15000,dirty_decay_ms:15000,oversize_threshold:0,lg_tcache_max:20,prof:false,lg_prof_interval:32,lg_prof_sample:19,prof_gdump:false,prof_accum:false,prof_leak:false,prof_final:false"
JEMALLOC_PROF_PRFIX=""
# INFO, WARNING, ERROR, FATAL
sys_log_level = INFO
# ports for admin, web, heartbeat service
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
doris_cgroup_cpu_path=/sys/fs/cgroup/cpu/doris
enable_java_support=false`,
},
},
nil,
}
m, err := ResolveConfigMaps(tests, dorisv1.Component_FE)
if err != nil {
t.Errorf("resolve configmaps faild, len=%d, err=%s", len(m), err.Error())
} else if len(m) == 0 {
t.Errorf("resolve configmaps faild, len=%d", len(m))
}
}
func Test_GetMountConfigMapInfo(t *testing.T) {
c := dorisv1.ConfigMapInfo{
ConfigMapName: "test",
ConfigMaps: []dorisv1.MountConfigMapInfo{},
}
fc := GetMountConfigMapInfo(c)
if len(fc) != 1 {
t.Errorf("get mountConfigMapInfo failed, len not equal 1")
}
}
func Test_getCoreCmName(t *testing.T) {
type args struct {
dcr *dorisv1.DorisCluster
componentType dorisv1.ComponentType
}
tests := []struct {
name string
args args
want string
}{
{
name: "test1",
args: args{
dcr: &dorisv1.DorisCluster{
Spec: dorisv1.DorisClusterSpec{
FeSpec: &dorisv1.FeSpec{
BaseSpec: dorisv1.BaseSpec{
ConfigMapInfo: dorisv1.ConfigMapInfo{
ConfigMapName: "fe-config",
},
},
},
},
},
componentType: dorisv1.Component_FE,
},
want: "fe-config",
},
{
name: "test2",
args: args{dcr: &dorisv1.DorisCluster{
Spec: dorisv1.DorisClusterSpec{
FeSpec: &dorisv1.FeSpec{
BaseSpec: dorisv1.BaseSpec{
ConfigMapInfo: dorisv1.ConfigMapInfo{
ConfigMapName: "fe-config",
ConfigMaps: []dorisv1.MountConfigMapInfo{
{
ConfigMapName: "fe-config-1",
MountPath: "config",
},
},
},
},
},
},
},
componentType: dorisv1.Component_FE,
},
want: "fe-config",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := getDorisCoreConfigMapName(tt.args.dcr, tt.args.componentType); !reflect.DeepEqual(got, tt.want) {
t.Errorf("getDorisCoreConfigMapName() = %v, want %v", got, tt.want)
}
})
}
}