94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
|
package oonimkall
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"sync"
|
||
|
"sync/atomic"
|
||
|
|
||
|
"github.com/ooni/probe-cli/v3/internal/engine/model"
|
||
|
)
|
||
|
|
||
|
// FakeExperimentCallbacks contains fake ExperimentCallbacks.
|
||
|
type FakeExperimentCallbacks struct{}
|
||
|
|
||
|
// OnProgress implements ExperimentCallbacks.OnProgress
|
||
|
func (cb *FakeExperimentCallbacks) OnProgress(percentage float64, message string) {}
|
||
|
|
||
|
// FakeExperimentSession is a fake experimentSession
|
||
|
type FakeExperimentSession struct {
|
||
|
ExperimentBuilder experimentBuilder
|
||
|
LockCount int32
|
||
|
LookupBackendsErr error
|
||
|
LookupLocationErr error
|
||
|
NewExperimentBuilderErr error
|
||
|
UnlockCount int32
|
||
|
}
|
||
|
|
||
|
// lock implements experimentSession.lock
|
||
|
func (sess *FakeExperimentSession) lock() {
|
||
|
atomic.AddInt32(&sess.LockCount, 1)
|
||
|
}
|
||
|
|
||
|
// maybeLookupBackends implements experimentSession.maybeLookupBackends
|
||
|
func (sess *FakeExperimentSession) maybeLookupBackends(ctx context.Context) error {
|
||
|
return sess.LookupBackendsErr
|
||
|
}
|
||
|
|
||
|
// maybeLookupLocation implements experimentSession.maybeLookupLocation
|
||
|
func (sess *FakeExperimentSession) maybeLookupLocation(ctx context.Context) error {
|
||
|
return sess.LookupLocationErr
|
||
|
}
|
||
|
|
||
|
// newExperimentBuilder implements experimentSession.newExperimentBuilder
|
||
|
func (sess *FakeExperimentSession) newExperimentBuilder(name string) (experimentBuilder, error) {
|
||
|
return sess.ExperimentBuilder, sess.NewExperimentBuilderErr
|
||
|
}
|
||
|
|
||
|
// unlock implements experimentSession.unlock
|
||
|
func (sess *FakeExperimentSession) unlock() {
|
||
|
atomic.AddInt32(&sess.UnlockCount, 1)
|
||
|
}
|
||
|
|
||
|
// FakeExperimentBuilder is a fake experimentBuilder
|
||
|
type FakeExperimentBuilder struct {
|
||
|
Callbacks ExperimentCallbacks
|
||
|
Experiment experiment
|
||
|
mu sync.Mutex
|
||
|
}
|
||
|
|
||
|
// newExperiment implements experimentBuilder.newExperiment
|
||
|
func (eb *FakeExperimentBuilder) newExperiment() experiment {
|
||
|
return eb.Experiment
|
||
|
}
|
||
|
|
||
|
// setCallbacks implements experimentBuilder.setCallbacks
|
||
|
func (eb *FakeExperimentBuilder) setCallbacks(cb ExperimentCallbacks) {
|
||
|
defer eb.mu.Unlock()
|
||
|
eb.mu.Lock()
|
||
|
eb.Callbacks = cb
|
||
|
}
|
||
|
|
||
|
// FakeExperiment is a fake experiment
|
||
|
type FakeExperiment struct {
|
||
|
Err error
|
||
|
Measurement *model.Measurement
|
||
|
Received float64
|
||
|
Sent float64
|
||
|
}
|
||
|
|
||
|
// MeasureWithContext implements experiment.MeasureWithContext.
|
||
|
func (e *FakeExperiment) MeasureWithContext(ctx context.Context, input string) (
|
||
|
measurement *model.Measurement, err error) {
|
||
|
return e.Measurement, e.Err
|
||
|
}
|
||
|
|
||
|
// KibiBytesSent implements experiment.KibiBytesSent
|
||
|
func (e *FakeExperiment) KibiBytesSent() float64 {
|
||
|
return e.Sent
|
||
|
}
|
||
|
|
||
|
// KibiBytesReceived implements experiment.KibiBytesReceived
|
||
|
func (e *FakeExperiment) KibiBytesReceived() float64 {
|
||
|
return e.Received
|
||
|
}
|