mirror of https://github.com/knative/func.git
38 lines
865 B
Go
38 lines
865 B
Go
package mock
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
"time"
|
|
|
|
fn "knative.dev/func/pkg/functions"
|
|
)
|
|
|
|
// Runner runs a function in a separate process, canceling it on context.Cancel.
|
|
// Immediately returned is the port of the running function.
|
|
type Runner struct {
|
|
RunInvoked bool
|
|
RootRequested string
|
|
RunFn func(context.Context, fn.Function, time.Duration) (*fn.Job, error)
|
|
sync.Mutex
|
|
}
|
|
|
|
func NewRunner() *Runner {
|
|
return &Runner{
|
|
RunFn: func(ctx context.Context, f fn.Function, t time.Duration) (*fn.Job, error) {
|
|
errs := make(chan error, 1)
|
|
stop := func() error { return nil }
|
|
return fn.NewJob(f, "127.0.0.1", "8080", errs, stop, false)
|
|
},
|
|
}
|
|
}
|
|
|
|
func (r *Runner) Run(ctx context.Context, f fn.Function, t time.Duration) (*fn.Job, error) {
|
|
r.Lock()
|
|
defer r.Unlock()
|
|
r.RunInvoked = true
|
|
r.RootRequested = f.Root
|
|
|
|
return r.RunFn(ctx, f, t)
|
|
}
|