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 authored Oct 17, 2024
1 parent d572b53 commit 8709864
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions tests/scalers/elasticsearch/elasticsearch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type templateData struct {
ElasticPasswordBase64 string
IndexName string
SearchTemplateName string
ElasticsearchQuery string
}

const (
Expand Down Expand Up @@ -232,6 +233,35 @@ spec:
name: keda-trigger-auth-elasticsearch-secret
`

scaledObjectTemplateWithQuery = `
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: {{.ScaledObjectName}}
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: {{ .ElasticsearchQuery }}
valueLocation: "hits.total.value"
targetValue: "1"
activationTargetValue: "4"
authenticationRef:
name: keda-trigger-auth-elasticsearch-secret
`

elasticsearchCreateIndex = `
{
"mappings": {
Expand Down Expand Up @@ -292,6 +322,34 @@ spec:
"dummy": 1,
"dumb": "oOooo"
}`

elasticsearchQuery = `
{
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "now-1m",
"lte": "now"
}
}
},
{
"term": {
"dummy": {{dummy_value}}
}
},
{
"term": {
"dumb": "test-value"
}
}
]
}
}
}`
)

func TestElasticsearchScaler(t *testing.T) {
Expand All @@ -316,6 +374,28 @@ func TestElasticsearchScaler(t *testing.T) {
testScaleIn(t, kc)
}

func TestElasticsearchScalerWithQuery(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)

// test scaling with query
testActivation(t, kc)
testScaleOut(t, kc)
testScaleIn(t, kc)
}

func setupElasticsearch(t *testing.T, kc *kubernetes.Clientset) {
require.True(t, WaitForStatefulsetReplicaReadyCount(t, kc, "elasticsearch", testNamespace, 1, 60, 3),
"elasticsearch should be up")
Expand Down Expand Up @@ -377,12 +457,14 @@ func getTemplateData() (templateData, []Template) {
ElasticPasswordBase64: base64.StdEncoding.EncodeToString([]byte(password)),
IndexName: indexName,
SearchTemplateName: searchTemplateName,
ElasticsearchQuery: elasticsearchQuery,
}, []Template{
{Name: "secretTemplate", Config: secretTemplate},
{Name: "triggerAuthenticationTemplate", Config: triggerAuthenticationTemplate},
{Name: "serviceTemplate", Config: serviceTemplate},
{Name: "elasticsearchDeploymentTemplate", Config: elasticsearchDeploymentTemplate},
{Name: "deploymentTemplate", Config: deploymentTemplate},
{Name: "scaledObjectTemplate", Config: scaledObjectTemplate},
{Name: "scaledObjectTemplateWithQuery", Config: scaledObjectTemplateWithQuery},
}
}

0 comments on commit 8709864

Please sign in to comment.