Skip to content

Commit

Permalink
Modify concurrency test to consider multitenant / concurrent updatePr…
Browse files Browse the repository at this point in the history
…ocessors calls
  • Loading branch information
Koenraad Verheyden committed Aug 16, 2023
1 parent bc3f543 commit 32bd393
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions modules/generator/instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,17 @@ import (
)

func Test_instance_concurrency(t *testing.T) {
// But instances use the same overrides, this map will be accessed by both
overrides := &mockOverrides{}
instance, err := newInstance(&Config{}, "test", overrides, &noopStorage{}, prometheus.DefaultRegisterer, log.NewNopLogger(), nil)
overrides.processors = map[string]struct{}{
spanmetrics.Name: {},
servicegraphs.Name: {},
}

instance1, err := newInstance(&Config{}, "test", overrides, &noopStorage{}, prometheus.DefaultRegisterer, log.NewNopLogger(), nil)
assert.NoError(t, err)

instance2, err := newInstance(&Config{}, "test", overrides, &noopStorage{}, prometheus.DefaultRegisterer, log.NewNopLogger(), nil)
assert.NoError(t, err)

end := make(chan struct{})
Expand All @@ -44,26 +53,28 @@ func Test_instance_concurrency(t *testing.T) {

go accessor(func() {
req := test.MakeBatch(1, nil)
instance.pushSpans(context.Background(), &tempopb.PushSpansRequest{Batches: []*v1.ResourceSpans{req}})
instance1.pushSpans(context.Background(), &tempopb.PushSpansRequest{Batches: []*v1.ResourceSpans{req}})
})

go accessor(func() {
overrides.processors = map[string]struct{}{
"span-metrics": {},
}
err := instance.updateProcessors()
req := test.MakeBatch(1, nil)
instance2.pushSpans(context.Background(), &tempopb.PushSpansRequest{Batches: []*v1.ResourceSpans{req}})
})

go accessor(func() {
err := instance1.updateProcessors()
assert.NoError(t, err)
})

overrides.processors = map[string]struct{}{
"service-graphs": {},
}
err = instance.updateProcessors()
go accessor(func() {
err := instance2.updateProcessors()
assert.NoError(t, err)
})

time.Sleep(100 * time.Millisecond)

instance.shutdown()
instance1.shutdown()
instance2.shutdown()

time.Sleep(10 * time.Millisecond)
close(end)
Expand Down

0 comments on commit 32bd393

Please sign in to comment.