Skip to content

Commit

Permalink
Made changes to the esmapping-generator/main.go and tests
Browse files Browse the repository at this point in the history
Signed-off-by: Rohanraj123 <[email protected]>
  • Loading branch information
Rohanraj123 committed Jan 18, 2025
1 parent 7ae6c2e commit ea7a0e4
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 436 deletions.
236 changes: 20 additions & 216 deletions cmd/esmapping-generator/generator/esmapping_generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,21 @@
package generator

import (
"encoding/json"
"testing"

"github.com/crossdock/crossdock-go/assert"
"github.com/crossdock/crossdock-go/require"

"github.com/jaegertracing/jaeger/cmd/esmapping-generator/app"
"github.com/jaegertracing/jaeger/pkg/testutils"
)

func TestGenerateMappings(t *testing.T) {
tests := []struct {
name string
options app.Options
expected string
expectError bool
name string
options app.Options
expectErr bool
}{
{
name: "valid jaeger-span mapping",
Expand All @@ -30,163 +31,7 @@ func TestGenerateMappings(t *testing.T) {
UseILM: "false",
ILMPolicyName: "jaeger-ilm-policy",
},
expected: `{
"index_patterns": "*jaeger-index-jaeger-span-*",
"settings": {
"index.number_of_shards": 5,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit": 50,
"index.requests.cache.enable": true
},
"mappings": {
"dynamic_templates": [
{
"span_tags_map": {
"mapping": {
"type": "keyword",
"ignore_above": 256
},
"path_match": "tag.*"
}
},
{
"process_tags_map": {
"mapping": {
"type": "keyword",
"ignore_above": 256
},
"path_match": "process.tag.*"
}
}
],
"properties": {
"traceID": {
"type": "keyword",
"ignore_above": 256
},
"parentSpanID": {
"type": "keyword",
"ignore_above": 256
},
"spanID": {
"type": "keyword",
"ignore_above": 256
},
"operationName": {
"type": "keyword",
"ignore_above": 256
},
"startTime": {
"type": "long"
},
"startTimeMillis": {
"type": "date",
"format": "epoch_millis"
},
"duration": {
"type": "long"
},
"flags": {
"type": "integer"
},
"logs": {
"type": "nested",
"dynamic": false,
"properties": {
"timestamp": {
"type": "long"
},
"fields": {
"type": "nested",
"dynamic": false,
"properties": {
"key": {
"type": "keyword",
"ignore_above": 256
},
"value": {
"type": "keyword",
"ignore_above": 256
},
"type": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"process": {
"properties": {
"serviceName": {
"type": "keyword",
"ignore_above": 256
},
"tag": {
"type": "object"
},
"tags": {
"type": "nested",
"dynamic": false,
"properties": {
"key": {
"type": "keyword",
"ignore_above": 256
},
"value": {
"type": "keyword",
"ignore_above": 256
},
"type": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"references": {
"type": "nested",
"dynamic": false,
"properties": {
"refType": {
"type": "keyword",
"ignore_above": 256
},
"traceID": {
"type": "keyword",
"ignore_above": 256
},
"spanID": {
"type": "keyword",
"ignore_above": 256
}
}
},
"tag": {
"type": "object"
},
"tags": {
"type": "nested",
"dynamic": false,
"properties": {
"key": {
"type": "keyword",
"ignore_above": 256
},
"value": {
"type": "keyword",
"ignore_above": 256
},
"type": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}`,
expectErr: false,
},
{
name: "valid jaeger-service mapping",
Expand All @@ -199,80 +44,39 @@ func TestGenerateMappings(t *testing.T) {
UseILM: "true",
ILMPolicyName: "service-ilm-policy",
},
expected: `{
"index_patterns": "*jaeger-service-index-jaeger-service-*",
"aliases": {
"jaeger-service-index-jaeger-service-read" : {}
},
"settings":{
"index.number_of_shards": 5,
"index.number_of_replicas": 1,
"index.mapping.nested_fields.limit":50,
"index.requests.cache.enable":true,
"lifecycle": {
"name": "service-ilm-policy",
"rollover_alias": "jaeger-service-index-jaeger-service-write"
}
},
"mappings":{
"dynamic_templates":[
{
"span_tags_map":{
"mapping":{
"type":"keyword",
"ignore_above":256
},
"path_match":"tag.*"
}
},
{
"process_tags_map":{
"mapping":{
"type":"keyword",
"ignore_above":256
},
"path_match":"process.tag.*"
}
}
],
"properties":{
"serviceName":{
"type":"keyword",
"ignore_above":256
},
"operationName":{
"type":"keyword",
"ignore_above":256
}
}
}
}`,
expectErr: false,
},
{
name: "invalid mapping type",
options: app.Options{
Mapping: "invalid-mapping",
},
expected: "please pass either 'jaeger-service' or 'jaeger-span' as argument",
expectError: true,
expectErr: true,
},
{
name: "missing mapping flag",
options: app.Options{
Mapping: "",
},
expected: "please pass either 'jaeger-service' or 'jaeger-span' as argument",
expectError: true,
expectErr: true,
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result, err := GenerateMappings(tt.options)
if tt.expectError {
assert.Error(t, err, "Expected an error")
if tt.expectErr {
require.Error(t, err, "Expected an error")
} else {
assert.JSONEq(t, tt.expected, result, "Expected the correct mapping result")
require.NoError(t, err, "Did not expect an error")

var parsed map[string]interface{}
err = json.Unmarshal([]byte(result), &parsed)
require.NoError(t, err, "Expected valid JSON output")

assert.NotEmpty(t, parsed["index_patterns"], "Expected index_patterns to be present")
assert.NotEmpty(t, parsed["mappings"], "Expected mappings to be present")
assert.NotEmpty(t, parsed["settings"], "Expected settings to be present")
}
})
}
Expand Down
14 changes: 2 additions & 12 deletions cmd/esmapping-generator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import (
"fmt"
"os"

"github.com/spf13/cobra"

"github.com/jaegertracing/jaeger/cmd/esmapping-generator/app"
"github.com/jaegertracing/jaeger/internal/esmapping"
"github.com/jaegertracing/jaeger/pkg/version"
Expand All @@ -17,17 +15,9 @@ import (
func main() {
options := app.Options{}
esmappingsCmd := esmapping.Command(options)
esmappingsCmd.AddCommand(version.Command())

rootCmd := &cobra.Command{
Use: "jaeger-esmapping-generator",
Short: "Jaeger Elasticsearch mapping generator",
}

esmappingsCmd.Use = rootCmd.Use
rootCmd.AddCommand(esmappingsCmd)
rootCmd.AddCommand(version.Command())

if err := rootCmd.Execute(); err != nil {
if err := esmappingsCmd.Execute(); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
Expand Down
6 changes: 3 additions & 3 deletions internal/esmapping/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ import (

func Command(options app.Options) *cobra.Command {
command := &cobra.Command{
Use: "es-mappings",
Short: "Generate Elasticsearch mappings",
Long: "Generate Elasticsearch mappings using jaeger-esmapping-generator functionality",
Use: "jaeger-esmapping-generator",
Short: "Jaeger esmapping-generator prints rendered mappings as string",
Long: "Jaeger esmapping-generator renders passed templates with provided values and prints rendered output to stdout",
Run: func(_ *cobra.Command, _ /* args */ []string) {
result, err := generator.GenerateMappings(options)
if err != nil {
Expand Down
Loading

0 comments on commit ea7a0e4

Please sign in to comment.