Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use ES7 index mapping files for ES8 and higher too #3572

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/ci-elasticsearch.yml
Expand Up @@ -22,6 +22,9 @@ jobs:
- major: 7.x
image: 7.14.0
distribution: elasticsearch
- major: 8.x
image: 8.1.0
distribution: elasticsearch
name: ${{ matrix.version.distribution }} ${{ matrix.version.major }}
steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion plugin/storage/es/mappings/mapping.go
Expand Up @@ -39,7 +39,7 @@ type MappingBuilder struct {

// GetMapping returns the rendered mapping based on elasticsearch version
func (mb *MappingBuilder) GetMapping(mapping string) (string, error) {
if mb.EsVersion == 7 {
if mb.EsVersion >= 7 {
return mb.fixMapping(mapping + "-7.json")
}
return mb.fixMapping(mapping + ".json")
Expand Down
116 changes: 107 additions & 9 deletions plugin/storage/es/mappings/mapping_test.go
Expand Up @@ -38,10 +38,13 @@ func TestMappingBuilder_GetMapping(t *testing.T) {
mapping string
esVersion uint
}{
{mapping: "jaeger-span", esVersion: 8},
{mapping: "jaeger-span", esVersion: 7},
{mapping: "jaeger-span", esVersion: 6},
{mapping: "jaeger-service", esVersion: 8},
{mapping: "jaeger-service", esVersion: 7},
{mapping: "jaeger-service", esVersion: 6},
{mapping: "jaeger-dependencies", esVersion: 8},
{mapping: "jaeger-dependencies", esVersion: 7},
{mapping: "jaeger-dependencies", esVersion: 6},
}
Expand All @@ -59,7 +62,7 @@ func TestMappingBuilder_GetMapping(t *testing.T) {
got, err := mb.GetMapping(tt.mapping)
require.NoError(t, err)
var wantbytes []byte
if tt.esVersion == 7 {
if tt.esVersion == 7 || tt.esVersion == 8 {
wantbytes, err = FIXTURES.ReadFile("fixtures/" + tt.mapping + "-7.json")
require.NoError(t, err)
} else {
Expand Down Expand Up @@ -100,37 +103,75 @@ func TestMappingBuilder_fixMapping(t *testing.T) {
name string
templateBuilderMockFunc func() *mocks.TemplateBuilder
err string
esVersion uint
}{
{
name: "templateRenderSuccess",
name: "templateRenderSuccess-7",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(nil)
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "",
err: "",
esVersion: 7,
},
{
name: "templateRenderFailure",
name: "templateRenderFailure-7",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(errors.New("template exec error"))
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "template exec error",
err: "template exec error",
esVersion: 7,
},
{
name: "templateLoadError",
name: "templateLoadError-7",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
tb.On("Parse", mock.Anything).Return(nil, errors.New("template load error"))
return &tb
},
err: "template load error",
err: "template load error",
esVersion: 7,
},
{
name: "templateRenderSuccess-8",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(nil)
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "",
esVersion: 8,
},
{
name: "templateRenderFailure-8",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(errors.New("template exec error"))
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "template exec error",
esVersion: 8,
},
{
name: "templateLoadError-8",
templateBuilderMockFunc: func() *mocks.TemplateBuilder {
tb := mocks.TemplateBuilder{}
tb.On("Parse", mock.Anything).Return(nil, errors.New("template load error"))
return &tb
},
err: "template load error",
esVersion: 8,
},
}

Expand All @@ -140,7 +181,7 @@ func TestMappingBuilder_fixMapping(t *testing.T) {
TemplateBuilder: test.templateBuilderMockFunc(),
Shards: 3,
Replicas: 5,
EsVersion: 7,
EsVersion: test.esVersion,
IndexPrefix: "test",
UseILM: true,
ILMPolicyName: "jaeger-test-policy",
Expand All @@ -151,7 +192,6 @@ func TestMappingBuilder_fixMapping(t *testing.T) {
} else {
assert.NoError(t, err)
}

})
}
}
Expand Down Expand Up @@ -288,6 +328,64 @@ func TestMappingBuilder_GetSpanServiceMappings(t *testing.T) {
},
err: "template load error",
},
{
name: "ES Version 8",
args: args{
shards: 3,
replicas: 3,
esVersion: 8,
indexPrefix: "test",
useILM: true,
ilmPolicyName: "jaeger-test-policy",
},
mockNewTextTemplateBuilder: func() es.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(nil)
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "",
},
{
name: "ES Version 8 Service Error",
args: args{
shards: 3,
replicas: 3,
esVersion: 8,
indexPrefix: "test",
useILM: true,
ilmPolicyName: "jaeger-test-policy",
},
mockNewTextTemplateBuilder: func() es.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(nil).Once()
ta.On("Execute", mock.Anything, mock.Anything).Return(errors.New("template load error")).Once()
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "template load error",
},
{
name: "ES Version 8 Span Error",
args: args{
shards: 3,
replicas: 3,
esVersion: 8,
indexPrefix: "test",
useILM: true,
ilmPolicyName: "jaeger-test-policy",
},
mockNewTextTemplateBuilder: func() es.TemplateBuilder {
tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(errors.New("template load error")).Once()
tb.On("Parse", mock.Anything).Return(&ta, nil)
return &tb
},
err: "template load error",
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
Expand Down
6 changes: 5 additions & 1 deletion scripts/es-integration-test.sh
Expand Up @@ -24,8 +24,12 @@ setup_es() {
--env "http.host=0.0.0.0"
--env "transport.host=127.0.0.1"
--env "xpack.security.enabled=false"
--env "xpack.monitoring.enabled=false"
)
if [ ${1:0:1} = "8" ]; then
params+=(--env "xpack.monitoring.templates.enabled=false")
else
params+=(--env "xpack.monitoring.enabled=false")
fi
local cid=$(docker run ${params[@]} ${image}:${tag})
echo ${cid}
}
Expand Down