266 lines
8.7 KiB
Go
266 lines
8.7 KiB
Go
/*
|
|
Copyright 2021 Alibaba Group Holding Limited.
|
|
|
|
Licensed 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 polardbxparameter
|
|
|
|
import (
|
|
"time"
|
|
|
|
polardbxv1 "github.com/alibaba/polardbx-operator/api/v1"
|
|
|
|
pxcmanager "github.com/alibaba/polardbx-operator/test/e2e/polardbxcluster/lifecycle"
|
|
"github.com/alibaba/polardbx-operator/test/framework"
|
|
pxcframework "github.com/alibaba/polardbx-operator/test/framework/polardbxcluster"
|
|
pxpframework "github.com/alibaba/polardbx-operator/test/framework/polardbxparameter"
|
|
"github.com/onsi/ginkgo"
|
|
"k8s.io/apimachinery/pkg/types"
|
|
)
|
|
|
|
var _ = ginkgo.Describe("[PolarDBXParameter]", func() {
|
|
f := framework.NewDefaultFramework(framework.TestContext)
|
|
var cnParamTemplateList, dnParamTemplateList []polardbxv1.TemplateParams
|
|
var cnParamList, dnParamList []polardbxv1.Params
|
|
var cnRestartParamList, dnRestartParamList []polardbxv1.Params
|
|
|
|
ginkgo.BeforeEach(func() {
|
|
cnParamTemplateList = []polardbxv1.TemplateParams{
|
|
{
|
|
Name: "CONN_POOL_BLOCK_TIMEOUT",
|
|
DefaultValue: "5000",
|
|
Mode: "readwrite",
|
|
Restart: false,
|
|
Unit: "INT",
|
|
DivisibilityFactor: 1,
|
|
Optional: "[1000-60000]",
|
|
},
|
|
{
|
|
Name: "ENABLE_COROUTINE",
|
|
DefaultValue: "false",
|
|
Mode: "readwrite",
|
|
Restart: true,
|
|
Unit: "STRING",
|
|
DivisibilityFactor: 1,
|
|
Optional: "[true|false]",
|
|
},
|
|
}
|
|
dnParamTemplateList = []polardbxv1.TemplateParams{
|
|
{
|
|
Name: "auto_increment_increment",
|
|
DefaultValue: "1",
|
|
Mode: "readwrite",
|
|
Restart: false,
|
|
Unit: "INT",
|
|
DivisibilityFactor: 1,
|
|
Optional: "[1-65535]",
|
|
},
|
|
{
|
|
Name: "back_log",
|
|
DefaultValue: "3000",
|
|
Mode: "readwrite",
|
|
Restart: true,
|
|
Unit: "INT",
|
|
DivisibilityFactor: 1,
|
|
Optional: "[0-65535]",
|
|
},
|
|
}
|
|
cnParamList = []polardbxv1.Params{
|
|
{
|
|
Name: "CONN_POOL_BLOCK_TIMEOUT",
|
|
Value: "10000",
|
|
},
|
|
}
|
|
dnParamList = []polardbxv1.Params{
|
|
{
|
|
Name: "auto_increment_increment",
|
|
Value: "10",
|
|
},
|
|
}
|
|
cnRestartParamList = []polardbxv1.Params{
|
|
//{
|
|
// Name: "ENABLE_COROUTINE",
|
|
// Value: intstr.IntOrString{Type: intstr.String, StrVal: "true"},
|
|
//},
|
|
{
|
|
Name: "CONN_POOL_BLOCK_TIMEOUT",
|
|
Value: "10000",
|
|
},
|
|
}
|
|
dnRestartParamList = []polardbxv1.Params{
|
|
{
|
|
Name: "back_log",
|
|
Value: "300",
|
|
},
|
|
}
|
|
})
|
|
|
|
ginkgo.It("parameter template", func() {
|
|
pxc := pxcframework.NewPolarDBXCluster(
|
|
"e2e-test-parameter-template",
|
|
f.Namespace,
|
|
pxcframework.ProtocolVersion(5),
|
|
pxcframework.ParameterTemplate("e2e-test-param-template"),
|
|
pxcframework.TopologyModeGuide("quick-start-paxos"),
|
|
)
|
|
pxpt := pxpframework.NewPolarDBXParameterTemplate(
|
|
"e2e-test-param-template",
|
|
pxc.Namespace,
|
|
pxpframework.SetTemplateNodeType("cn", cnParamTemplateList),
|
|
pxpframework.SetTemplateNodeType("dn", dnParamTemplateList),
|
|
)
|
|
|
|
// Always run clean up to make sure objects are cleaned.
|
|
defer pxcmanager.DeletePolarDBXClusterAndWaitUntilItDisappear(f, pxc, 1*time.Minute)
|
|
defer DeletePolarDBXParameterTemplateAndWaitUntilItDisappear(f, pxpt, 1*time.Minute)
|
|
|
|
// create parameter template
|
|
CreatePolarDBXParameterTemplate(f, pxpt, 1*time.Minute)
|
|
|
|
// Do create and verify.
|
|
pxcmanager.CreatePolarDBXClusterAndWaitUntilRunningOrFail(f, pxc, 10*time.Minute)
|
|
|
|
// Update object.
|
|
framework.ExpectNoError(f.Client.Get(f.Ctx, types.NamespacedName{
|
|
Name: pxc.Name, Namespace: f.Namespace,
|
|
}, pxc))
|
|
|
|
cnExpectedParams := make(map[string]string)
|
|
for _, p := range cnParamTemplateList {
|
|
cnExpectedParams[p.Name] = p.DefaultValue
|
|
}
|
|
dnExpectedParams := make(map[string]string)
|
|
for _, p := range dnParamTemplateList {
|
|
dnExpectedParams[p.Name] = p.DefaultValue
|
|
}
|
|
|
|
exp := pxcframework.NewExpectation(f, pxc)
|
|
exp.ExpectCNParameterPersistenceOk(cnExpectedParams)
|
|
exp.ExpectDNParameterPersistenceOk(dnExpectedParams, false)
|
|
})
|
|
|
|
ginkgo.It("read-write parameters", func() {
|
|
pxc := pxcframework.NewPolarDBXCluster(
|
|
"e2e-test-parameter-rw",
|
|
f.Namespace,
|
|
pxcframework.ProtocolVersion(5),
|
|
pxcframework.TopologyModeGuide("quick-start"),
|
|
pxcframework.ParameterTemplate("e2e-test-param-template-rw"),
|
|
)
|
|
pxp := pxpframework.NewPolarDBXParameter(
|
|
"e2e-test-param-rw",
|
|
pxc.Namespace,
|
|
pxpframework.SetLabel("parameter", "dynamic"),
|
|
pxpframework.SetTemplateNameAndClusterName("e2e-test-param-template-rw", pxc.Name),
|
|
pxpframework.SetNodeType("cn", "e2e-test-cn", pxpframework.RollingRestart, cnParamList),
|
|
pxpframework.SetNodeType("dn", "e2e-test-dn", pxpframework.RollingRestart, dnParamList),
|
|
)
|
|
pxpt := pxpframework.NewPolarDBXParameterTemplate(
|
|
"e2e-test-param-template-rw",
|
|
pxc.Namespace,
|
|
pxpframework.SetTemplateNodeType("cn", cnParamTemplateList),
|
|
pxpframework.SetTemplateNodeType("dn", dnParamTemplateList),
|
|
)
|
|
|
|
// Always run clean up to make sure objects are cleaned.
|
|
defer pxcmanager.DeletePolarDBXClusterAndWaitUntilItDisappear(f, pxc, 1*time.Minute)
|
|
defer DeletePolarDBXParameterAndWaitUntilItDisappear(f, pxp, 1*time.Minute)
|
|
defer DeletePolarDBXParameterTemplateAndWaitUntilItDisappear(f, pxpt, 1*time.Minute)
|
|
|
|
// create parameter template
|
|
CreatePolarDBXParameterTemplate(f, pxpt, 1*time.Minute)
|
|
|
|
// Do create and verify.
|
|
pxcmanager.CreatePolarDBXClusterAndWaitUntilRunningOrFail(f, pxc, 10*time.Minute)
|
|
|
|
// Update object.
|
|
framework.ExpectNoError(f.Client.Get(f.Ctx, types.NamespacedName{
|
|
Name: pxc.Name, Namespace: f.Namespace,
|
|
}, pxc))
|
|
|
|
// create dynamic parameter parameter
|
|
CreatePolarDBXParameterAndWaitUntilRunningOrFail(f, pxp, 5*time.Minute)
|
|
|
|
cnExpectedParams := make(map[string]string)
|
|
for _, p := range cnParamList {
|
|
cnExpectedParams[p.Name] = p.Value
|
|
}
|
|
dnExpectedParams := make(map[string]string)
|
|
for _, p := range dnParamList {
|
|
dnExpectedParams[p.Name] = p.Value
|
|
}
|
|
|
|
exp := pxcframework.NewExpectation(f, pxc)
|
|
exp.ExpectCNParameterPersistenceOk(cnExpectedParams)
|
|
exp.ExpectDNParameterPersistenceOk(dnExpectedParams, true)
|
|
})
|
|
|
|
ginkgo.It("restart parameters", func() {
|
|
pxc := pxcframework.NewPolarDBXCluster(
|
|
"e2e-test-parameter-restart",
|
|
f.Namespace,
|
|
pxcframework.ProtocolVersion(5),
|
|
pxcframework.TopologyModeGuide("quick-start-paxos"),
|
|
pxcframework.ParameterTemplate("e2e-test-param-template-restart"),
|
|
)
|
|
pxp := pxpframework.NewPolarDBXParameter(
|
|
"e2e-test-param-restart",
|
|
pxc.Namespace,
|
|
pxpframework.SetLabel("parameter", "dynamic"),
|
|
pxpframework.SetTemplateNameAndClusterName("e2e-test-param-template-restart", pxc.Name),
|
|
pxpframework.SetNodeType("cn", "e2e-test-cn", pxpframework.RollingRestart, cnRestartParamList),
|
|
pxpframework.SetNodeType("dn", "e2e-test-dn", pxpframework.RollingRestart, dnRestartParamList),
|
|
)
|
|
pxpt := pxpframework.NewPolarDBXParameterTemplate(
|
|
"e2e-test-param-template-restart",
|
|
pxc.Namespace,
|
|
pxpframework.SetTemplateNodeType("cn", cnParamTemplateList),
|
|
pxpframework.SetTemplateNodeType("dn", dnParamTemplateList),
|
|
)
|
|
|
|
// Always run clean up to make sure objects are cleaned.
|
|
defer pxcmanager.DeletePolarDBXClusterAndWaitUntilItDisappear(f, pxc, 1*time.Minute)
|
|
defer DeletePolarDBXParameterAndWaitUntilItDisappear(f, pxp, 1*time.Minute)
|
|
defer DeletePolarDBXParameterTemplateAndWaitUntilItDisappear(f, pxpt, 1*time.Minute)
|
|
|
|
// create parameter template
|
|
CreatePolarDBXParameterTemplate(f, pxpt, 1*time.Minute)
|
|
|
|
// Do create and verify.
|
|
pxcmanager.CreatePolarDBXClusterAndWaitUntilRunningOrFail(f, pxc, 10*time.Minute)
|
|
|
|
// Update object.
|
|
framework.ExpectNoError(f.Client.Get(f.Ctx, types.NamespacedName{
|
|
Name: pxc.Name, Namespace: f.Namespace,
|
|
}, pxc))
|
|
|
|
CreatePolarDBXParameterAndWaitUntilRunningOrFail(f, pxp, 5*time.Minute)
|
|
|
|
cnExpectedParams := make(map[string]string)
|
|
for _, p := range cnRestartParamList {
|
|
cnExpectedParams[p.Name] = p.Value
|
|
}
|
|
dnExpectedParams := make(map[string]string)
|
|
for _, p := range dnRestartParamList {
|
|
dnExpectedParams[p.Name] = p.Value
|
|
}
|
|
|
|
exp := pxcframework.NewExpectation(f, pxc)
|
|
exp.ExpectRestartOk(f.Client, pxc.Name, pxc.Namespace, 10*time.Minute)
|
|
exp.ExpectCNParameterPersistenceOk(cnExpectedParams)
|
|
exp.ExpectDNParameterPersistenceOk(dnExpectedParams, true)
|
|
})
|
|
|
|
})
|