test: cover read-only media refresh (#54)
This commit is contained in:
@@ -40,6 +40,13 @@ type fakeController struct {
|
||||
status mediamtx.PathStatus
|
||||
}
|
||||
|
||||
type refreshController struct{ status mediamtx.PathStatus }
|
||||
|
||||
func (f refreshController) Apply(context.Context, mediamtx.Source) error { return nil }
|
||||
func (f refreshController) Status(context.Context, string) (mediamtx.PathStatus, error) {
|
||||
return f.status, nil
|
||||
}
|
||||
|
||||
func (f fakeController) Apply(context.Context, mediamtx.Source) error { return f.applyErr }
|
||||
func (f fakeController) Status(context.Context, string) (mediamtx.PathStatus, error) {
|
||||
if f.status.Name == "error" {
|
||||
@@ -142,5 +149,22 @@ func TestConfigureProfilesIsIdempotentAndReportsMediaState(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRefreshTracksOnDemandReaderWithoutReapplyingRoute(t *testing.T) {
|
||||
store := NewMemoryStore()
|
||||
route := Route{ID: "device:main", DeviceID: "device", ProfileToken: "main", Path: "sense_device_main", Desired: "running", Actual: "waiting", Detail: "等待上游拉流", Version: 2}
|
||||
if err := store.Save(context.Background(), route); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
service := NewService(store, &fakeProcess{}, refreshController{status: mediamtx.PathStatus{Name: route.Path, Ready: true, Readers: 1}})
|
||||
result, err := service.Refresh(context.Background(), route.ID)
|
||||
if err != nil || result.Actual != "ready" || result.Readers != 1 || result.Detail != "上游拉流正常" {
|
||||
t.Fatalf("result=%#v err=%v", result, err)
|
||||
}
|
||||
unchanged, err := service.Refresh(context.Background(), route.ID)
|
||||
if err != nil || unchanged.Version != result.Version {
|
||||
t.Fatalf("unchanged=%#v err=%v", unchanged, err)
|
||||
}
|
||||
}
|
||||
|
||||
func rtspReady() rtsp.Result { return rtsp.Result{Status: "ready"} }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user