diff --git a/test/dap_traffic_track_test.c b/test/dap_traffic_track_test.c
index 830e36198483364c29cf653d1352ed5876605ae1..dd408202e8c7a4ffd0b027b9d04c084ecd1a3c05 100644
--- a/test/dap_traffic_track_test.c
+++ b/test/dap_traffic_track_test.c
@@ -1,26 +1,34 @@
 #include "dap_traffic_track_test.h"
 #include <ev.h>
+#include <math.h>
 
 static struct ev_loop *loop;
-#define LOG_TAG "DTTT"
+
+static struct moc_dap_server_clients {
+    dap_server_client_t ** clients;
+    size_t count;
+} moc_dap_server_clients;
+static dap_server_t * _dap_server;
 
 static void success_callback(dap_traffic_track_result_t res[], size_t result_length) {
-   // this causes the innermost ev_run to stop iterating
-   (void)res; (void)result_length;
-   dap_pass_msg("Call callback function");
-   ev_break (EV_A_ EVBREAK_ONE);
+    dap_assert(result_length == moc_dap_server_clients.count, "dap server amount clients");
+
+    for(size_t i = 0, j = 0; (i < result_length) && (j = i + 1); i++) {
+        dap_assert_PIF(rint(res[i].download_speed_mbs) == (j * 8), "Calculate download traffic speed");
+        dap_assert_PIF(rint(res[i].upload_speed_mbs) == (j * 8), "Calculate upload traffic speed");
+    }
+    ev_break (EV_A_ EVBREAK_ONE);
 }
 
-static void error_callback() {
-    log_it(L_ERROR, "ERROR CB");
+_Noreturn static void error_callback() {
     dap_fail("Error callback call, success_callback has no been called");
 }
 
 static void test_callback() {
     time_t timeout_sucess = 1;
     loop = EV_DEFAULT;
-    dap_server_t * srv = DAP_NEW_Z(dap_server_t);
-    dap_traffic_track_init(srv, 1/* timeout sucess_callback*/);
+    /* timeout sucess_callback must be 1 for sucess calculating result*/
+    dap_traffic_track_init(_dap_server, timeout_sucess);
     dap_traffic_set_callback(success_callback);
 
     /* Add error watcher*/
@@ -29,11 +37,33 @@ static void test_callback() {
     ev_timer_init (&timeout_error_watcher, error_callback, timeout_sucess * 2, 0.);
     ev_timer_start (loop, &timeout_error_watcher);
     ev_run (loop, 0);
-    DAP_DELETE(srv);
+}
+
+
+void init_test_case() {
+    _dap_server = DAP_NEW_Z(dap_server_t);
+    moc_dap_server_clients.count = 111;
+    moc_dap_server_clients.clients = calloc(moc_dap_server_clients.count,
+                                            sizeof(dap_server_client_t *));
+    for(size_t i = 0, j = 0; (i < moc_dap_server_clients.count) && (j = i + 1); i++) {
+        moc_dap_server_clients.clients[i] = dap_client_create(_dap_server, j, NULL);
+        moc_dap_server_clients.clients[i]->upload_stat.buf_size_total = j * 1000000;
+        moc_dap_server_clients.clients[i]->download_stat.buf_size_total = j * 1000000;
+    }
+}
+
+void cleanup_test_case() {
+    for(size_t i = 0; i < moc_dap_server_clients.count; i++)
+        dap_client_remove(moc_dap_server_clients.clients[i], _dap_server);
+    ev_loop_destroy(loop);
+    DAP_DELETE(moc_dap_server_clients.clients);
+    DAP_DELETE(_dap_server);
 }
 
 
 void dap_traffic_track_tests_run(void) {
     dap_print_module_name("traffic_track");
+    init_test_case();
     test_callback();
+    cleanup_test_case();
 }