Skip to content

Commit 457f17a

Browse files
committed
fix: tests, remove prometheus client
1 parent b8496f9 commit 457f17a

File tree

4 files changed

+112
-67
lines changed

4 files changed

+112
-67
lines changed

go.mod

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ require (
2121
github.com/hashicorp/go-retryablehttp v0.7.8
2222
github.com/invopop/jsonschema v0.13.0
2323
github.com/mitchellh/hashstructure/v2 v2.0.2
24-
github.com/prometheus/client_golang v1.22.0
2524
github.com/rs/zerolog v1.34.0
2625
github.com/samber/lo v1.49.1
2726
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2
@@ -33,7 +32,6 @@ require (
3332
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.36.0
3433
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0
3534
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0
36-
go.opentelemetry.io/otel/exporters/prometheus v0.58.0
3735
go.opentelemetry.io/otel/log v0.12.2
3836
go.opentelemetry.io/otel/metric v1.36.0
3937
go.opentelemetry.io/otel/sdk v1.36.0
@@ -64,10 +62,8 @@ require (
6462
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect
6563
github.com/aws/smithy-go v1.22.4 // indirect
6664
github.com/bahlo/generic-list-go v0.2.0 // indirect
67-
github.com/beorn7/perks v1.0.1 // indirect
6865
github.com/buger/jsonparser v1.1.1 // indirect
6966
github.com/cenkalti/backoff/v5 v5.0.2 // indirect
70-
github.com/cespare/xxhash/v2 v2.3.0 // indirect
7167
github.com/davecgh/go-spew v1.1.1 // indirect
7268
github.com/ghodss/yaml v1.0.0 // indirect
7369
github.com/go-logr/logr v1.4.2 // indirect
@@ -81,13 +77,9 @@ require (
8177
github.com/mailru/easyjson v0.7.7 // indirect
8278
github.com/mattn/go-colorable v0.1.13 // indirect
8379
github.com/mattn/go-isatty v0.0.20 // indirect
84-
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
8580
github.com/oapi-codegen/runtime v1.1.1 // indirect
8681
github.com/pierrec/lz4/v4 v4.1.22 // indirect
8782
github.com/pmezard/go-difflib v1.0.0 // indirect
88-
github.com/prometheus/client_model v0.6.2 // indirect
89-
github.com/prometheus/common v0.64.0 // indirect
90-
github.com/prometheus/procfs v0.16.1 // indirect
9183
github.com/spf13/pflag v1.0.6 // indirect
9284
github.com/stoewer/go-strcase v1.3.0 // indirect
9385
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect

go.sum

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
4343
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
4444
github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
4545
github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
46-
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
47-
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
4846
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
4947
github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=
5048
github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
@@ -117,8 +115,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
117115
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
118116
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
119117
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
120-
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
121-
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
122118
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
123119
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
124120
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
@@ -133,23 +129,13 @@ github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8D
133129
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
134130
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
135131
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
136-
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
137-
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
138132
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
139133
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
140134
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
141135
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
142136
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
143137
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
144138
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
145-
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
146-
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
147-
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
148-
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
149-
github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4=
150-
github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
151-
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
152-
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
153139
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
154140
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
155141
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
@@ -200,8 +186,6 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9
200186
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0=
201187
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0 h1:nRVXXvf78e00EwY6Wp0YII8ww2JVWshZ20HfTlE11AM=
202188
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.36.0/go.mod h1:r49hO7CgrxY9Voaj3Xe8pANWtr0Oq916d0XAmOoCZAQ=
203-
go.opentelemetry.io/otel/exporters/prometheus v0.58.0 h1:CJAxWKFIqdBennqxJyOgnt5LqkeFRT+Mz3Yjz3hL+h8=
204-
go.opentelemetry.io/otel/exporters/prometheus v0.58.0/go.mod h1:7qo/4CLI+zYSNbv0GMNquzuss2FVZo3OYrGh96n4HNc=
205189
go.opentelemetry.io/otel/log v0.12.2 h1:yob9JVHn2ZY24byZeaXpTVoPS6l+UrrxmxmPKohXTwc=
206190
go.opentelemetry.io/otel/log v0.12.2/go.mod h1:ShIItIxSYxufUMt+1H5a2wbckGli3/iCfuEbVZi/98E=
207191
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=

scheduler/metrics/metrics_test.go

Lines changed: 112 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,120 @@
11
package metrics
22

3-
import "testing"
3+
import (
4+
"testing"
5+
"time"
6+
7+
"github.com/stretchr/testify/require"
8+
)
49

510
func TestMetrics(t *testing.T) {
6-
s := NewMetrics("test_invocation_id")
7-
s.TableClient["test_table"] = make(map[string]*tableClientMetrics)
8-
s.TableClient["test_table"]["testExecutionClient"] = &tableClientMetrics{
9-
resources: 1,
10-
errors: 2,
11-
panics: 3,
12-
}
13-
if s.TotalResources() != 1 {
14-
t.Fatal("expected 1 resource")
15-
}
16-
if s.TotalErrors() != 2 {
17-
t.Fatal("expected 2 error")
18-
}
19-
if s.TotalPanics() != 3 {
20-
t.Fatal("expected 3 panics")
21-
}
11+
m := NewMetrics("test_invocation_id")
2212

23-
other := NewMetrics("test_invocation_id")
24-
other.TableClient["test_table"] = make(map[string]*tableClientMetrics)
25-
other.TableClient["test_table"]["testExecutionClient"] = &tableClientMetrics{
26-
resources: 1,
27-
errors: 2,
28-
panics: 3,
13+
m.measurements["test_table_1"] = tableMeasurements{
14+
clients: map[string]*measurement{
15+
"test_client_1": {duration: &durationMeasurement{}},
16+
"test_client_2": {duration: &durationMeasurement{}},
17+
},
18+
duration: &durationMeasurement{},
2919
}
30-
if !s.Equal(other) {
31-
t.Fatal("expected metrics to be equal")
20+
m.measurements["test_table_2"] = tableMeasurements{
21+
clients: map[string]*measurement{
22+
"test_client_1": {duration: &durationMeasurement{}},
23+
},
24+
duration: &durationMeasurement{},
3225
}
26+
27+
require.Equal(t, m.TotalResources(), uint64(0))
28+
require.Equal(t, m.TotalErrors(), uint64(0))
29+
require.Equal(t, m.TotalPanics(), uint64(0))
30+
31+
s1 := m.NewSelector("test_client_1", "test_table_1")
32+
33+
// test single table, single client
34+
m.StartTime(time.Now(), s1)
35+
m.AddResources(t.Context(), 1, s1)
36+
require.Equal(t, m.TotalResources(), uint64(1))
37+
require.Equal(t, m.GetResources(s1), uint64(1))
38+
require.Equal(t, m.TotalErrors(), uint64(0))
39+
require.Equal(t, m.TotalPanics(), uint64(0))
40+
41+
m.AddErrors(t.Context(), 1, s1)
42+
require.Equal(t, m.TotalResources(), uint64(1))
43+
require.Equal(t, m.GetResources(s1), uint64(1))
44+
require.Equal(t, m.TotalErrors(), uint64(1))
45+
require.Equal(t, m.GetErrors(s1), uint64(1))
46+
require.Equal(t, m.TotalPanics(), uint64(0))
47+
48+
m.AddPanics(t.Context(), 1, s1)
49+
require.Equal(t, m.TotalResources(), uint64(1))
50+
require.Equal(t, m.GetResources(s1), uint64(1))
51+
require.Equal(t, m.TotalErrors(), uint64(1))
52+
require.Equal(t, m.GetErrors(s1), uint64(1))
53+
require.Equal(t, m.TotalPanics(), uint64(1))
54+
require.Equal(t, m.GetPanics(s1), uint64(1))
55+
m.EndTime(t.Context(), time.Now(), s1)
56+
57+
// test single table, multiple clients
58+
s2 := m.NewSelector("test_client_2", "test_table_1")
59+
60+
m.StartTime(time.Now(), s2)
61+
m.AddResources(t.Context(), 1, s2)
62+
require.Equal(t, m.TotalResources(), uint64(2))
63+
require.Equal(t, m.GetResources(s2), uint64(1))
64+
require.Equal(t, m.TotalErrors(), uint64(1))
65+
require.Equal(t, m.GetErrors(s2), uint64(0))
66+
require.Equal(t, m.TotalPanics(), uint64(1))
67+
require.Equal(t, m.GetPanics(s2), uint64(0))
68+
69+
m.AddErrors(t.Context(), 1, s2)
70+
require.Equal(t, m.TotalResources(), uint64(2))
71+
require.Equal(t, m.GetResources(s2), uint64(1))
72+
require.Equal(t, m.TotalErrors(), uint64(2))
73+
require.Equal(t, m.GetErrors(s2), uint64(1))
74+
require.Equal(t, m.TotalPanics(), uint64(1))
75+
require.Equal(t, m.GetPanics(s2), uint64(0))
76+
77+
m.AddPanics(t.Context(), 1, s2)
78+
require.Equal(t, m.TotalResources(), uint64(2))
79+
require.Equal(t, m.GetResources(s2), uint64(1))
80+
require.Equal(t, m.TotalErrors(), uint64(2))
81+
require.Equal(t, m.GetErrors(s2), uint64(1))
82+
require.Equal(t, m.TotalPanics(), uint64(2))
83+
require.Equal(t, m.GetPanics(s2), uint64(1))
84+
m.EndTime(t.Context(), time.Now(), s2)
85+
86+
// test multiple tables, multiple clients
87+
s3 := m.NewSelector("test_client_1", "test_table_2")
88+
89+
m.StartTime(time.Now(), s3)
90+
m.AddResources(t.Context(), 1, s3)
91+
require.Equal(t, m.TotalResources(), uint64(3))
92+
require.Equal(t, m.GetResources(s3), uint64(1))
93+
require.Equal(t, m.TotalErrors(), uint64(2))
94+
require.Equal(t, m.GetErrors(s3), uint64(0))
95+
require.Equal(t, m.TotalPanics(), uint64(2))
96+
require.Equal(t, m.GetPanics(s3), uint64(0))
97+
98+
m.AddErrors(t.Context(), 1, s3)
99+
require.Equal(t, m.TotalResources(), uint64(3))
100+
require.Equal(t, m.GetResources(s3), uint64(1))
101+
require.Equal(t, m.TotalErrors(), uint64(3))
102+
require.Equal(t, m.GetErrors(s3), uint64(1))
103+
require.Equal(t, m.TotalPanics(), uint64(2))
104+
require.Equal(t, m.GetPanics(s3), uint64(0))
105+
106+
m.AddPanics(t.Context(), 1, s3)
107+
require.Equal(t, m.TotalResources(), uint64(3))
108+
require.Equal(t, m.GetResources(s3), uint64(1))
109+
require.Equal(t, m.TotalErrors(), uint64(3))
110+
require.Equal(t, m.GetErrors(s3), uint64(1))
111+
require.Equal(t, m.TotalPanics(), uint64(3))
112+
require.Equal(t, m.GetPanics(s3), uint64(1))
113+
m.EndTime(t.Context(), time.Now(), s3)
114+
115+
require.Greater(t, m.GetDuration(s1), 0*time.Millisecond)
116+
require.Greater(t, m.GetDuration(s2), 0*time.Millisecond)
117+
118+
// This should work because the 2 metrics are built sequentially; in practice though, this is probably not the case.
119+
require.GreaterOrEqual(t, m.TableDuration(s1.tableName), m.GetDuration(s1)+m.GetDuration(s2))
33120
}

serve/opentelemetry.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,17 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7-
"net/http"
87
"reflect"
98
"time"
109

1110
"github.com/cloudquery/plugin-sdk/v4/plugin"
12-
"github.com/prometheus/client_golang/prometheus/promhttp"
1311
"github.com/rs/zerolog"
1412
"go.opentelemetry.io/otel"
1513
"go.opentelemetry.io/otel/attribute"
1614
"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp"
1715
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
1816
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
1917
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
20-
"go.opentelemetry.io/otel/exporters/prometheus"
2118
otellog "go.opentelemetry.io/otel/log"
2219
logglobal "go.opentelemetry.io/otel/log/global"
2320
"go.opentelemetry.io/otel/sdk/log"
@@ -122,11 +119,6 @@ func getLogsProcessor(ctx context.Context, opts otelConfig) (*log.BatchProcessor
122119
}
123120

124121
func setupOtel(ctx context.Context, logger zerolog.Logger, p *plugin.Plugin, otelEndpoint string, otelEndpointInsecure bool) (shutdown func(), err error) {
125-
prometheusReader, err := prometheus.New()
126-
if err != nil {
127-
return nil, err
128-
}
129-
130122
if otelEndpoint == "" {
131123
return nil, nil
132124
}
@@ -157,7 +149,6 @@ func setupOtel(ctx context.Context, logger zerolog.Logger, p *plugin.Plugin, ote
157149

158150
mt := metric.NewMeterProvider(
159151
metric.WithReader(metricReader),
160-
metric.WithReader(prometheusReader),
161152
metric.WithResource(pluginResource),
162153
)
163154

@@ -173,15 +164,6 @@ func setupOtel(ctx context.Context, logger zerolog.Logger, p *plugin.Plugin, ote
173164
otel.SetMeterProvider(mt)
174165
logglobal.SetLoggerProvider(lp)
175166

176-
go func() {
177-
logger.Info().Msg("serving metrics at localhost:9121/metrics")
178-
http.Handle("/metrics", promhttp.Handler())
179-
if err := http.ListenAndServe(":9121", nil); err != nil {
180-
fmt.Printf("error serving http: %v", err)
181-
return
182-
}
183-
}()
184-
185167
shutdown = func() {
186168
if err := tp.Shutdown(context.Background()); err != nil {
187169
logger.Error().Err(err).Msg("failed to shutdown OTLP trace provider")

0 commit comments

Comments
 (0)