@xiangli-cmu Can you provide a way to stop this loop? The tests should be self contained and should be able to clean up when they're done. Maybe pass in a `chan bool` that you can `close()` which will allow you to broadcast to allow mockSyncServices with the same chan that they need to stop.

Also, you can inline the `Tick`:

```go
for now := range time.Tick(500 * time.Millisecond) {
...
}
```

The time should be reversed too so that `500` comes before `time.Millisecond`. That's just a stylistic critique though.