Skip to content

Commit f227abb

Browse files
authored
Merge pull request #6994 from ant-media/remove-unused-setting
Improve test stability for deleteSubtracks
2 parents bf569a0 + 86b94b1 commit f227abb

File tree

3 files changed

+55
-35
lines changed

3 files changed

+55
-35
lines changed

src/main/java/io/antmedia/AntMediaApplicationAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ public void closeBroadcast(String streamId) {
700700
notifyHook(listenerHookURL, streamId, mainTrackId, HOOK_ACTION_END_LIVE_STREAM, name, category,
701701
null, null, metaData, null);
702702
}
703-
703+
704704
PublishEndedEvent publishEndedEvent = new PublishEndedEvent();
705705
publishEndedEvent.setStreamId(streamId);
706706
publishEndedEvent.setDurationMs(System.currentTimeMillis() - broadcast.getStartTime());

src/main/java/io/antmedia/rest/RestServiceBase.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,16 @@ private boolean deleteSubtracks(Broadcast broadcast) {
398398

399399
for (Broadcast subtrack : subtracks) {
400400
boolean subtrackDeleted = getDataStore().delete(subtrack.getStreamId());
401-
if (!subtrackDeleted) {
402-
logger.error("Subtrack {} could not be deleted", subtrack.getStreamId());
403-
result = false;
401+
if (!subtrackDeleted ) {
402+
403+
//before returning false, check the track exists because it may be deleted automatically if it's zombi and stopped
404+
Broadcast subtrackBroadcast = getDataStore().get(subtrack.getStreamId());
405+
406+
if (subtrackBroadcast != null)
407+
{
408+
logger.error("Subtrack {} could not be deleted", subtrack.getStreamId());
409+
result = false;
410+
}
404411
}
405412
}
406413

src/test/java/io/antmedia/test/rest/BroadcastRestServiceV2UnitTest.java

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ public void testRemoveEndpointV2()
905905
assertTrue(result.isSuccess());
906906

907907
assertEquals(1, store.get(streamId).getEndPointList().size());
908-
908+
909909
BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
910910
broadcastUpdate.setStatus(AntMediaApplicationAdapter.BROADCAST_STATUS_BROADCASTING);
911911
broadcastUpdate.setUpdateTime(System.currentTimeMillis());
@@ -1777,7 +1777,7 @@ public void testEnableMp4Muxing() throws Exception
17771777
BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
17781778
broadcastUpdate.setStatus(AntMediaApplicationAdapter.BROADCAST_STATUS_BROADCASTING);
17791779
broadcastUpdate.setUpdateTime(System.currentTimeMillis());
1780-
1780+
17811781
store.updateBroadcastFields(testBroadcast.getStreamId(), broadcastUpdate);
17821782

17831783
assertTrue(restServiceSpy.enableRecordMuxing(testBroadcast.getStreamId(), true, "mp4", 0).isSuccess());
@@ -1946,10 +1946,10 @@ public void testSubscriberNone32BitSecret() {
19461946
public void testTimeBasedSubscriberOperations() {
19471947

19481948
DataStore store = new MapDBStore(RandomStringUtils.randomAlphanumeric(6) + ".db", vertx);
1949-
1949+
19501950
AppSettings appSettings = new AppSettings();
19511951
appSettings.setWriteSubscriberEventsToDatastore(true);
1952-
1952+
19531953
store.setAppSettings(appSettings);
19541954

19551955
restServiceReal.setDataStore(store);
@@ -1976,22 +1976,22 @@ public void testTimeBasedSubscriberOperations() {
19761976

19771977
assertEquals(2, subscribers.size());
19781978
assertEquals(2, subscriberStats.size());
1979-
1979+
19801980
List<ConnectionEvent> connectionEvents = restServiceReal.getConnectionEvents(subscriber.getStreamId(), 0, 10, null);
19811981
assertEquals(0, connectionEvents.size());
1982-
1982+
19831983
ConnectionEvent event = new ConnectionEvent();
19841984
event.setEventType(ConnectionEvent.CONNECTED_EVENT);
19851985
event.setType(Subscriber.PLAY_TYPE);
19861986

1987-
assertTrue(store.addSubscriberConnectionEvent(subscriber.getStreamId(), subscriber.getSubscriberId(), event));
1988-
1987+
assertTrue(store.addSubscriberConnectionEvent(subscriber.getStreamId(), subscriber.getSubscriberId(), event));
1988+
19891989
connectionEvents = restServiceReal.getConnectionEvents(null, 0, 10, null);
19901990
assertEquals(0, connectionEvents.size());
1991-
1991+
19921992
connectionEvents = restServiceReal.getConnectionEvents(subscriber.getStreamId(), 0, 10, null);
19931993
assertEquals(1, connectionEvents.size());
1994-
1994+
19951995
connectionEvents = restServiceReal.getConnectionEvents(subscriber.getStreamId(), 0, 10, subscriber.getSubscriberId());
19961996
assertEquals(1, connectionEvents.size());
19971997

@@ -2616,7 +2616,7 @@ public void testUpdateIPCamera() {
26162616
Mockito.doReturn(true).when(streamSourceRest).checkStreamUrl(any());
26172617

26182618
Mockito.doReturn(true).when(streamSourceRest).checkStopStreaming(any());
2619-
2619+
26202620
BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
26212621
broadcastUpdate.setUsername("new_user");
26222622
result = streamSourceRest.updateBroadcast(streamSource.getStreamId(), broadcastUpdate);
@@ -2626,16 +2626,16 @@ public void testUpdateIPCamera() {
26262626

26272627

26282628

2629-
2630-
2629+
2630+
26312631
broadcastUpdate = new BroadcastUpdate();
26322632
broadcastUpdate.setStreamId("test");
26332633
broadcastUpdate.setStreamUrl("rtsp://test2");
26342634
broadcastUpdate.setName("testIPcamera");
26352635
broadcastUpdate.setUsername("");
26362636
broadcastUpdate.setPassword("");
26372637
broadcastUpdate.setIpAddr("");
2638-
2638+
26392639
result = streamSourceRest.updateBroadcast(broadcastUpdate.getStreamId(), broadcastUpdate);
26402640

26412641
assertEquals(true, result.isSuccess());
@@ -2788,7 +2788,7 @@ public void testUpdateCamInfo() {
27882788
Mockito.doReturn(false).when(sfm).isStreamRunning(any());
27892789

27902790
store.save(newCam);
2791-
2791+
27922792
BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
27932793
broadcastUpdate.setSubFolder("testFolder");
27942794

@@ -2887,7 +2887,7 @@ public void testAddStreamSourceWithEndPoint() {
28872887
assertEquals(1, source.getEndPointList().size());
28882888
BroadcastUpdate broadcastUpdate = new BroadcastUpdate();
28892889
broadcastUpdate.setEndPointList(source.getEndPointList());
2890-
2890+
28912891
//update first source now. At the moment we have endpoint_1
28922892
result = streamSourceRest.updateBroadcast(source.getStreamId(), broadcastUpdate);
28932893
assertEquals(1, source.getEndPointList().size());
@@ -2986,7 +2986,7 @@ public void testAddSubtrackWhenThereIsALimit() throws Exception
29862986

29872987
Broadcast mainTrack= new Broadcast();
29882988
mainTrack.setStreamId(mainTrackId);
2989-
2989+
29902990
datastore.save(mainTrack);
29912991

29922992
//it should be false because there is no subtrack
@@ -3770,7 +3770,7 @@ public void testCheckURL() {
37703770
assertFalse(restServiceReal.checkStreamUrl("dummy://something"));
37713771
}
37723772

3773-
3773+
37743774
@Test
37753775
public void testDeleteBroadcastWithSubtracks() {
37763776
AppSettings settings = new AppSettings();
@@ -3784,7 +3784,6 @@ public void testDeleteBroadcastWithSubtracks() {
37843784
restServiceReal.setAppCtx(context);
37853785
when(context.containsBean(any())).thenReturn(false);
37863786

3787-
37883787
DataStore store = Mockito.spy(new InMemoryDataStore("testdb"));
37893788
restServiceReal.setDataStore(store);
37903789

@@ -3797,7 +3796,7 @@ public void testDeleteBroadcastWithSubtracks() {
37973796
Mockito.when(appAdaptor.stopStreaming(any(), anyBoolean())).thenReturn(new Result(true));
37983797

37993798
restServiceReal.setApplication(appAdaptor);
3800-
3799+
38013800
Broadcast mainTrack = new Broadcast();
38023801
try {
38033802
mainTrack.setStreamId("mainTrack");
@@ -3806,7 +3805,7 @@ public void testDeleteBroadcastWithSubtracks() {
38063805
}
38073806
mainTrack.setStatus(IAntMediaStreamHandler.BROADCAST_STATUS_BROADCASTING);
38083807
mainTrack.setUpdateTime(System.currentTimeMillis());
3809-
3808+
38103809
Broadcast subtrack1 = new Broadcast();
38113810
try {
38123811
subtrack1.setStreamId("subtrack1");
@@ -3817,7 +3816,7 @@ public void testDeleteBroadcastWithSubtracks() {
38173816
subtrack1.setStatus(IAntMediaStreamHandler.BROADCAST_STATUS_BROADCASTING);
38183817
subtrack1.setUpdateTime(System.currentTimeMillis());
38193818

3820-
3819+
38213820
Broadcast subtrack2 = new Broadcast();
38223821
try {
38233822
subtrack2.setStreamId("subtrack2");
@@ -3827,7 +3826,7 @@ public void testDeleteBroadcastWithSubtracks() {
38273826
subtrack2.setMainTrackStreamId(mainTrack.getStreamId());
38283827
subtrack2.setStatus(IAntMediaStreamHandler.BROADCAST_STATUS_BROADCASTING);
38293828
subtrack2.setUpdateTime(System.currentTimeMillis());
3830-
3829+
38313830
Broadcast subtrack3 = new Broadcast();
38323831
try {
38333832
subtrack3.setStreamId("subtrack3");
@@ -3838,12 +3837,12 @@ public void testDeleteBroadcastWithSubtracks() {
38383837
subtrack3.setStatus(IAntMediaStreamHandler.BROADCAST_STATUS_FINISHED);
38393838
subtrack3.setUpdateTime(System.currentTimeMillis() - 50000);
38403839

3841-
3840+
38423841
store.save(mainTrack);
38433842
store.save(subtrack1);
38443843
store.save(subtrack2);
38453844
store.save(subtrack3);
3846-
3845+
38473846
assertNotNull(store.get(mainTrack.getStreamId()));
38483847
assertNotNull(store.get(subtrack1.getStreamId()));
38493848
assertNotNull(store.get(subtrack2.getStreamId()));
@@ -3853,28 +3852,42 @@ public void testDeleteBroadcastWithSubtracks() {
38533852
assertTrue(result.isSuccess());
38543853

38553854
verify(appAdaptor).stopStreaming(eq(mainTrack), anyBoolean());
3856-
3855+
38573856
assertNull(store.get(mainTrack.getStreamId()));
38583857
assertNull(store.get(subtrack1.getStreamId()));
38593858
assertNull(store.get(subtrack2.getStreamId()));
38603859
assertNull(store.get(subtrack3.getStreamId()));
3861-
3862-
3860+
3861+
38633862
store.save(mainTrack);
38643863
store.save(subtrack1);
38653864
store.save(subtrack2);
3866-
3865+
38673866
Mockito.doReturn(false).when(store).delete(subtrack1.getStreamId());
38683867
Mockito.doReturn(Arrays.asList(subtrack1)).when(store).getSubtracks(anyString(), anyInt(), anyInt(), anyString());
38693868

38703869
result = restServiceReal.deleteBroadcast(mainTrack.getStreamId(), true);
38713870
assertFalse(result.isSuccess());
3872-
3871+
38733872
assertNull(store.get(mainTrack.getStreamId()));
38743873
assertNotNull(store.get(subtrack1.getStreamId()));
38753874

3875+
{
3876+
store.save(mainTrack);
3877+
store.save(subtrack1);
3878+
3879+
Mockito.doReturn(false).when(store).delete(subtrack1.getStreamId());
3880+
Mockito.doReturn(null).when(store).get(subtrack1.getStreamId());
3881+
3882+
result = restServiceReal.deleteBroadcast(mainTrack.getStreamId(), true);
3883+
//it's true because get returns null -> Mockito.doReturn(null).when(store).get(subtrack1.getStreamId());
3884+
assertTrue(result.isSuccess());
3885+
3886+
assertNull(store.get(mainTrack.getStreamId()));
3887+
3888+
}
38763889

38773890
}
38783891

3879-
3892+
38803893
}

0 commit comments

Comments
 (0)