Skip to content

Commit a0e3456

Browse files
authored
Add support for returning measurement_uid as part of oonimkall API (#1673)
Implements: ooni/probe#2521
1 parent 6a8a893 commit a0e3456

22 files changed

+85
-66
lines changed

cmd/ooniprobe/internal/nettests/nettests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ func (c *Controller) Run(builder model.ExperimentBuilder, inputs []model.Experim
215215
// Implementation note: SubmitMeasurement will fail here if we did fail
216216
// to open the report but we still want to continue. There will be a
217217
// bit of a spew in the logs, perhaps, but stopping seems less efficient.
218-
if err := exp.SubmitAndUpdateMeasurementContext(context.Background(), measurement); err != nil {
218+
if _, err := exp.SubmitAndUpdateMeasurementContext(context.Background(), measurement); err != nil {
219219
log.Debug(color.RedString("failure.measurement_submission"))
220220
if err := db.UploadFailed(c.msmts[idx64], err.Error()); err != nil {
221221
return errors.Wrap(err, "failed to mark upload as failed")

internal/cmd/oonireport/oonireport.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func submitAll(ctx context.Context, lines []string, subm model.Submitter) (int,
106106
for _, line := range lines {
107107
mm := toMeasurement(line)
108108
// submit the measurement
109-
err := subm.Submit(ctx, mm)
109+
_, err := subm.Submit(ctx, mm)
110110
if err != nil {
111111
return submitted, err
112112
}

internal/engine/experiment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,10 @@ func (e *experiment) ReportID() string {
104104

105105
// SubmitAndUpdateMeasurementContext implements [model.Experiment].
106106
func (e *experiment) SubmitAndUpdateMeasurementContext(
107-
ctx context.Context, measurement *model.Measurement) error {
107+
ctx context.Context, measurement *model.Measurement) (string, error) {
108108
report := e.mrep.Get()
109109
if report == nil {
110-
return errors.New("report is not open")
110+
return "", errors.New("report is not open")
111111
}
112112
return report.SubmitMeasurement(ctx, measurement)
113113
}

internal/engine/experiment_integration_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ func runexperimentflow(t *testing.T, experiment model.Experiment, input string)
280280
}
281281
filename := tempfile.Name()
282282
tempfile.Close()
283-
err = experiment.SubmitAndUpdateMeasurementContext(ctx, measurement)
283+
_, err = experiment.SubmitAndUpdateMeasurementContext(ctx, measurement)
284284
if err != nil {
285285
t.Fatal(err)
286286
}
@@ -323,7 +323,7 @@ func TestOpenReportIdempotent(t *testing.T) {
323323
t.Fatal("unexpected initial report ID")
324324
}
325325
ctx := context.Background()
326-
if err := exp.SubmitAndUpdateMeasurementContext(ctx, &model.Measurement{}); err == nil {
326+
if _, err := exp.SubmitAndUpdateMeasurementContext(ctx, &model.Measurement{}); err == nil {
327327
t.Fatal("we should not be able to submit before OpenReport")
328328
}
329329
err = exp.OpenReportContext(ctx)
@@ -403,7 +403,7 @@ func TestSubmitAndUpdateMeasurementWithClosedReport(t *testing.T) {
403403
}
404404
exp := builder.NewExperiment()
405405
m := new(model.Measurement)
406-
err = exp.SubmitAndUpdateMeasurementContext(context.Background(), m)
406+
_, err = exp.SubmitAndUpdateMeasurementContext(context.Background(), m)
407407
if err == nil {
408408
t.Fatal("expected an error here")
409409
}

internal/mocks/experiment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type Experiment struct {
2222
MockSaveMeasurement func(measurement *model.Measurement, filePath string) error
2323

2424
MockSubmitAndUpdateMeasurementContext func(
25-
ctx context.Context, measurement *model.Measurement) error
25+
ctx context.Context, measurement *model.Measurement) (string, error)
2626

2727
MockOpenReportContext func(ctx context.Context) error
2828
}
@@ -53,7 +53,7 @@ func (e *Experiment) SaveMeasurement(measurement *model.Measurement, filePath st
5353
}
5454

5555
func (e *Experiment) SubmitAndUpdateMeasurementContext(
56-
ctx context.Context, measurement *model.Measurement) error {
56+
ctx context.Context, measurement *model.Measurement) (string, error) {
5757
return e.MockSubmitAndUpdateMeasurementContext(ctx, measurement)
5858
}
5959

internal/mocks/experiment_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ func TestExperiment(t *testing.T) {
9393
t.Run("SubmitAndUpdateMeasurementContext", func(t *testing.T) {
9494
expected := errors.New("mocked err")
9595
e := &Experiment{
96-
MockSubmitAndUpdateMeasurementContext: func(ctx context.Context, measurement *model.Measurement) error {
97-
return expected
96+
MockSubmitAndUpdateMeasurementContext: func(ctx context.Context, measurement *model.Measurement) (string, error) {
97+
return "", expected
9898
},
9999
}
100-
err := e.SubmitAndUpdateMeasurementContext(context.Background(), &model.Measurement{})
100+
_, err := e.SubmitAndUpdateMeasurementContext(context.Background(), &model.Measurement{})
101101
if !errors.Is(err, expected) {
102102
t.Fatal("unexpected err", err)
103103
}

internal/mocks/submitter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import (
88

99
// Submitter mocks model.Submitter.
1010
type Submitter struct {
11-
MockSubmit func(ctx context.Context, m *model.Measurement) error
11+
MockSubmit func(ctx context.Context, m *model.Measurement) (string, error)
1212
}
1313

1414
// Submit calls MockSubmit
15-
func (s *Submitter) Submit(ctx context.Context, m *model.Measurement) error {
15+
func (s *Submitter) Submit(ctx context.Context, m *model.Measurement) (string, error) {
1616
return s.MockSubmit(ctx, m)
1717
}

internal/mocks/submitter_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ func TestSubmitter(t *testing.T) {
1212
t.Run("Submit", func(t *testing.T) {
1313
expect := errors.New("mocked error")
1414
s := &Submitter{
15-
MockSubmit: func(ctx context.Context, m *model.Measurement) error {
16-
return expect
15+
MockSubmit: func(ctx context.Context, m *model.Measurement) (string, error) {
16+
return "", expect
1717
},
1818
}
19-
err := s.Submit(context.Background(), &model.Measurement{})
19+
_, err := s.Submit(context.Background(), &model.Measurement{})
2020
if !errors.Is(err, expect) {
2121
t.Fatal("unexpected err", err)
2222
}

internal/model/experiment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ type Experiment interface {
186186
// SubmitAndUpdateMeasurementContext submits a measurement and updates the
187187
// fields whose value has changed as part of the submission.
188188
SubmitAndUpdateMeasurementContext(
189-
ctx context.Context, measurement *Measurement) error
189+
ctx context.Context, measurement *Measurement) (string, error)
190190

191191
// OpenReportContext will open a report using the given context
192192
// to possibly limit the lifetime of this operation.
@@ -322,7 +322,7 @@ type ExperimentTargetLoader interface {
322322
type Submitter interface {
323323
// Submit submits the measurement and updates its
324324
// report ID field in case of success.
325-
Submit(ctx context.Context, m *Measurement) error
325+
Submit(ctx context.Context, m *Measurement) (string, error)
326326
}
327327

328328
// Saver saves a measurement on some persistent storage.

internal/oonirun/experiment.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,11 @@ type experimentSubmitterWrapper struct {
263263
logger model.Logger
264264
}
265265

266-
func (sw *experimentSubmitterWrapper) Submit(ctx context.Context, idx int, m *model.Measurement) error {
267-
if err := sw.child.Submit(ctx, idx, m); err != nil {
266+
func (sw *experimentSubmitterWrapper) Submit(ctx context.Context, idx int, m *model.Measurement) (string, error) {
267+
mstUID, err := sw.child.Submit(ctx, idx, m)
268+
if err != nil {
268269
sw.logger.Warnf("submitting measurement failed: %s", err.Error())
269270
}
270271
// policy: we do not stop the loop if measurement submission fails
271-
return nil
272+
return mstUID, nil
272273
}

0 commit comments

Comments
 (0)