Skip to content

Commit

Permalink
Merge pull request #434 from desmax74/rhpam-2746
Browse files Browse the repository at this point in the history
[RHPAM-2746 ] Set default JVM Max memory ratio to 80% in BA Operator
  • Loading branch information
tchughesiv committed May 20, 2020
2 parents cb20aa6 + 399a86e commit 7b71747
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 2 deletions.
13 changes: 13 additions & 0 deletions pkg/controller/kieapp/defaults/defaults.go
Expand Up @@ -944,18 +944,31 @@ func SetDefaults(cr *api.KieApp) {
specApply.Objects.Servers = []api.KieServerSet{{Deployments: Pint(constants.DefaultKieDeployments)}}
}
setKieSetNames(specApply)
setJvmDefault(specApply.Objects.Console.Jvm)
for index := range specApply.Objects.Servers {
addWebhookTypes(specApply.Objects.Servers[index].Build)
for _, statusServer := range cr.Status.Applied.Objects.Servers {
retainAppliedPwds(&specApply.Objects.Servers[index], statusServer)
}
addWebhookPwds(specApply.Objects.Servers[index].Build)
setJvmDefault(specApply.Objects.Servers[index].Jvm)
}
isTrialEnv := strings.HasSuffix(string(specApply.Environment), constants.TrialEnvSuffix)
setPasswords(specApply, isTrialEnv)
cr.Status.Applied = *specApply
}

func setJvmDefault(jvm *api.JvmObject) {
if jvm != nil {
if jvm.JavaMaxMemRatio == nil {
jvm.JavaMaxMemRatio = Pint32(80)
}
if jvm.JavaInitialMemRatio == nil {
jvm.JavaInitialMemRatio = Pint32(25)
}
}
}

func addWebhookTypes(buildObject *api.KieAppBuildObject) {
if buildObject == nil {
return
Expand Down
78 changes: 76 additions & 2 deletions pkg/controller/kieapp/defaults/defaults_test.go
Expand Up @@ -677,7 +677,7 @@ func testAMQEnvs(t *testing.T, kieserverEnvs []corev1.EnvVar, amqEnvs []corev1.E
func createJvmTestObject() *api.JvmObject {
jvmObject := api.JvmObject{
JavaOptsAppend: "-Dsome.property=foo",
JavaMaxMemRatio: Pint32(50),
JavaMaxMemRatio: Pint32(80),
JavaInitialMemRatio: Pint32(25),
JavaMaxInitialMem: Pint32(4096),
JavaDiagnostics: Pbool(true),
Expand All @@ -700,7 +700,7 @@ func testJvmEnv(t *testing.T, envs []corev1.EnvVar) {
assert.Equal(t, "-Dsome.property=foo", env.Value)

case "JAVA_MAX_MEM_RATIO":
assert.Equal(t, "50", env.Value)
assert.Equal(t, "80", env.Value)

case "JAVA_INITIAL_MEM_RATIO":
assert.Equal(t, "25", env.Value)
Expand Down Expand Up @@ -4386,3 +4386,77 @@ func TestMergeDBDeployment(t *testing.T) {
})
}
}

func TestJvmDefaultConf(t *testing.T) {
name := "test"
cr := &api.KieApp{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
Spec: api.KieAppSpec{
Environment: api.RhdmTrial,
Objects: api.KieAppObjects{
Console: api.ConsoleObject{
Jvm: createJvmTestObjectWithoutJavaMaxMemRatio(),
},
},
},
}
env, _ := GetEnvironment(cr, test.MockService())
testDefaultJvm(t, env.Console.DeploymentConfigs[0].Spec.Template.Spec.Containers[0].Env)
}

func TestJvmDefaultServers(t *testing.T) {
name := "test"
cr := &api.KieApp{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
Spec: api.KieAppSpec{
Environment: api.RhpamAuthoring,
Objects: api.KieAppObjects{
Servers: []api.KieServerSet{
{
Jvm: createJvmTestObjectWithoutJavaMaxMemRatio(),
},
},
},
},
}
env, _ := GetEnvironment(cr, test.MockService())
testDefaultJvm(t, env.Servers[0].DeploymentConfigs[0].Spec.Template.Spec.Containers[0].Env)
}

func testDefaultJvm(t *testing.T, envs []corev1.EnvVar) {
ratioPresent := false
initialRatio := false
for _, env := range envs {
switch e := env.Name; e {
case "JAVA_MAX_MEM_RATIO":
ratioPresent = true
assert.Equal(t, "80", env.Value)
case "JAVA_INITIAL_MEM_RATIO":
initialRatio = true
assert.Equal(t, "25", env.Value)
}
}
assert.True(t, ratioPresent)
assert.True(t, initialRatio)
}

func createJvmTestObjectWithoutJavaMaxMemRatio() *api.JvmObject {
jvmObject := api.JvmObject{
JavaOptsAppend: "-Dsome.property=foo",
JavaMaxInitialMem: Pint32(4096),
JavaDiagnostics: Pbool(true),
JavaDebug: Pbool(true),
JavaDebugPort: Pint32(8787),
GcMinHeapFreeRatio: Pint32(20),
GcMaxHeapFreeRatio: Pint32(40),
GcTimeRatio: Pint32(4),
GcAdaptiveSizePolicyWeight: Pint32(90),
GcMaxMetaspaceSize: Pint32(100),
GcContainerOptions: "-XX:+UseG1GC",
}
return &jvmObject
}

0 comments on commit 7b71747

Please sign in to comment.