diff --git a/sigtran/sua_client_test.c b/sigtran/sua_client_test.c
new file mode 100644
index 0000000..552e0f0
--- /dev/null
+++ b/sigtran/sua_client_test.c
@@ -0,0 +1,57 @@
+#include "sua_test_common.h"
+
+struct osmo_sua_user *g_user;
+struct sua_link *g_link;
+
+static int sccp_sap_up(struct osmo_prim_hdr *oph, void *link)
+{
+	struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
+	struct osmo_prim_hdr *resp = NULL;
+	uint8_t payload[] = { 0xa1, 0xa2, 0xa3 };
+
+	printf("sccp_sap_up(%s)\n", osmo_sccp_prim_name(oph));
+
+	switch (OSMO_PRIM_HDR(oph)) {
+	case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_CONFIRM):
+		printf("N-CONNECT.ind(%u), issuing DATA.req\n",
+			prim->u.connect.conn_id);
+		resp = make_dt1_req(prim->u.connect.conn_id, payload, sizeof(payload));
+		break;
+	}
+
+	if (resp)
+		osmo_osmo_sua_user_link_down(link, resp);
+
+	msgb_free(oph->msg);
+	return 0;
+}
+
+
+int main(int argc, char **argv)
+{
+	void *ctx = talloc_named_const(NULL, 1, "root");
+	int rc;
+
+	osmo_sua_set_log_area(DSUA);
+	xua_set_log_area(DXUA);
+
+	osmo_init_logging(&test_log_info);
+
+	g_user = osmo_sua_user_create(ctx, sccp_sap_up);
+
+	rc = sua_client_connect(g_user, "127.0.0.1", 2342);
+	if (rc < 0) {
+		exit(1);
+	}
+
+	g_link = sua_client_get_link(g_user);
+
+	int i = 8000;
+
+	while (1) {
+		if (i < 8010)
+			tx_conn_req(g_link, i++);
+		//tx_unitdata(g_link);
+		osmo_select_main(0);
+	}
+}
