Skip to content

Commit

Permalink
Include simple e2e test to test searching (#978)
Browse files Browse the repository at this point in the history
* Include simple e2e test to test searching

* Include further API client use

* Move TraceInfo struct to util package

* Adjust client to allow caller response handling

* Leverage TraceInfo for e2e tests
  • Loading branch information
zalegrala authored Oct 1, 2021
1 parent 5ab55db commit 6e94c1f
Show file tree
Hide file tree
Showing 11 changed files with 569 additions and 409 deletions.
288 changes: 43 additions & 245 deletions cmd/tempo-vulture/main.go

Large diffs are not rendered by default.

129 changes: 12 additions & 117 deletions cmd/tempo-vulture/main_test.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package main

import (
"math/rand"
"os"
"strings"
"testing"
"time"

"github.com/go-test/deep"
"github.com/gogo/protobuf/jsonpb"
"github.com/grafana/tempo/pkg/tempopb"
v1 "github.com/grafana/tempo/pkg/tempopb/trace/v1"
thrift "github.com/jaegertracing/jaeger/thrift-gen/jaeger"
"github.com/grafana/tempo/pkg/util"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -67,99 +65,6 @@ func TestHasMissingSpans(t *testing.T) {
}
}

func TestGenerateRandomInt(t *testing.T) {
r := rand.New(rand.NewSource(1))

cases := []struct {
min int64
max int64
result int64
}{
{
min: 1,
max: 5,
result: 4,
},
{
min: 10,
max: 50,
result: 33,
},
{
min: 1,
max: 3,
result: 2,
},
}

for _, tc := range cases {
result := generateRandomInt(tc.min, tc.max, r)
require.Equal(t, tc.result, result)
}
}

func TestGenerateRandomString(t *testing.T) {
r := rand.New(rand.NewSource(1))

strings := []string{
"VlBzgbaiCMRAjWwhTH",
}

for _, s := range strings {
result := generateRandomString(r)
require.Equal(t, s, result)
}
}

func TestGenerateRandomTags(t *testing.T) {
r := rand.New(rand.NewSource(1))

result := generateRandomTags(r)

for _, k := range result {
assertStandardVultureKey(t, k)
}
}

func TestGenerateRandomLogs(t *testing.T) {
now := time.Now()
r := rand.New(rand.NewSource(1))
result := generateRandomLogs(r, now)

for _, l := range result {
require.NotNil(t, l.Timestamp)
for _, f := range l.Fields {
assertStandardVultureKey(t, f)
}
}
}

func TestNewRand(t *testing.T) {
now := time.Now()

r1 := newRand(now)
r2 := newRand(now)
r3 := newRand(now)
r4 := newRand(now)

for _, x := range []*rand.Rand{r1, r2, r3, r4} {
x.Int63()
x.Int63()
x.Int63()
x.Int63()
generateRandomString(x)
generateRandomString(x)
generateRandomString(x)
generateRandomString(x)
generateRandomString(x)
}

v := generateRandomString(r1)
for _, x := range []*rand.Rand{r2, r3, r4} {
require.Equal(t, v, generateRandomString(x))
}
}

func TestResponseFixture(t *testing.T) {
f, err := os.Open("testdata/trace.json")
require.NoError(t, err)
Expand All @@ -170,7 +75,10 @@ func TestResponseFixture(t *testing.T) {
require.NoError(t, err)

seed := time.Unix(1632146180, 0)
expected := constructTraceFromEpoch(seed)
info := util.NewTraceInfo(seed, "")

expected, err := info.ConstructTraceFromEpoch()
require.NoError(t, err)

assert.True(t, equalTraces(expected, response))

Expand All @@ -183,26 +91,13 @@ func TestResponseFixture(t *testing.T) {

func TestEqualTraces(t *testing.T) {
seed := time.Now()
a := constructTraceFromEpoch(seed)
b := constructTraceFromEpoch(seed)
require.True(t, equalTraces(a, b))
}

func TestTraceInfo(t *testing.T) {
seed := time.Unix(1632146180, 0)
info := newTraceInfo(seed)
assert.False(t, info.ready(seed))
assert.False(t, info.ready(seed.Add(tempoLongWriteBackoffDuration)))
assert.False(t, info.ready(seed.Add(tempoLongWriteBackoffDuration).Add(1*time.Second)))
assert.True(t, info.ready(seed.Add(2*tempoLongWriteBackoffDuration)))
}
info1 := util.NewTraceInfo(seed, "")
info2 := util.NewTraceInfo(seed, "")

func assertStandardVultureKey(t *testing.T, tag *thrift.Tag) {
if !strings.HasPrefix(tag.Key, "vulture-") {
t.Errorf("prefix vulture- is wanted, have: %s", tag.Key)
}
a, err := info1.ConstructTraceFromEpoch()
require.NoError(t, err)
b, err := info2.ConstructTraceFromEpoch()
require.NoError(t, err)

require.NotNil(t, tag.VStr)
require.GreaterOrEqual(t, len(tag.VType.String()), 5)
require.LessOrEqual(t, len(tag.VType.String()), 20)
require.True(t, equalTraces(a, b))
}
2 changes: 2 additions & 0 deletions integration/e2e/config-all-in-one-azurite.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
search_enabled: true

target: all

server:
Expand Down
2 changes: 2 additions & 0 deletions integration/e2e/config-all-in-one-gcs.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
search_enabled: true

target: all

server:
Expand Down
2 changes: 2 additions & 0 deletions integration/e2e/config-all-in-one-s3.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
search_enabled: true

target: all

server:
Expand Down
4 changes: 3 additions & 1 deletion integration/e2e/config-microservices.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
search_enabled: true

server:
http_listen_port: 3200

Expand Down Expand Up @@ -45,4 +47,4 @@ memberlist:

querier:
frontend_worker:
frontend_address: tempo_e2e-query-frontend:9095
frontend_address: tempo_e2e-query-frontend:9095
Loading

0 comments on commit 6e94c1f

Please sign in to comment.