func (d *delegate) Initialize(mctx application.Context) { // TODO(bjornick): Calling init multiple times in the same process // will be bad. For now, this is ok because this is the only // vanadium service that will be used in the demos and each go library // will be in its own process. roaming.SetArgs(mctx) d.ctx, d.shutdown = v23.Init() if *flagTestMode { // Inject a mock plugin. df, _ := idiscovery.NewFactory(d.ctx, mock.New()) fdiscovery.InjectFactory(df) // Start a mounttable and set the namespace roots. // // Note that we need to listen on a local IP address in order to // accept connections within a GCE instance. d.ctx = v23.WithListenSpec(d.ctx, rpc.ListenSpec{Addrs: rpc.ListenAddrs{{Protocol: "tcp", Address: "127.0.0.1:0"}}}) name, _, err := mounttablelib.StartServers(d.ctx, v23.GetListenSpec(d.ctx), "", "", "", "", "mounttable") if err != nil { panic(err) } ns := v23.GetNamespace(d.ctx) ns.SetRoots(name) } }
// injectMockPlugin injects a discovery factory with a mock plugin into a runtime. func injectMockPlugin(ctx *context.T) error { df, err := idiscovery.NewFactory(ctx, mock.New()) if err != nil { return err } fdiscovery.InjectFactory(df) return nil }