ooni-probe-cli/pkg/oonimkall
Simone Basso ff1c170562
feat(engine): allow runner to return many measurements (#527)
This is required to implement websteps, which is currently tracked
by https://github.com/ooni/probe/issues/1733.

We introduce the concept of async runner. An async runner will
post measurements on a channel until it is done. When it is done,
it will close the channel to notify the reader about that.

This change causes sync experiments now to strictly return either
a non-nil measurement or a non-nil error.

While this is a pretty much obvious situation in golang, we had
some parts of the codebase that were not robust to this assumption
and attempted to submit a measurement after the measure call
returned an error.

Luckily, we had enough tests to catch this change in our assumption
and this is why there are extra docs and tests changes.
2021-09-30 00:54:52 +02:00
..
internal/tasks feat(engine): allow runner to return many measurements (#527) 2021-09-30 00:54:52 +02:00
.gitignore refactor: we don't wanna export pkg/oonimkall/tasks (#216) 2021-02-03 19:48:23 +01:00
experiment_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
experiment.go oonimkall: mobile api for running WebConnectivity (#223) 2021-03-18 08:44:58 +01:00
README.md refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
session_integration_test.go fix: skip two integration tests in short mode (#451) 2021-09-05 11:58:02 +02:00
session_test.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
session.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
sessioncontext_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
sessioncontext.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
sessionlogger_test.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
sessionlogger.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
task_integration_test.go refactor: redesign how we import assets (#260) 2021-04-01 16:57:31 +02:00
task_internal_test.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
task.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
uuid_test.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
uuid.go refactor: start building an Android package (#205) 2021-02-03 10:51:14 +01:00
webconnectivity_integration_test.go oonimkall: mobile api for running WebConnectivity (#223) 2021-03-18 08:44:58 +01:00
webconnectivity_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
webconnectivity.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00

Package github.com/ooni/probe-cli/pkg/oonimkall

Package oonimkall implements APIs used by OONI mobile apps. We expose these APIs to mobile apps using gomobile.

We expose two APIs: the task API, which is derived from the API originally exposed by Measurement Kit, and the session API, which is a Go API that mobile apps can use via gomobile.

This package is named oonimkall because it contains a partial reimplementation of the mkall API implemented by Measurement Kit in, e.g., mkall-ios.

The basic tenet of the task API is that you define an experiment task you wanna run using a JSON, then you start a task for it, and you receive events as serialized JSONs. In addition to this functionality, we also include extra APIs used by OONI mobile.

The basic tenet of the session API is that you create an instance of Session and use it to perform the operations you need.