...
1 package testutil
2
3 import (
4 "context"
5 "errors"
6
7 "github.com/cybertec-postgresql/pgwatch/v3/api/pb"
8 "github.com/cybertec-postgresql/pgwatch/v3/internal/metrics"
9 "github.com/cybertec-postgresql/pgwatch/v3/internal/sources"
10 "google.golang.org/protobuf/types/known/structpb"
11 )
12
13 type Receiver struct {
14 pb.UnimplementedReceiverServer
15 }
16
17 func (receiver *Receiver) UpdateMeasurements(_ context.Context, msg *pb.MeasurementEnvelope) (*pb.Reply, error) {
18 if len(msg.GetData()) == 0 {
19 return nil, errors.New("empty message")
20 }
21 if msg.GetDBName() != "Db" {
22 return nil, errors.New("invalid message")
23 }
24 return &pb.Reply{}, nil
25 }
26
27 func (receiver *Receiver) SyncMetric(_ context.Context, syncReq *pb.SyncReq) (*pb.Reply, error) {
28 if syncReq == nil {
29 return nil, errors.New("nil sync request")
30 }
31 if syncReq.GetOperation() == pb.SyncOp_InvalidOp {
32 return nil, errors.New("invalid sync request")
33 }
34 return &pb.Reply{}, nil
35 }
36
37 func (receiver *Receiver) DefineMetrics(_ context.Context, metricsStruct *structpb.Struct) (*pb.Reply, error) {
38 if metricsStruct == nil {
39 return nil, errors.New("nil metrics struct")
40 }
41 if metricsStruct.GetFields() == nil {
42 return nil, errors.New("empty metrics struct")
43 }
44 return &pb.Reply{Logmsg: "metrics defined successfully"}, nil
45 }
46
47
48
49 type MockMetricsReaderWriter struct {
50 GetMetricsFunc func() (*metrics.Metrics, error)
51 UpdateMetricFunc func(name string, m metrics.Metric) error
52 CreateMetricFunc func(name string, m metrics.Metric) error
53 DeleteMetricFunc func(name string) error
54 DeletePresetFunc func(name string) error
55 UpdatePresetFunc func(name string, preset metrics.Preset) error
56 CreatePresetFunc func(name string, preset metrics.Preset) error
57 WriteMetricsFunc func(metricDefs *metrics.Metrics) error
58 }
59
60 func (m *MockMetricsReaderWriter) GetMetrics() (*metrics.Metrics, error) {
61 return m.GetMetricsFunc()
62 }
63 func (m *MockMetricsReaderWriter) UpdateMetric(name string, metric metrics.Metric) error {
64 return m.UpdateMetricFunc(name, metric)
65 }
66 func (m *MockMetricsReaderWriter) CreateMetric(name string, metric metrics.Metric) error {
67 return m.CreateMetricFunc(name, metric)
68 }
69 func (m *MockMetricsReaderWriter) DeleteMetric(name string) error {
70 return m.DeleteMetricFunc(name)
71 }
72 func (m *MockMetricsReaderWriter) DeletePreset(name string) error {
73 return m.DeletePresetFunc(name)
74 }
75 func (m *MockMetricsReaderWriter) UpdatePreset(name string, preset metrics.Preset) error {
76 return m.UpdatePresetFunc(name, preset)
77 }
78 func (m *MockMetricsReaderWriter) CreatePreset(name string, preset metrics.Preset) error {
79 return m.CreatePresetFunc(name, preset)
80 }
81 func (m *MockMetricsReaderWriter) WriteMetrics(metricDefs *metrics.Metrics) error {
82 return m.WriteMetricsFunc(metricDefs)
83 }
84
85 type MockSourcesReaderWriter struct {
86 GetSourcesFunc func() (sources.Sources, error)
87 UpdateSourceFunc func(md sources.Source) error
88 CreateSourceFunc func(md sources.Source) error
89 DeleteSourceFunc func(name string) error
90 WriteSourcesFunc func(sources.Sources) error
91 }
92
93 func (m *MockSourcesReaderWriter) GetSources() (sources.Sources, error) {
94 return m.GetSourcesFunc()
95 }
96 func (m *MockSourcesReaderWriter) UpdateSource(md sources.Source) error {
97 return m.UpdateSourceFunc(md)
98 }
99 func (m *MockSourcesReaderWriter) CreateSource(md sources.Source) error {
100 return m.CreateSourceFunc(md)
101 }
102 func (m *MockSourcesReaderWriter) DeleteSource(name string) error {
103 return m.DeleteSourceFunc(name)
104 }
105 func (m *MockSourcesReaderWriter) WriteSources(srcs sources.Sources) error {
106 return m.WriteSourcesFunc(srcs)
107 }
108