...
1 package testutil
2
3 import (
4 "context"
5 "errors"
6
7 "github.com/cybertec-postgresql/pgwatch/v5/api/pb"
8 "github.com/cybertec-postgresql/pgwatch/v5/internal/metrics"
9 "github.com/cybertec-postgresql/pgwatch/v5/internal/sources"
10 "google.golang.org/protobuf/types/known/structpb"
11 )
12
13
14 type Receiver struct {
15 pb.UnimplementedReceiverServer
16 }
17
18 func (receiver *Receiver) UpdateMeasurements(_ context.Context, msg *pb.MeasurementEnvelope) (*pb.Reply, error) {
19 if len(msg.GetData()) == 0 {
20 return nil, errors.New("empty message")
21 }
22 if msg.GetDBName() != "Db" {
23 return nil, errors.New("invalid message")
24 }
25 return &pb.Reply{}, nil
26 }
27
28 func (receiver *Receiver) SyncMetric(_ context.Context, syncReq *pb.SyncReq) (*pb.Reply, error) {
29 if syncReq == nil {
30 return nil, errors.New("nil sync request")
31 }
32 if syncReq.GetOperation() == pb.SyncOp_InvalidOp {
33 return nil, errors.New("invalid sync request")
34 }
35 return &pb.Reply{}, nil
36 }
37
38 func (receiver *Receiver) DefineMetrics(_ context.Context, metricsStruct *structpb.Struct) (*pb.Reply, error) {
39 if metricsStruct == nil {
40 return nil, errors.New("nil metrics struct")
41 }
42 if metricsStruct.GetFields() == nil {
43 return nil, errors.New("empty metrics struct")
44 }
45 return &pb.Reply{Logmsg: "metrics defined successfully"}, nil
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
86 type MockSourcesReaderWriter struct {
87 GetSourcesFunc func() (sources.Sources, error)
88 UpdateSourceFunc func(md sources.Source) error
89 CreateSourceFunc func(md sources.Source) error
90 DeleteSourceFunc func(name string) error
91 WriteSourcesFunc func(sources.Sources) error
92 }
93
94 func (m *MockSourcesReaderWriter) GetSources() (sources.Sources, error) {
95 return m.GetSourcesFunc()
96 }
97 func (m *MockSourcesReaderWriter) UpdateSource(md sources.Source) error {
98 return m.UpdateSourceFunc(md)
99 }
100 func (m *MockSourcesReaderWriter) CreateSource(md sources.Source) error {
101 return m.CreateSourceFunc(md)
102 }
103 func (m *MockSourcesReaderWriter) DeleteSource(name string) error {
104 return m.DeleteSourceFunc(name)
105 }
106 func (m *MockSourcesReaderWriter) WriteSources(srcs sources.Sources) error {
107 return m.WriteSourcesFunc(srcs)
108 }
109