127 lines
3.1 KiB
Go
127 lines
3.1 KiB
Go
// Package oonitest contains code used for testing.
|
|
package oonitest
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/apex/log"
|
|
"github.com/ooni/probe-cli/v3/cmd/ooniprobe/internal/config"
|
|
"github.com/ooni/probe-cli/v3/cmd/ooniprobe/internal/ooni"
|
|
"upper.io/db.v3/lib/sqlbuilder"
|
|
)
|
|
|
|
// FakeOutput allows to fake the output package.
|
|
type FakeOutput struct {
|
|
FakeSectionTitle []string
|
|
mu sync.Mutex
|
|
}
|
|
|
|
// SectionTitle writes the section title.
|
|
func (fo *FakeOutput) SectionTitle(s string) {
|
|
fo.mu.Lock()
|
|
defer fo.mu.Unlock()
|
|
fo.FakeSectionTitle = append(fo.FakeSectionTitle, s)
|
|
}
|
|
|
|
// FakeProbeCLI fakes ooni.ProbeCLI
|
|
type FakeProbeCLI struct {
|
|
FakeConfig *config.Config
|
|
FakeDB sqlbuilder.Database
|
|
FakeIsBatch bool
|
|
FakeHome string
|
|
FakeTempDir string
|
|
FakeProbeEnginePtr ooni.ProbeEngine
|
|
FakeProbeEngineErr error
|
|
}
|
|
|
|
// Config implements ProbeCLI.Config
|
|
func (cli *FakeProbeCLI) Config() *config.Config {
|
|
return cli.FakeConfig
|
|
}
|
|
|
|
// DB implements ProbeCLI.DB
|
|
func (cli *FakeProbeCLI) DB() sqlbuilder.Database {
|
|
return cli.FakeDB
|
|
}
|
|
|
|
// IsBatch implements ProbeCLI.IsBatch
|
|
func (cli *FakeProbeCLI) IsBatch() bool {
|
|
return cli.FakeIsBatch
|
|
}
|
|
|
|
// Home implements ProbeCLI.Home
|
|
func (cli *FakeProbeCLI) Home() string {
|
|
return cli.FakeHome
|
|
}
|
|
|
|
// TempDir implements ProbeCLI.TempDir
|
|
func (cli *FakeProbeCLI) TempDir() string {
|
|
return cli.FakeTempDir
|
|
}
|
|
|
|
// NewProbeEngine implements ProbeCLI.NewProbeEngine
|
|
func (cli *FakeProbeCLI) NewProbeEngine() (ooni.ProbeEngine, error) {
|
|
return cli.FakeProbeEnginePtr, cli.FakeProbeEngineErr
|
|
}
|
|
|
|
var _ ooni.ProbeCLI = &FakeProbeCLI{}
|
|
|
|
// FakeProbeEngine fakes ooni.ProbeEngine
|
|
type FakeProbeEngine struct {
|
|
FakeClose error
|
|
FakeMaybeLookupLocation error
|
|
FakeProbeASNString string
|
|
FakeProbeCC string
|
|
FakeProbeIP string
|
|
FakeProbeNetworkName string
|
|
}
|
|
|
|
// Close implements ProbeEngine.Close
|
|
func (eng *FakeProbeEngine) Close() error {
|
|
return eng.FakeClose
|
|
}
|
|
|
|
// MaybeLookupLocation implements ProbeEngine.MaybeLookupLocation
|
|
func (eng *FakeProbeEngine) MaybeLookupLocation() error {
|
|
return eng.FakeMaybeLookupLocation
|
|
}
|
|
|
|
// ProbeASNString implements ProbeEngine.ProbeASNString
|
|
func (eng *FakeProbeEngine) ProbeASNString() string {
|
|
return eng.FakeProbeASNString
|
|
}
|
|
|
|
// ProbeCC implements ProbeEngine.ProbeCC
|
|
func (eng *FakeProbeEngine) ProbeCC() string {
|
|
return eng.FakeProbeCC
|
|
}
|
|
|
|
// ProbeIP implements ProbeEngine.ProbeIP
|
|
func (eng *FakeProbeEngine) ProbeIP() string {
|
|
return eng.FakeProbeIP
|
|
}
|
|
|
|
// ProbeNetworkName implements ProbeEngine.ProbeNetworkName
|
|
func (eng *FakeProbeEngine) ProbeNetworkName() string {
|
|
return eng.FakeProbeNetworkName
|
|
}
|
|
|
|
var _ ooni.ProbeEngine = &FakeProbeEngine{}
|
|
|
|
// FakeLoggerHandler fakes apex.log.Handler.
|
|
type FakeLoggerHandler struct {
|
|
FakeEntries []*log.Entry
|
|
FakeErr error
|
|
mu sync.Mutex
|
|
}
|
|
|
|
// HandleLog implements Handler.HandleLog.
|
|
func (handler *FakeLoggerHandler) HandleLog(entry *log.Entry) error {
|
|
handler.mu.Lock()
|
|
defer handler.mu.Unlock()
|
|
handler.FakeEntries = append(handler.FakeEntries, entry)
|
|
return handler.FakeErr
|
|
}
|
|
|
|
var _ log.Handler = &FakeLoggerHandler{}
|