func TestBufferedSub(t *testing.T) { l := events.NewLogger() s := l.Subscribe(events.AllEvents) bs := events.NewBufferedSubscription(s, 10*events.BufferSize) go func() { for i := 0; i < 10*events.BufferSize; i++ { l.Log(events.NodeConnected, fmt.Sprintf("event-%d", i)) if i%30 == 0 { // Give the buffer routine time to pick up the events time.Sleep(20 * time.Millisecond) } } }() recv := 0 for recv < 10*events.BufferSize { evs := bs.Since(recv, nil) for _, ev := range evs { if ev.ID != recv+1 { t.Fatalf("Incorrect ID; %d != %d", ev.ID, recv+1) } recv = ev.ID } } }
"github.com/vitrun/qart/qr" ) type guiError struct { Time time.Time Error string } var ( configInSync = true guiErrors = []guiError{} guiErrorsMut sync.Mutex static func(http.ResponseWriter, *http.Request, *log.Logger) apiKey string modt = time.Now().UTC().Format(http.TimeFormat) eventSub = events.NewBufferedSubscription(events.Default.Subscribe(events.AllEvents), 1000) ) const ( unchangedPassword = "******" ) func init() { l.AddHandler(logger.LevelWarn, showGuiError) } func startGUI(cfg config.GUIConfiguration, assetDir string, m *model.Model) error { var listener net.Listener var err error if cfg.UseTLS { cert, err := loadCert(confDir, "https-")