Call monitor via callback in server
This commit is contained in:
@@ -23,6 +23,18 @@ func New(port string, trigger func(string)) (*Monitor, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (monitor *Monitor) Submit(url string, interval time.Duration) error {
|
||||
select {
|
||||
case monitor.newItems <- Item{
|
||||
URL: url,
|
||||
Interval: Duration{interval},
|
||||
}:
|
||||
case <-time.After(time.Second * 5):
|
||||
return errors.New("timeout submitting new item")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (monitor *Monitor) Start() error {
|
||||
errs := make(chan error)
|
||||
go func() {
|
||||
|
||||
@@ -17,19 +17,14 @@ func Test_Monitor(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("cannot create new monitor: %v", err)
|
||||
}
|
||||
itemsNew := make(chan Item, 1)
|
||||
m.newItems = itemsNew
|
||||
|
||||
if err := m.Start(); err != nil {
|
||||
t.Fatalf("cannot start monitor: %v", err)
|
||||
}
|
||||
|
||||
for i := 0; i < numItems; i++ {
|
||||
item := NewItem("item"+strconv.Itoa(i), time.Second+time.Second*time.Duration(i)*1)
|
||||
select {
|
||||
case itemsNew <- *item:
|
||||
case <-time.After(time.Second * 5):
|
||||
t.Fatalf("could not add new item in time limit")
|
||||
if err := m.Submit("item"+strconv.Itoa(i), time.Second+time.Second*time.Duration(i)); err != nil {
|
||||
t.Errorf("failed to submit item %d: %v", i, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user