Skip to content

Commit

Permalink
Merge pull request #313 from kolyshkin/fix-TestObjectSignalHandling
Browse files Browse the repository at this point in the history
TestObjectSignalHandling: fix/improve
  • Loading branch information
guelfey authored Feb 27, 2022
2 parents b357b44 + 2c3cf65 commit e523abc
Showing 1 changed file with 31 additions and 22 deletions.
53 changes: 31 additions & 22 deletions object_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,6 @@ func (_ nopServer) Nop() *Error {
return nil
}

func fetchSignal(t *testing.T, ch chan *Signal, timeout time.Duration) *Signal {
select {
case sig := <-ch:
return sig
case <-time.After(timeout):
t.Fatalf("Failed to fetch signal in specified timeout %s", timeout)
}
return nil
}

func TestObjectSignalHandling(t *testing.T) {
bus, err := ConnectSessionBus()
if err != nil {
Expand All @@ -85,7 +75,7 @@ func TestObjectSignalHandling(t *testing.T) {

name := bus.Names()[0]
path := ObjectPath("/org/godbus/DBus/TestSignals")
otherPath := ObjectPath("/org/other-godbus/DBus/TestSignals")
otherPath := ObjectPath("/org/other/godbus/DBus/TestSignals")
iface := "org.godbus.DBus.TestSignals"
otherIface := "org.godbus.DBus.OtherTestSignals"
err = bus.Export(nopServer{}, path, iface)
Expand All @@ -112,21 +102,40 @@ func TestObjectSignalHandling(t *testing.T) {
}
}()

emit := func(path ObjectPath, name string, values ...interface{}) {
t.Helper()
if err := bus.Emit(path, name, values...); err != nil {
t.Error("Emit:", err)
}
}

// desired signals
bus.Emit(path, iface+".Heartbeat", uint32(1))
bus.Emit(path, iface+".Heartbeat", uint32(2))
emit(path, iface+".Heartbeat", uint32(1))
emit(path, iface+".Heartbeat", uint32(2))
// undesired signals
bus.Emit(otherPath, iface+".Heartbeat", uint32(3))
bus.Emit(otherPath, otherIface+".Heartbeat", uint32(4))
bus.Emit(path, iface+".Updated", false)
emit(otherPath, iface+".Heartbeat", uint32(3))
emit(otherPath, otherIface+".Heartbeat", uint32(4))
emit(path, iface+".Updated", false)
// sentinel
bus.Emit(path, iface+".Heartbeat", uint32(5))
emit(path, iface+".Heartbeat", uint32(5))

time.Sleep(100 * time.Millisecond)
bus.Emit(path, iface+".Heartbeat", uint32(6))
emit(path, iface+".Heartbeat", uint32(6))
}()

checkSignal := func(sig *Signal, value uint32) {
checkSignal := func(ch chan *Signal, value uint32) {
t.Helper()

const timeout = 50 * time.Millisecond
var sig *Signal

select {
case sig = <-ch:
// do nothing
case <-time.After(timeout):
t.Fatalf("Failed to fetch signal in specified timeout %s", timeout)
}

if sig.Path != path {
t.Errorf("signal.Path mismatch: %s != %s", path, sig.Path)
}
Expand All @@ -146,9 +155,9 @@ func TestObjectSignalHandling(t *testing.T) {
}
}

checkSignal(fetchSignal(t, ch, 50*time.Millisecond), 1)
checkSignal(fetchSignal(t, ch, 50*time.Millisecond), 2)
checkSignal(fetchSignal(t, ch, 50*time.Millisecond), 5)
checkSignal(ch, 1)
checkSignal(ch, 2)
checkSignal(ch, 5)

obj.RemoveMatchSignal(iface, "Heartbeat", WithMatchObjectPath(obj.Path()))
select {
Expand Down

0 comments on commit e523abc

Please # to comment.