40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
package store
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestAppliedSIPCleanupPreservesNewerUnloadedNotification(t *testing.T) {
|
|
s, err := Open(filepath.Join(t.TempDir(), "state.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer s.Close()
|
|
first := []byte(`{"event_id":"first","event_type":"sip.config","dispatcher_id":"` + currentDispatcherID + `","payload":{"trunk_id":"1","change_type":"enabled","revision":1}}`)
|
|
if err := s.NoteSIPChange(currentDispatcherID, 1); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := s.RememberSIPSource(currentDispatcherID, first); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := s.db.Exec(`UPDATE dispatcher_state SET applied_sip_revision=1,pending_sip_revision=0 WHERE dispatcher_id=?`, currentDispatcherID); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
second := []byte(`{"event_id":"second","event_type":"sip.config","dispatcher_id":"` + currentDispatcherID + `","payload":{"trunk_id":"1","change_type":"enabled","revision":2}}`)
|
|
if err := s.NoteSIPChange(currentDispatcherID, 2); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := s.RememberSIPSource(currentDispatcherID, second); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := s.CompleteAppliedSIPSources(currentDispatcherID); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
pending, err := s.PendingSIPSources()
|
|
if err != nil || len(pending) != 1 || !bytes.Equal(pending[0].Original, second) {
|
|
t.Fatalf("new pending context lost or applied context retained: %+v %v", pending, err)
|
|
}
|
|
}
|