]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11934 add some conference test cases
authorSeven Du <dujinfang@gmail.com>
Tue, 16 Jul 2019 13:50:31 +0000 (17:50 +0400)
committerAndrey Volk <andywolk@gmail.com>
Thu, 25 Jul 2019 19:57:34 +0000 (23:57 +0400)
src/mod/applications/mod_conference/.gitignore [new file with mode: 0644]
src/mod/applications/mod_conference/Makefile.am
src/mod/applications/mod_conference/test/conf/font/AEH.ttf [new file with mode: 0644]
src/mod/applications/mod_conference/test/conf/freeswitch.xml [new file with mode: 0644]
src/mod/applications/mod_conference/test/images/signalwire.png [new file with mode: 0644]
src/mod/applications/mod_conference/test/test_image.c [new file with mode: 0644]
src/mod/applications/mod_conference/test/test_member.c [new file with mode: 0644]

diff --git a/src/mod/applications/mod_conference/.gitignore b/src/mod/applications/mod_conference/.gitignore
new file mode 100644 (file)
index 0000000..dcc5b25
--- /dev/null
@@ -0,0 +1,5 @@
+conf/freeswitch.xml.fsxml
+test/images/logo-*.png
+test/images/signalwire-scaled-*.png
+test/test_image
+test/test_member
index 79bb5504080e12a3e948d244adf3e2a03eec7d52..581228e743e6f7fcc6c39464dd28bfe1f1a5ea8a 100644 (file)
@@ -15,3 +15,22 @@ mod_conference_la_LDFLAGS += -lopenal -lm
 mod_conference_la_CFLAGS += -DOPENAL_POSITIONING
 endif
 
+
+noinst_LTLIBRARIES = libmodconference.la
+
+libmodconference_la_SOURCES  = $(mod_conference_la_SOURCES)
+libmodconference_la_CFLAGS   = $(AM_CFLAGS) -I.
+
+noinst_PROGRAMS = test/test_image test/test_member
+
+test_test_image_SOURCES = test/test_image.c
+test_test_image_CFLAGS = $(AM_CFLAGS) -I.
+test_test_image_LDFLAGS = $(AM_LDFLAGS) -avoid-version -no-undefined $(freeswitch_LDFLAGS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS)
+test_test_image_LDADD = libmodconference.la
+
+test_test_member_SOURCES = test/test_member.c
+test_test_member_CFLAGS = $(AM_CFLAGS) -I.
+test_test_member_LDFLAGS = $(AM_LDFLAGS) -avoid-version -no-undefined $(freeswitch_LDFLAGS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS)
+test_test_member_LDADD = libmodconference.la
+
+TESTS = $(noinst_PROGRAMS)
diff --git a/src/mod/applications/mod_conference/test/conf/font/AEH.ttf b/src/mod/applications/mod_conference/test/conf/font/AEH.ttf
new file mode 100644 (file)
index 0000000..5a4f544
Binary files /dev/null and b/src/mod/applications/mod_conference/test/conf/font/AEH.ttf differ
diff --git a/src/mod/applications/mod_conference/test/conf/freeswitch.xml b/src/mod/applications/mod_conference/test/conf/freeswitch.xml
new file mode 100644 (file)
index 0000000..ce76dc6
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<document type="freeswitch/xml">
+
+  <section name="configuration" description="Various Configuration">
+    <configuration name="modules.conf" description="Modules">
+      <modules>
+        <load module="mod_sndfile"/>
+        <load module="mod_loopback"/>
+        <load module="mod_dptools"/>
+        <load module="mod_ssml"/>
+        <load module="mod_tone_stream"/>
+        <load module="mod_conference"/>
+        <load module="mod_commands"/>
+        <load module="mod_console"/>
+      </modules>
+    </configuration>
+
+    <configuration name="console.conf" description="Console Logger">
+      <mappings>
+        <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
+      </mappings>
+      <settings>
+        <param name="colorize" value="true"/>
+        <param name="loglevel" value="debug"/>
+      </settings>
+    </configuration>
+
+    <configuration name="conference.conf" description="Audio Conference">
+      <profiles>
+        <profile name="default">
+        </profile>
+      </profiles>
+    </configuration>
+  </section>
+
+  <section name="dialplan" description="Regex/XML Dialplan">
+    <context name="default">
+      <extension name="sample">
+        <condition field="destination_number" expression="^3500$">
+          <action application="answer"/>
+          <action application="echo"/>
+        </condition>
+      </extension>
+
+      <extension name="sample">
+        <condition>
+          <action application="info"/>
+        </condition>
+      </extension>
+    </context>
+  </section>
+</document>
diff --git a/src/mod/applications/mod_conference/test/images/signalwire.png b/src/mod/applications/mod_conference/test/images/signalwire.png
new file mode 100644 (file)
index 0000000..8e40bf1
Binary files /dev/null and b/src/mod/applications/mod_conference/test/images/signalwire.png differ
diff --git a/src/mod/applications/mod_conference/test/test_image.c b/src/mod/applications/mod_conference/test/test_image.c
new file mode 100644 (file)
index 0000000..7e7810a
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005-2018, Anthony Minessale II <anthm@freeswitch.org>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthm@freeswitch.org>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Chris Rienzo <chris@signalwire.com>
+ * Seven Du <seven@signalwire.com>
+ *
+ *
+ * test_image.c -- test images
+ *
+ */
+#include <switch.h>
+#include <stdlib.h>
+
+#include <test/switch_test.h>
+
+FST_CORE_BEGIN("./conf")
+{
+       FST_SUITE_BEGIN(switch_ivr_originate)
+       {
+               FST_SETUP_BEGIN()
+               {
+               }
+               FST_SETUP_END()
+
+               FST_TEARDOWN_BEGIN()
+               {
+               }
+               FST_TEARDOWN_END()
+
+               FST_TEST_BEGIN(scale_test)
+               {
+                       switch_image_t *img = switch_img_read_png("images/signalwire.png", SWITCH_IMG_FMT_I420);
+                       int i;
+
+                       for(i = 2; i <= 10; i += 2) {
+                               switch_image_t *scaled_img = NULL;
+                               char name[1024];
+
+                               switch_snprintf(name, sizeof(name), "images/signalwire-scaled-I420-%d.png", i);
+                               switch_img_scale(img, &scaled_img, img->d_w / i, img->d_h / i);
+                               fst_requires(scaled_img);
+                               switch_img_write_png(scaled_img, name);
+                               switch_img_free(&scaled_img);
+                       }
+
+                       switch_img_free(&img);
+
+                       img = switch_img_read_png("images/signalwire.png", SWITCH_IMG_FMT_ARGB);
+
+                       for(i = 2; i <= 10; i += 2) {
+                               switch_image_t *scaled_img = NULL;
+                               char name[1024];
+
+                               switch_snprintf(name, sizeof(name), "images/signalwire-scaled-ARGB-%d.png", i);
+                               switch_img_scale(img, &scaled_img, img->d_w / i, img->d_h / i);
+                               fst_requires(scaled_img);
+                               switch_img_write_png(scaled_img, name);
+                               switch_img_free(&scaled_img);
+                       }
+
+                       switch_img_free(&img);
+
+               }
+               FST_TEST_END()
+
+               FST_TEST_BEGIN(scale_test)
+               {
+                       switch_image_t *img = switch_img_read_png("images/signalwire-scaled-ARGB-8.png", SWITCH_IMG_FMT_ARGB);
+                       char *font_face = "font/AEH.ttf";
+                       char *fg = "#000000";
+                       char *altfg = "#FFFFFF";
+                       char *bg = NULL;
+                       int font_size = 6;
+                       switch_img_txt_handle_t *txthandle = NULL;
+                       const char *txt = "FEESWITCH ROCKS";
+                       const char *alttxt = "freeswitch";
+
+                       switch_img_txt_handle_create(&txthandle, font_face, fg, bg, font_size, 0, NULL);
+                       switch_img_txt_handle_render(txthandle, img, 50, 3, txt, NULL, fg, bg, font_size, 0);
+                       switch_img_txt_handle_render(txthandle, img, 60, 15, alttxt, NULL, altfg, "#000000", font_size, 0);
+                       switch_img_write_png(img, "images/signalwire-scaled-ARGB-8-txt.png");
+
+                       switch_img_free(&img);
+               }
+               FST_TEST_END()
+
+
+
+       }
+       FST_SUITE_END()
+}
+FST_CORE_END()
diff --git a/src/mod/applications/mod_conference/test/test_member.c b/src/mod/applications/mod_conference/test/test_member.c
new file mode 100644 (file)
index 0000000..45e37ea
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ * Copyright (C) 2005-2019, Anthony Minessale II <anthm@freeswitch.org>
+ *
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
+ *
+ * The Initial Developer of the Original Code is
+ * Anthony Minessale II <anthm@freeswitch.org>
+ * Portions created by the Initial Developer are Copyright (C)
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Chris Rienzo <chris@signalwire.com>
+ * Seven Du <seven@signalwire.com>
+ *
+ *
+ * test_member.c -- tests member functions
+ *
+ */
+#include <switch.h>
+#include <stdlib.h>
+#include <mod_conference.h>
+#include <conference_member.c>
+
+#include <test/switch_test.h>
+
+FST_CORE_BEGIN("./conf")
+{
+       FST_SUITE_BEGIN(switch_ivr_originate)
+       {
+               FST_SETUP_BEGIN()
+               {
+               }
+               FST_SETUP_END()
+
+               FST_TEARDOWN_BEGIN()
+               {
+               }
+               FST_TEARDOWN_END()
+
+               FST_TEST_BEGIN(member_test)
+               {
+                       const char *logo = "{position=left-bot,text_x=center,"
+                               "center_offset=190,text=#000000:transparent:font/AEH.ttf:50:"
+                               "'FREESWITCH ROCKS',alt_text_x=center,alt_center_offset=190,"
+                               "alt_text_y=88,alt_text=#ffffff:transparent:font/AEH.ttf:40:"
+                               "'freeswitch'}images/signalwire.png";
+                       conference_member_t smember = { 0 };
+                       conference_member_t *member = &smember;
+                       switch_image_t *img;
+                       int i;
+
+                       switch_mutex_init(&member->write_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_mutex_init(&member->flag_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_mutex_init(&member->fnode_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_mutex_init(&member->audio_in_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_mutex_init(&member->audio_out_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_mutex_init(&member->read_mutex, SWITCH_MUTEX_NESTED, fst_pool);
+                       switch_thread_rwlock_create(&member->rwlock, fst_pool);
+
+                       conference_member_set_logo(member, logo);
+                       img = member->video_logo;
+
+                       for(i = 2; i <= 10; i += 2) {
+                               switch_image_t *scaled_img = NULL;
+                               char name[1024];
+
+                               switch_snprintf(name, sizeof(name), "images/logo-signalwire-scaled-%d.png", i);
+                               switch_img_scale(img, &scaled_img, img->d_w / i, img->d_h / i);
+                               fst_requires(scaled_img);
+                               switch_img_write_png(scaled_img, name);
+                               switch_img_free(&scaled_img);
+                       }
+
+                       switch_img_free(&img);
+               }
+               FST_TEST_END()
+
+       }
+       FST_SUITE_END()
+}
+FST_CORE_END()