github.com/coreos/mantle@v0.13.0/kola/tests/coretest/dbus.go (about) 1 package coretest 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/godbus/dbus" 8 ) 9 10 func CheckDbusInterface(iFace string, timeout time.Duration) error { 11 errc := make(chan error, 1) 12 go func() { 13 conn, err := dbus.SystemBus() 14 if err != nil { 15 errc <- err 16 return 17 } 18 19 msgChan := make(chan *dbus.Message, 10) 20 go func(msgChan chan *dbus.Message) { 21 <-msgChan 22 errc <- nil 23 return 24 }(msgChan) 25 26 call := conn.BusObject().Call( 27 "org.freedesktop.DBus.AddMatch", 0, 28 fmt.Sprintf("eavesdrop='true',type=signal,interface=%s", iFace), 29 ) 30 if call.Err != nil { 31 errc <- call.Err 32 } 33 conn.Eavesdrop(msgChan) 34 }() 35 36 select { 37 case <-time.After(timeout): 38 return fmt.Errorf("timeout after %s.", timeout) 39 case err := <-errc: 40 return err 41 } 42 }