Fix RTSP bugs
authorPraveen Naik S <praveen.s@samsung.com>
Fri, 24 Mar 2023 11:01:10 +0000 (16:31 +0530)
committerPraveen Naik S <praveen.s@samsung.com>
Wed, 14 Jun 2023 11:27:51 +0000 (20:27 +0900)
android/aitt/src/main/java/com/samsung/android/aitt/stream/RTSPStream.java
android/aitt/src/test/java/com/samsung/android/aitt/stream/RTSPStreamUnitTest.java
android/modules/rtsp/src/androidTest/java/com/samsung/android/modules/rtsp/RTSPInstrumentedTest.java
android/modules/rtsp/src/main/res/values/strings.xml

index 072bfd3bd2bfe29da7fda82c72dcac15ebab9e52..aa929fbd6f16e3c6625866cbb66da738df20e538 100644 (file)
@@ -39,6 +39,9 @@ public class RTSPStream implements AittStream {
     private static final String URL_PREFIX = "rtsp://";
     private static final String HEIGHT = "height";
     private static final String WIDTH = "width";
+    private static final String EMPTY_STRING = "";
+    private static final int DEFAULT_WIDTH = 640;
+    private static final int DEFAULT_HEIGHT = 480;
 
     private final StreamRole streamRole;
     private final String topic;
@@ -121,23 +124,42 @@ public class RTSPStream implements AittStream {
         if (config == null)
             throw new IllegalArgumentException("Invalid configuration");
 
-        if (config.getUrl() != null) {
-            String url = config.getUrl();
-            if (!url.startsWith(URL_PREFIX))
-                throw new IllegalArgumentException("Invalid RTSP URL");
-
-            discoveryInfo.url = config.getUrl();
+        String url = config.getUrl();
+        if (url == null || !url.startsWith(URL_PREFIX)) {
+            throw new IllegalArgumentException("Invalid RTSP URL");
         }
+
+        discoveryInfo.url = url;
+
         if (config.getId() != null) {
             discoveryInfo.id = config.getId();
+        } else {
+            discoveryInfo.id = EMPTY_STRING;
         }
+
         if (config.getPassword() != null) {
             discoveryInfo.password = config.getPassword();
+        } else {
+            discoveryInfo.password = EMPTY_STRING;
         }
 
-        discoveryInfo.height = config.getHeight();
+        int height = config.getHeight();
+        if (height == 0) {
+            discoveryInfo.height = DEFAULT_HEIGHT;
+        } else if (height < 0) {
+            throw new IllegalArgumentException("Invalid stream height");
+        } else {
+            discoveryInfo.height = height;
+        }
 
-        discoveryInfo.width = config.getWidth();
+        int width = config.getWidth();
+        if (width == 0) {
+            discoveryInfo.width = DEFAULT_WIDTH;
+        } else if (width < 0) {
+            throw new IllegalArgumentException("Invalid stream width");
+        } else {
+            discoveryInfo.width = width;
+        }
     }
 
     /**
index e5091f25a711c522ce606053315122818294fb84..e592f6e21a016b369ecf495e345a6eec43f8681c 100644 (file)
@@ -29,6 +29,8 @@ public class RTSPStreamUnitTest {
    private final String url = "rtsp://192.168.1.4:1935";
    private final String id = "id1";
    private final String password = "pwd1";
+   private final int height = 640;
+   private final int width = 480;
 
    @Test
    public void testCreatePublisherStream_P() {
@@ -61,6 +63,8 @@ public class RTSPStreamUnitTest {
       configBuilder.setUrl(url);
       configBuilder.setId(id);
       configBuilder.setPassword(password);
+      configBuilder.setHeight(height);
+      configBuilder.setWidth(width);
       rtspStream.setConfig(configBuilder.build());
    }
 
@@ -95,6 +99,8 @@ public class RTSPStreamUnitTest {
       configBuilder.setUrl(url);
       configBuilder.setId(id);
       configBuilder.setPassword(password);
+      configBuilder.setHeight(height);
+      configBuilder.setWidth(width);
       rtspStream.setConfig(configBuilder.build());
 
       rtspStream.setStateCallback(state -> assertEquals("Expected state is ready", state, AittStream.StreamState.READY));
@@ -110,6 +116,8 @@ public class RTSPStreamUnitTest {
       configBuilder.setUrl(url);
       configBuilder.setId(id);
       configBuilder.setPassword(password);
+      configBuilder.setHeight(height);
+      configBuilder.setWidth(width);
       rtspStream.setConfig(configBuilder.build());
 
       AtomicBoolean isStarted = new AtomicBoolean(false);
index c9a5b5f58c49647a26102e1e69dff3ff75f4183e..dcbcfc88a1848000df9bb04a53db2fd622b4ad1a 100644 (file)
  */
 package com.samsung.android.modules.rtsp;
 
-import static com.samsung.android.aitt.stream.AittStream.StreamRole.PUBLISHER;
-import static com.samsung.android.aitt.stream.AittStream.StreamRole.SUBSCRIBER;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertEquals;
 
 import android.content.Context;
 
 import androidx.test.platform.app.InstrumentationRegistry;
 
-import com.samsung.android.aitt.Aitt;
-import com.samsung.android.aitt.stream.AittStream;
-import com.samsung.android.aitt.stream.AittStreamConfigBuilder;
-
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class RTSPInstrumentedTest {
-
-    private static final String TEST_TOPIC = "android/test/rtsp";
-    private static final String AITT_ID = "AITT_ANDROID";
-    private static final String ERROR_MESSAGE_AITT_NULL = "An AITT instance is null.";
-    private static final int PORT = 1883;
-    private static final String RTSP_URL = "rtsp://192.168.1.4:1935";
-
-    private static String brokerIp;
-    private static Context appContext;
-
-    @BeforeClass
-    public static void initialize() {
-        appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-        appContext.getString(R.string.testBrokerIp);
-    }
-
     @Test
-    public void testRTSPBasicStreaming() {
-        try {
-            Aitt aitt = new Aitt(appContext, AITT_ID);
-            assertNotNull(ERROR_MESSAGE_AITT_NULL, aitt);
-            aitt.connect(brokerIp, PORT);
-
-            AittStream subscriber = aitt.createStream(Aitt.Protocol.RTSP, TEST_TOPIC, SUBSCRIBER);
-
-            AittStream.StreamDataCallback callback = data -> {
-                //Do something
-            };
-            subscriber.setReceiveCallback(callback);
-            subscriber.start();
-
-            AittStream publisher = aitt.createStream(Aitt.Protocol.RTSP, TEST_TOPIC, PUBLISHER);
-            AittStreamConfigBuilder builder = new AittStreamConfigBuilder();
-            builder.setUrl(RTSP_URL);
-            publisher.setConfig(builder.build());
-            publisher.start();
-
-            publisher.stop();
-            subscriber.stop();
-
-            aitt.destroyStream(publisher);
-            aitt.destroyStream(subscriber);
-        } catch (Exception e) {
-            fail("Failed testRTSPBasicStreaming, (" + e + ")");
-        }
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+        assertEquals("com.example.aittnative.test", appContext.getPackageName());
     }
 }
index 98ea3ee7f0dbb895e3bb880c501a143a89c49a16..089ba90fb463b1fd0e6a15300ed531d60318a416 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="testBrokerIp">192.168.1.59</string>
-</resources>
\ No newline at end of file
+    <string name="testBrokerIp">192.168.1.3</string>
+</resources>