本文整理匯總了Golang中github.com/tedsuo/ifrit/grouper.NewParallel函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewParallel函數的具體用法?Golang NewParallel怎麽用?Golang NewParallel使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了NewParallel函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Execute
func (cmd *WebCommand) Execute(args []string) error {
tsa := &tsacmd.TSACommand{
BindIP: cmd.TSA.BindIP,
BindPort: cmd.TSA.BindPort,
HostKeyPath: cmd.TSA.HostKeyPath,
AuthorizedKeysPath: cmd.TSA.AuthorizedKeysPath,
HeartbeatInterval: cmd.TSA.HeartbeatInterval,
}
cmd.populateTSAFlagsFromATCFlags(tsa)
atcRunner, err := cmd.ATCCommand.Runner(args)
if err != nil {
return err
}
tsaRunner, err := tsa.Runner(args)
if err != nil {
return err
}
runner := sigmon.New(grouper.NewParallel(os.Interrupt, grouper.Members{
{"atc", atcRunner},
{"tsa", tsaRunner},
}))
return <-ifrit.Invoke(runner).Wait()
}
示例2: main
func main() {
logger := lager.NewLogger("checkin")
logger.RegisterSink(lager.NewWriterSink(os.Stdout, lager.INFO))
var opts Opts
_, err := flags.Parse(&opts)
if err != nil {
logger.Error("parsing-flags", err)
os.Exit(1)
}
// ts := oauth2.StaticTokenSource(
// &oauth2.Token{AccessToken: opts.GitHubAccessToken},
// )
// tc := oauth2.NewClient(oauth2.NoContext, ts)
// githubClient := github.NewClient(tc)
// checker := build.NewConcourseChecker()
// checker = build.NewStatusReporter(checker, githubClient.Repositories)
dbConn, err := migration.Open(opts.DBDriver, opts.DBURL, migrations.Migrations)
if err != nil {
logger.Error("failed-to-run-migrations", err)
os.Exit(1)
}
sqlDB := db.NewSQL(logger.Session("db"), dbConn)
enqueuer := build.NewEnqueuer(sqlDB)
apiServer := api.NewServer(opts.GitHubSecret, enqueuer)
members := []grouper.Member{
{
"api",
http_server.New(
opts.Addr,
apiServer,
),
},
}
group := grouper.NewParallel(os.Interrupt, members)
running := ifrit.Invoke(sigmon.New(group))
logger.Info("listening", lager.Data{
"api": opts.Addr,
})
err = <-running.Wait()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
示例3: NewTaskWorkerPool
func NewTaskWorkerPool(receptorBBS bbs.ReceptorBBS, logger lager.Logger) (ifrit.Runner, chan<- models.Task) {
taskQueue := make(chan models.Task, POOL_SIZE)
members := make(grouper.Members, POOL_SIZE)
for i := 0; i < POOL_SIZE; i++ {
name := fmt.Sprintf("task-worker-%d", i)
members[i].Name = name
members[i].Runner = newTaskWorker(taskQueue, receptorBBS, logger.Session(name))
}
return grouper.NewParallel(os.Interrupt, members), taskQueue
}
示例4: main
func main() {
apiServer := NewGRPCRunner("localhost:50051", func(s *grpc.Server) {
airfreight.RegisterAirfreightServer(s, &server{})
})
debugServer := http_server.New(
"localhost:6060",
debugHandler(),
)
members := []grouper.Member{
{"api", apiServer},
{"debug", debugServer},
}
runner := sigmon.New(grouper.NewParallel(os.Interrupt, members))
err := <-ifrit.Invoke(runner).Wait()
if err != nil {
log.Fatalln(err)
}
}
示例5: constructPipelineSyncer
func (cmd *ATCCommand) constructPipelineSyncer(
logger lager.Logger,
sqlDB *db.SQLDB,
pipelineDBFactory db.PipelineDBFactory,
radarSchedulerFactory pipelines.RadarSchedulerFactory,
) *pipelines.Syncer {
return pipelines.NewSyncer(
logger,
sqlDB,
pipelineDBFactory,
func(pipelineDB db.PipelineDB) ifrit.Runner {
return grouper.NewParallel(os.Interrupt, grouper.Members{
{
pipelineDB.ScopedName("radar"),
radar.NewRunner(
logger.Session(pipelineDB.ScopedName("radar")),
cmd.Developer.Noop,
radarSchedulerFactory.BuildScanRunnerFactory(pipelineDB, cmd.ExternalURL.String()),
pipelineDB,
1*time.Minute,
),
},
{
pipelineDB.ScopedName("scheduler"),
&scheduler.Runner{
Logger: logger.Session(pipelineDB.ScopedName("scheduler")),
DB: pipelineDB,
Scheduler: radarSchedulerFactory.BuildScheduler(pipelineDB, cmd.ExternalURL.String()),
Noop: cmd.Developer.Noop,
Interval: 10 * time.Second,
},
},
})
},
)
}
示例6: Execute
func (cmd *WorkerCommand) Execute(args []string) error {
logger := lager.NewLogger("worker")
logger.RegisterSink(lager.NewWriterSink(os.Stdout, lager.INFO))
worker, gardenRunner, err := cmd.gardenRunner(logger.Session("garden"), args)
if err != nil {
return err
}
baggageclaimRunner, err := cmd.baggageclaimRunner(logger.Session("baggageclaim"))
if err != nil {
return err
}
members := grouper.Members{
{
Name: "garden",
Runner: gardenRunner,
},
{
Name: "baggageclaim",
Runner: baggageclaimRunner,
},
}
if cmd.TSA.WorkerPrivateKey != "" {
members = append(members, grouper.Member{
Name: "beacon",
Runner: cmd.beaconRunner(logger.Session("beacon"), worker),
})
}
runner := sigmon.New(grouper.NewParallel(os.Interrupt, members))
return <-ifrit.Invoke(runner).Wait()
}
示例7:
address string
lrp receptor.DesiredLRPCreateRequest
)
BeforeEach(func() {
processGuid = helpers.GenerateGuid()
address = componentMaker.Addresses.SSHProxy
var fileServer ifrit.Runner
fileServer, fileServerStaticDir = componentMaker.FileServer()
runtime = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"router", componentMaker.Router()},
{"file-server", fileServer},
{"rep", componentMaker.Rep()},
{"converger", componentMaker.Converger()},
{"auctioneer", componentMaker.Auctioneer()},
{"route-emitter", componentMaker.RouteEmitter()},
{"ssh-proxy", componentMaker.SSHProxy()},
}))
tgCompressor := compressor.NewTgz()
err := tgCompressor.Compress(componentMaker.Artifacts.Executables["sshd"], filepath.Join(fileServerStaticDir, "sshd.tgz"))
Expect(err).NotTo(HaveOccurred())
sshRoute := routes.SSHRoute{
ContainerPort: 3456,
PrivateKey: componentMaker.SSHConfig.PrivateKeyPem,
HostFingerprint: ssh_helpers.MD5Fingerprint(componentMaker.SSHConfig.HostKey.PublicKey()),
}
示例8:
}
switchboardRunner := ginkgomon.New(ginkgomon.Config{
Command: exec.Command(
switchboardBinPath,
fmt.Sprintf("-configPath=%s", configPath),
),
Name: fmt.Sprintf("switchboard"),
StartCheck: "started",
StartCheckTimeout: startupTimeout,
})
group := grouper.NewParallel(os.Kill, grouper.Members{
{Name: "backend-0", Runner: dummies.NewBackendRunner(0, backends[0])},
{Name: "backend-1", Runner: dummies.NewBackendRunner(1, backends[1])},
{Name: "healthcheck-0", Runner: healthcheckRunners[0]},
{Name: "healthcheck-1", Runner: healthcheckRunners[1]},
{Name: "switchboard", Runner: switchboardRunner},
})
process = ifrit.Invoke(group)
var err error
var conn net.Conn
Eventually(func() error {
conn, err = net.Dial("tcp", fmt.Sprintf("localhost:%d", switchboardPort))
return err
}, startupTimeout).Should(Succeed())
defer conn.Close()
response, err := sendData(conn, "detect active")
Expect(err).NotTo(HaveOccurred())
示例9:
Expect(modelErr.Type).To(Equal(models.Error_ResourceNotFound))
})
})
})
Describe("Cells", func() {
const cell1 = "cell-id-1"
const cell2 = "cell-id-2"
Context("when there is a single cell", func() {
var maintainers ifrit.Process
BeforeEach(func() {
Expect(serviceClient.Cells(logger)).To(HaveLen(0))
maintainers = ifrit.Invoke(grouper.NewParallel(os.Interrupt, grouper.Members{
{cell1, serviceClient.NewCellPresenceRunner(logger, newCellPresence(cell1), locket.RetryInterval, locket.LockTTL)},
{cell2, serviceClient.NewCellPresenceRunner(logger, newCellPresence(cell2), locket.RetryInterval, locket.LockTTL)},
}))
})
AfterEach(func() {
ginkgomon.Interrupt(maintainers)
})
It("returns only one cell", func() {
Eventually(func() (models.CellSet, error) { return serviceClient.Cells(logger) }).Should(HaveLen(2))
Expect(serviceClient.Cells(logger)).To(HaveKey(cell1))
Expect(serviceClient.Cells(logger)).To(HaveKey(cell2))
})
})
})
})
示例10:
web: the-start-command
EOF
`},
}
BeforeEach(func() {
appId = helpers.GenerateGuid()
taskId = helpers.GenerateGuid()
fileServer, dir := componentMaker.FileServer()
fileServerStaticDir = dir
fakeCC = componentMaker.FakeCC()
cell = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"rep", componentMaker.Rep("-memoryMB=1024")},
}))
brain = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"bbs", componentMaker.BBS()},
{"receptor", componentMaker.Receptor()},
{"auctioneer", componentMaker.Auctioneer()},
{"file-server", fileServer},
}))
bridge = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"cc", fakeCC},
{"stager", componentMaker.Stager()},
{"nsync-listener", componentMaker.NsyncListener()},
}))
示例11:
rep ifrit.Process
converger ifrit.Process
appId string
processGuid string
runningLRPsPoller func() []receptor.ActualLRPResponse
helloWorldInstancePoller func() []string
)
BeforeEach(func() {
fileServer, fileServerStaticDir := componentMaker.FileServer()
runtime = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"file-server", fileServer},
{"route-emitter", componentMaker.RouteEmitter()},
{"router", componentMaker.Router()},
}))
archive_helper.CreateZipArchive(
filepath.Join(fileServerStaticDir, "lrp.zip"),
fixtures.HelloWorldIndexLRP(),
)
appId = helpers.GenerateGuid()
processGuid = helpers.GenerateGuid()
runningLRPsPoller = func() []receptor.ActualLRPResponse {
return helpers.ActiveActualLRPs(receptorClient, processGuid)
}
示例12: Run
//.........這裏部分代碼省略.........
}
oauthHandler, err := auth.NewOAuthHandler(
logger,
oauthProviders,
signingKey,
)
if err != nil {
return err
}
webHandler, err := cmd.constructWebHandler(
logger,
sqlDB,
authValidator,
pipelineDBFactory,
engine,
)
if err != nil {
return err
}
members := []grouper.Member{
{"drainer", drainer(drain)},
{"web", http_server.New(
cmd.bindAddr(),
cmd.constructHTTPHandler(
webHandler,
apiHandler,
oauthHandler,
),
)},
{"debug", http_server.New(
cmd.debugBindAddr(),
http.DefaultServeMux,
)},
{"pipelines", pipelines.SyncRunner{
Syncer: cmd.constructPipelineSyncer(
logger.Session("syncer"),
sqlDB,
pipelineDBFactory,
radarSchedulerFactory,
),
Interval: 10 * time.Second,
Clock: clock.NewClock(),
}},
{"builds", builds.TrackerRunner{
Tracker: builds.NewTracker(
logger.Session("build-tracker"),
sqlDB,
engine,
),
Interval: 10 * time.Second,
Clock: clock.NewClock(),
}},
{"lostandfound", lostandfound.NewRunner(
logger.Session("lost-and-found"),
lostandfound.NewBaggageCollector(
logger.Session("baggage-collector"),
workerClient,
sqlDB,
pipelineDBFactory,
),
sqlDB,
clock.NewClock(),
5*time.Minute,
)},
}
members = cmd.appendStaticWorker(logger, sqlDB, members)
group := grouper.NewParallel(os.Interrupt, members)
running := ifrit.Invoke(sigmon.New(group))
logger.Info("listening", lager.Data{
"web": cmd.bindAddr(),
"debug": cmd.debugBindAddr(),
})
close(ready)
for {
select {
case s := <-signals:
running.Signal(s)
case err := <-running.Wait():
if err != nil {
logger.Error("exited-with-failure", err)
}
return err
}
}
}
示例13:
cellB ifrit.Process
processGuid string
appId string
)
BeforeEach(func() {
processGuid = helpers.GenerateGuid()
appId = helpers.GenerateGuid()
fileServer, fileServerStaticDir := componentMaker.FileServer()
runtime = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"router", componentMaker.Router()},
{"file-server", fileServer},
{"converger", componentMaker.Converger("-convergeRepeatInterval", "1s")},
{"auctioneer", componentMaker.Auctioneer()},
{"route-emitter", componentMaker.RouteEmitter()},
}))
cellAID = "cell-a"
cellBID = "cell-b"
cellAExecutorAddr = fmt.Sprintf("127.0.0.1:%d", 13100+GinkgoParallelNode())
cellBExecutorAddr = fmt.Sprintf("127.0.0.1:%d", 13200+GinkgoParallelNode())
cellARepAddr = fmt.Sprintf("0.0.0.0:%d", 14100+GinkgoParallelNode())
cellBRepAddr = fmt.Sprintf("0.0.0.0:%d", 14200+GinkgoParallelNode())
cellARepRunner = componentMaker.RepN(0,
"-cellID", cellAID,
示例14:
Δ time.Duration = 10 * time.Millisecond
)
BeforeEach(func() {
childRunner1 = fake_runner.NewTestRunner()
childRunner2 = fake_runner.NewTestRunner()
childRunner3 = fake_runner.NewTestRunner()
members = grouper.Members{
{"child1", childRunner1},
{"child2", childRunner2},
{"child3", childRunner3},
}
groupRunner = grouper.NewParallel(os.Interrupt, members)
})
AfterEach(func() {
childRunner1.EnsureExit()
childRunner2.EnsureExit()
childRunner3.EnsureExit()
ginkgomon.Kill(groupProcess)
})
Describe("Start", func() {
BeforeEach(func() {
groupProcess = ifrit.Background(groupRunner)
})
示例15:
"github.com/cloudfoundry-incubator/receptor"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"
"github.com/tedsuo/ifrit/ginkgomon"
"github.com/tedsuo/ifrit/grouper"
)
var _ = Describe("Privileges", func() {
var runtime ifrit.Process
BeforeEach(func() {
runtime = ginkgomon.Invoke(grouper.NewParallel(os.Kill, grouper.Members{
{"rep", componentMaker.Rep("-allowPrivileged")},
{"converger", componentMaker.Converger()},
{"auctioneer", componentMaker.Auctioneer()},
{"router", componentMaker.Router()},
{"route-emitter", componentMaker.RouteEmitter()},
}))
})
AfterEach(func() {
helpers.StopProcesses(runtime)
})
Context("when a task that tries to do privileged things is requested", func() {
var taskRequest receptor.TaskCreateRequest
BeforeEach(func() {
taskRequest = helpers.TaskCreateRequest(
helpers.GenerateGuid(),