Skip to content

Commit

Permalink
Add elasticsearch query at e2e test
Browse files Browse the repository at this point in the history
Signed-off-by: rickbrouwer <[email protected]>
  • Loading branch information
rickbrouwer committed Oct 17, 2024
1 parent d572b53 commit 41eea52
Showing 1 changed file with 83 additions and 17 deletions.
100 changes: 83 additions & 17 deletions tests/scalers/elasticsearch/elasticsearch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,11 @@ spec:
name: elasticsearch
`

scaledObjectTemplate = `
scaledObjectTemplateSearchTemplate = `
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: {{.ScaledObjectName}}
name: elasticsearch-test-so
namespace: {{.TestNamespace}}
labels:
app: {{.DeploymentName}}
Expand All @@ -232,6 +232,61 @@ spec:
name: keda-trigger-auth-elasticsearch-secret
`

scaledObjectTemplateQuery = `
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: elasticsearch-test-so
namespace: {{.TestNamespace}}
labels:
app: {{.DeploymentName}}
spec:
scaleTargetRef:
name: {{.DeploymentName}}
minReplicaCount: 0
maxReplicaCount: 2
pollingInterval: 3
cooldownPeriod: 5
triggers:
- type: elasticsearch
metadata:
addresses: "http://{{.DeploymentName}}.{{.TestNamespace}}.svc:9200"
username: "elastic"
index: {{.IndexName}}
query: |
{
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-1m",
"lte": "now"
}
}
},
{
"term": {
"dummy": "{{dummy_value}}"
}
},
{
"term": {
"dumb": "{{dumb_value}}"
}
}
]
}
}
}
valueLocation: "hits.total.value"
targetValue: "1"
activationTargetValue: "4"
authenticationRef:
name: keda-trigger-auth-elasticsearch-secret
`

elasticsearchCreateIndex = `
{
"mappings": {
Expand Down Expand Up @@ -297,23 +352,39 @@ spec:
func TestElasticsearchScaler(t *testing.T) {
kc := GetKubernetesClient(t)
data, templates := getTemplateData()
t.Cleanup(func() {
DeleteKubernetesResources(t, testNamespace, data, templates)
})

// Create kubernetes resources
CreateKubernetesResources(t, kc, testNamespace, data, templates)

// setup elastic
setupElasticsearch(t, kc)

assert.True(t, WaitForDeploymentReplicaReadyCount(t, kc, deploymentName, testNamespace, minReplicaCount, 60, 3),
"replica count should be %d after 3 minutes", minReplicaCount)
t.Run("test with searchTemplateName", func(t *testing.T) {
t.Log("--- testing with searchTemplateName ---")

// Create ScaledObject with searchTemplateName
KubectlApplyWithTemplate(t, data, "scaledObjectTemplateSearchTemplate", scaledObjectTemplateSearchTemplate)

testElasticsearchScaler(t, kc)

// Delete ScaledObject
KubectlDeleteWithTemplate(t, data, "scaledObjectTemplateSearchTemplate", scaledObjectTemplateSearchTemplate)
})

t.Run("test with query", func(t *testing.T) {
t.Log("--- testing with query ---")

// Create ScaledObject with query
KubectlApplyWithTemplate(t, data, "scaledObjectTemplateQuery", scaledObjectTemplateQuery)

// test scaling
testActivation(t, kc)
testScaleOut(t, kc)
testScaleIn(t, kc)
testElasticsearchScaler(t, kc)

// Delete ScaledObject
KubectlDeleteWithTemplate(t, data, "scaledObjectTemplateQuery", scaledObjectTemplateQuery)
})

// cleanup
DeleteKubernetesResources(t, testNamespace, data, templates)
}

func setupElasticsearch(t *testing.T, kc *kubernetes.Clientset) {
Expand All @@ -326,22 +397,18 @@ func setupElasticsearch(t *testing.T, kc *kubernetes.Clientset) {
require.NoErrorf(t, err, "cannot execute command - %s", err)
}

func testActivation(t *testing.T, kc *kubernetes.Clientset) {
func testElasticsearchScaler(t *testing.T, kc *kubernetes.Clientset) {
t.Log("--- testing activation ---")
addElements(t, 3)

AssertReplicaCountNotChangeDuringTimePeriod(t, kc, deploymentName, testNamespace, minReplicaCount, 60)
}

func testScaleOut(t *testing.T, kc *kubernetes.Clientset) {
t.Log("--- testing scale out ---")
addElements(t, 5)

assert.True(t, WaitForDeploymentReplicaReadyCount(t, kc, deploymentName, testNamespace, maxReplicaCount, 60, 3),
"replica count should be %d after 3 minutes", maxReplicaCount)
}

func testScaleIn(t *testing.T, kc *kubernetes.Clientset) {
t.Log("--- testing scale in ---")

assert.True(t, WaitForDeploymentReplicaReadyCount(t, kc, deploymentName, testNamespace, minReplicaCount, 60, 3),
Expand Down Expand Up @@ -383,6 +450,5 @@ func getTemplateData() (templateData, []Template) {
{Name: "serviceTemplate", Config: serviceTemplate},
{Name: "elasticsearchDeploymentTemplate", Config: elasticsearchDeploymentTemplate},
{Name: "deploymentTemplate", Config: deploymentTemplate},
{Name: "scaledObjectTemplate", Config: scaledObjectTemplate},
}
}

0 comments on commit 41eea52

Please sign in to comment.