fix(oonimkall): run tests with InputOrStaticDefault policy (#634)
Previous work to make https://github.com/ooni/probe/issues/1814 possible has broken running stunreachability on mobile. This diff repairs the blunder and allows to run any experiment using InputOrStaticDefault with oonimkall. Diff extracted from https://github.com/ooni/probe-cli/pull/539.
This commit is contained in:
parent
1896d2172a
commit
dc9fbe9c64
3 changed files with 299 additions and 236 deletions
|
|
@ -154,12 +154,46 @@ func (r *runnerForTask) Run(ctx context.Context) {
|
|||
})
|
||||
|
||||
builder.SetCallbacks(&runnerCallbacks{emitter: r.emitter})
|
||||
if len(r.settings.Inputs) <= 0 {
|
||||
switch builder.InputPolicy() {
|
||||
case engine.InputOrQueryBackend, engine.InputStrictlyRequired:
|
||||
|
||||
// TODO(bassosimone): replace the following code with an
|
||||
// invocation of the InputLoader. Since I am making these
|
||||
// changes before a release and I've already changed the
|
||||
// code a lot, I'd rather avoid changing it even more,
|
||||
// for the following reason:
|
||||
//
|
||||
// If we add an call InputLoader here, this code will
|
||||
// magically invoke check-in for InputOrQueryBackend,
|
||||
// which we need to make sure the app can handle. This is
|
||||
// the main reason why now I don't fill like properly
|
||||
// fixing this code and use InputLoader: too much work
|
||||
// in too little time, so mistakes more likely.
|
||||
//
|
||||
// In fact, our current app assumes that it's its
|
||||
// responsibility to load the inputs, not oonimkall's.
|
||||
switch builder.InputPolicy() {
|
||||
case engine.InputOrQueryBackend, engine.InputStrictlyRequired:
|
||||
if len(r.settings.Inputs) <= 0 {
|
||||
r.emitter.EmitFailureStartup("no input provided")
|
||||
return
|
||||
}
|
||||
case engine.InputOrStaticDefault:
|
||||
if len(r.settings.Inputs) <= 0 {
|
||||
inputs, err := engine.StaticBareInputForExperiment(r.settings.Name)
|
||||
if err != nil {
|
||||
r.emitter.EmitFailureStartup("no default static input for this experiment")
|
||||
return
|
||||
}
|
||||
r.settings.Inputs = inputs
|
||||
}
|
||||
case engine.InputOptional:
|
||||
if len(r.settings.Inputs) <= 0 {
|
||||
r.settings.Inputs = append(r.settings.Inputs, "")
|
||||
}
|
||||
default: // treat this case as engine.InputNone.
|
||||
if len(r.settings.Inputs) > 0 {
|
||||
r.emitter.EmitFailureStartup("experiment does not accept input")
|
||||
return
|
||||
}
|
||||
r.settings.Inputs = append(r.settings.Inputs, "")
|
||||
}
|
||||
experiment := builder.NewExperimentInstance()
|
||||
|
|
|
|||
Loading…
Reference in a new issue