Skip to content

Commit 78f3cc0

Browse files
Moved jaeger/prometheus check logic into reporters and added iterator utils
Signed-off-by: Alexandros Filios <[email protected]>
1 parent fe1fe9e commit 78f3cc0

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

integration/fabric/iou/commands.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func CheckJaegerTraces(ii *integration.Infrastructure, nodeName, viewName string
9494
it, err := cli.FindTraces(nodeName, viewName)
9595
gomega.Expect(err).NotTo(gomega.HaveOccurred())
9696

97-
spans, err := iterators.ReadAllPointers(iterators.Flatten(it, func(c *api_v2.SpansResponseChunk) ([]model2.Span, error) { return c.Spans, nil }))
97+
spans, err := iterators.ReadAllPointers(iterators.FlattenValues(it, func(c *api_v2.SpansResponseChunk) ([]model2.Span, error) { return c.Spans, nil }))
9898

9999
gomega.Expect(err).NotTo(gomega.HaveOccurred())
100100
logger.Infof("Received jaeger %d spans for [%s:%s]: %s", len(spans), nodeName, viewName, spans)
@@ -117,5 +117,5 @@ func CheckPrometheusMetrics(ii *integration.Infrastructure, viewName string) {
117117
gomega.Expect(err).To(gomega.BeNil())
118118
ops, err := cli.GetViewOperations("", viewName)
119119
gomega.Expect(err).ToNot(gomega.HaveOccurred())
120-
gomega.Expect(ops).To(gomega.Equal(1))
120+
gomega.Expect(ops).To(gomega.Equal(2))
121121
}

platform/common/utils/collections/iterators/flatten.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ import (
1313

1414
// Flatten flattens a nested iterator
1515
func Flatten[A any, B any](iterator Iterator[A], transformer Transformer[A, []B]) Iterator[B] {
16-
return &flattened[A, B]{Iterator: iterator, transformer: transformer, remaining: []B{}}
16+
return &flattenedPointers[A, B]{Iterator: iterator, transformer: transformer, remaining: []B{}}
1717
}
1818

19-
type flattened[A any, B any] struct {
19+
type flattenedPointers[A any, B any] struct {
2020
Iterator[A]
2121
transformer func(A) ([]B, error)
2222
remaining []B
2323
}
2424

25-
func (it *flattened[A, B]) Next() (B, error) {
25+
func (it *flattenedPointers[A, B]) Next() (B, error) {
2626
if len(it.remaining) > 0 {
2727
n := it.remaining[0]
2828
it.remaining = it.remaining[1:]
@@ -40,3 +40,31 @@ func (it *flattened[A, B]) Next() (B, error) {
4040
return next[0], nil
4141
}
4242
}
43+
func FlattenValues[A any, B any](iterator Iterator[A], transformer Transformer[A, []B]) Iterator[*B] {
44+
return &flattenedValues[A, B]{Iterator: iterator, transformer: transformer, remaining: []B{}}
45+
}
46+
47+
type flattenedValues[A any, B any] struct {
48+
Iterator[A]
49+
transformer func(A) ([]B, error)
50+
remaining []B
51+
}
52+
53+
func (it *flattenedValues[A, B]) Next() (*B, error) {
54+
if len(it.remaining) > 0 {
55+
n := it.remaining[0]
56+
it.remaining = it.remaining[1:]
57+
return &n, nil
58+
} else if next, err := it.Iterator.Next(); err != nil {
59+
return nil, errors.Wrapf(err, "failed fetching")
60+
} else if utils.IsNil(next) {
61+
return nil, nil
62+
} else if next, err := it.transformer(next); err != nil {
63+
return nil, errors.Wrapf(err, "failed transforming")
64+
} else if len(next) == 0 {
65+
return nil, nil
66+
} else {
67+
it.remaining = next[1:]
68+
return &next[0], nil
69+
}
70+
}

0 commit comments

Comments
 (0)