func TestEmptyConfig(t *testing.T) { a := assert.New(t) cfg, err := ReadConfig(strings.NewReader("")) require.Nil(t, err) a.Equal(0, len(cfg.Checks)) a.Equal(0, len(cfg.Publishers)) }
func TestRunAndPublishChecks(t *testing.T) { runner, err := NewRunnerFromFile("testdata/runnertest.yml") require.Nil(t, err) publisher := runner.publishers["memory"] p := publisher.(*MemoryPublisher) runner.Start() defer runner.Stop() time.Sleep(500 * time.Millisecond) if count := p.EventCount("criticalcheck"); count != 0 { t.Errorf("Expected criticalcheck eventcount to be 0, not %v", count) } if count := p.EventCount("okcheck"); count != 0 { t.Errorf("Expected okcheck eventcount to be 0, not %v", count) } time.Sleep(550 * time.Millisecond) if count := p.EventCount("okcheck"); count != 0 { // Checks are run at retry interval after startup, so should not // trigger until 2 seconds t.Errorf("Expected okcheck eventcount to be 0, not %v", count) } if count := p.EventCount("criticalcheck"); count != 1 { // Checks are run at retry interval after startup, so should have // triggered after 1 second t.Errorf("Expected criticalcheck eventcount to be 1, not %v", count) } time.Sleep(1 * time.Second) if count := p.EventCount("okcheck"); count != 1 { // Okcheck should now have triggered once too, as retry = 2s t.Errorf("Expected okcheck eventcount to be 1, not %v", count) } if count := p.EventCount("criticalcheck"); count != 2 { // Criticalcheck has retry = 1s so should have triggered twice now t.Errorf("Expected criticalcheck eventcount to be 2, not %v", count) } time.Sleep(1 * time.Second) if count := p.EventCount("okcheck"); count != 2 { // Last result for okcheck was OK, so should now be // triggering at interval (1s) rather than retry interval (2s) t.Errorf("Expected okcheck eventcount to be 2, not %v", count) } if count := p.EventCount("criticalcheck"); count != 3 { t.Errorf("Expected criticalcheck eventcount to be 3, not %v", count) } }
func TestStartStop(t *testing.T) { r, err := NewRunnerFromFile("testdata/config.yml") require.Nil(t, err) r.Start() r.Stop() }