diff --git a/jni/pjproject-android/.svn/pristine/1d/1db4a50044cbfafd3479a7355b8ef0471e48d178.svn-base b/jni/pjproject-android/.svn/pristine/1d/1db4a50044cbfafd3479a7355b8ef0471e48d178.svn-base
new file mode 100644
index 0000000..690598b
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/1d/1db4a50044cbfafd3479a7355b8ef0471e48d178.svn-base
@@ -0,0 +1,130 @@
+/* $Id$ */
+/* 
+ * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
+ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+ */
+#ifndef __TEST_H__
+#define __TEST_H__
+
+#include <pjsip/sip_types.h>
+
+extern pjsip_endpoint *endpt;
+extern pj_caching_pool caching_pool;
+
+#define TEST_UDP_PORT	    15060
+#define TEST_UDP_PORT_STR   "15060"
+
+/**
+ * Memory size to use in caching pool.
+ * Default: 2MB
+ */
+#ifndef PJSIP_TEST_MEM_SIZE
+#  define PJSIP_TEST_MEM_SIZE	    (2*1024*1024)
+#endif
+
+
+
+#define INCLUDE_MESSAGING_GROUP	    1
+#define INCLUDE_TRANSPORT_GROUP	    1
+#define INCLUDE_TSX_GROUP	    1
+#define INCLUDE_INV_GROUP	    1
+#define INCLUDE_REGC_GROUP	    1
+
+#define INCLUDE_BENCHMARKS	    1
+
+/*
+ * Include tests that normally would fail under certain gcc
+ * optimization levels.
+ */
+#ifndef INCLUDE_GCC_TEST
+#   define INCLUDE_GCC_TEST	    0
+#endif
+
+
+#define INCLUDE_URI_TEST	INCLUDE_MESSAGING_GROUP
+#define INCLUDE_MSG_TEST	INCLUDE_MESSAGING_GROUP
+#define INCLUDE_MULTIPART_TEST	INCLUDE_MESSAGING_GROUP
+#define INCLUDE_TXDATA_TEST	INCLUDE_MESSAGING_GROUP
+#define INCLUDE_TSX_BENCH	INCLUDE_MESSAGING_GROUP
+#define INCLUDE_UDP_TEST	INCLUDE_TRANSPORT_GROUP
+#define INCLUDE_LOOP_TEST	INCLUDE_TRANSPORT_GROUP
+#define INCLUDE_TCP_TEST	INCLUDE_TRANSPORT_GROUP
+#define INCLUDE_RESOLVE_TEST	INCLUDE_TRANSPORT_GROUP
+#define INCLUDE_TSX_TEST	INCLUDE_TSX_GROUP
+#define INCLUDE_TSX_DESTROY_TEST INCLUDE_TSX_GROUP
+#define INCLUDE_INV_OA_TEST	INCLUDE_INV_GROUP
+#define INCLUDE_REGC_TEST	INCLUDE_REGC_GROUP
+
+
+/* The tests */
+int uri_test(void);
+int msg_test(void);
+int msg_err_test(void);
+int multipart_test(void);
+int txdata_test(void);
+int tsx_bench(void);
+int tsx_destroy_test(void);
+int transport_udp_test(void);
+int transport_loop_test(void);
+int transport_tcp_test(void);
+int resolve_test(void);
+int regc_test(void);
+
+struct tsx_test_param
+{
+    int type;
+    int port;
+    char *tp_type;
+};
+
+int tsx_basic_test(struct tsx_test_param *param);
+int tsx_uac_test(struct tsx_test_param *param);
+int tsx_uas_test(struct tsx_test_param *param);
+
+/* Transport test helpers (transport_test.c). */
+int generic_transport_test(pjsip_transport *tp);
+int transport_send_recv_test( pjsip_transport_type_e tp_type,
+			      pjsip_transport *ref_tp,
+			      char *target_url,
+			      int *p_usec_rtt);
+int transport_rt_test( pjsip_transport_type_e tp_type,
+		       pjsip_transport *ref_tp,
+		       char *target_url,
+		       int *pkt_lost);
+int transport_load_test(char *target_url);
+
+/* Invite session */
+int inv_offer_answer_test(void);
+
+/* Test main entry */
+int  test_main(void);
+
+/* Test utilities. */
+void app_perror(const char *msg, pj_status_t status);
+int  init_msg_logger(void);
+int  msg_logger_set_enabled(pj_bool_t enabled);
+void flush_events(unsigned duration);
+
+
+void report_ival(const char *name, int value, const char *valname, const char *desc);
+void report_sval(const char *name, const char* value, const char *valname, const char *desc);
+
+
+/* Settings. */
+extern int log_level;
+
+#endif	/* __TEST_H__ */
