1 //test2.c
2
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include "LIB_bytes_buffer.h"
10
11
12 #include
13
14 #include "LIB_bytes_buffer_apply.h"
15
16
17 static void *g_uart_buffer_handler =NULL;18 static void *g_uart_buffer_handler2 =NULL;19
20 //return 0成功, -1失败
21 static int XXXX_task_init(void)22 {23
24 g_uart_buffer_handler = BytesBuffer_create(); //创建缓冲区对象
25 XXXX_print_ln_I("BYTESBUFFER_create,h=%x.", g_uart_buffer_handler);26 if (NULL ==g_uart_buffer_handler)27 {28 XXXX_print_ln_E("BYTESBUFFER_create Failed.");29 }30
31
32 g_uart_buffer_handler2 = BytesBuffer_create(); //创建缓冲区对象
33
34 return 0;35 }36
37 int give_me_more_data(void)38 {39 unsigned char buff[1024] = {'\0'};40 int ret_read = 0;41 int ret_append = 0;42
43 memset((void *)buff, 0, sizeof(buff));44 ret_read = BytesBuffer_read(g_uart_buffer_handler2, buff, sizeof(buff) - 1);45 if (0 >=ret_read) {46 returnret_read;47 }48 XXXX_print_ln_W(",h=%x,BYTESBUFFER_read_ret=%d,expect_read_len=%u", g_uart_buffer_handler2, ret_read, sizeof(buff) - 1);49
50 ret_append = BytesBuffer_add(g_uart_buffer_handler, buff, ret_read, 1);51 XXXX_print_ln_W(",h=%x,BYTESBUFFER_append_ret=%d,append_size=%u", g_uart_buffer_handler, ret_append, ret_read);52
53 returnret_read;54 }55
56 int XXXX_task_buffer_append(void *buffer, unsigned shortsize)57 {58 int ret = -1;59
60 /*参数检查*/
61 if (NULL == buffer || 0 ==size)62 {63 XXXX_print_ln_E("wrong para.");64 return -1;65 }66
67 ret = BytesBuffer_add(g_uart_buffer_handler2, buffer, (unsigned int)size, 1);68 XXXX_print_ln_W(",h=%x,BYTESBUFFER_append_ret=%d,append_size=%u, buffer=%s", g_uart_buffer_handler2, ret, (unsigned int)size, buffer);69
70 returnret;71 }72
73 int file_w(unsigned char *in_buf, unsigned intlen)74 {75 static int fp_w = -1;76
77 if (-1 ==fp_w)78 {79 fp_w = open("./test2_w.txt", O_RDWR|O_CREAT|O_TRUNC);80 XXXX_print_ln_I("fp_w=%d%s", fp_w, "./test2_w.txt");81 }82
83 write(fp_w, in_buf, len);84
85 return 0;86 }87
88 int file_r(unsigned char *in_buf, unsigned intlen)89 {90 static int fp_r = -1;91
92 if (-1 ==fp_r)93 {94 fp_r = open("./test2_r.txt", O_RDWR|O_CREAT|O_TRUNC);95 XXXX_print_ln_I("fp_r=%d%s", fp_r, "./test2_r.txt");96 }97
98 if (0
102 return 0;103 }104
105
106
107 void *thr_fn2(void *arg)108
109 {110 int ret_next_item = 0;111 int ret_parser_each = 0;112 unsigned char buff[2048] = {'\0'};113
114 for( ; ; )115 {116 //XXXX_sleep_ms(30);
117
118
119 give_me_more_data();120
121 memset((void *)buff, 0, sizeof(buff));122 ret_next_item = XXXX_LIB_BYTESBUFFER_read_next_item(g_uart_buffer_handler, buff, sizeof(buff), 50);123
124 if (0 >=ret_next_item) {125 continue;126 }127
128
129 XXXX_print_ln_W("\t\t\t\t\t\trecv[uart0]
133 file_r(buff, ret_next_item);134 }135
136 }137
138 void XXXX_MINORNETHELPER_AT_PARSER_parser(char *buff, intlen)139 {140 XXXX_task_buffer_append(buff, len);141 file_w(buff, len);142 //usleep(1000 * 50);
143 }144
145 void test0(void)146 {147
148 char *buff6 = "+SKTRPT=1,6,1.1.1.1,3333\r\n\r\nqwert+OK+ERR5"; //长度不够的测试用例
149 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));150 }151
152 void test1(void)153 {154 char *buff = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE";155
156 XXXX_MINORNETHELPER_AT_PARSER_parser(buff, strlen(buff));157 }158
159 void test2(void)160 {161 char *buff = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF";162
163 XXXX_MINORNETHELPER_AT_PARSER_parser(buff, strlen(buff));164 }165
166 void test3(void)167 {168 char *buff = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeAB";169
170 XXXX_MINORNETHELPER_AT_PARSER_parser(buff, strlen(buff));171 }172
173
174
175 void test4(void)176 {177 char *buff1 = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeAB";178 char *buff2 = "liuy";179
180 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));181 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));182 }183
184 void test5(void)185 {186 char *buff1 = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeAB";187 char *buff2 = "liuy+SKTRPT=1,13,1.1.1.1,3333\r\n\r\nabcdeABCDEFG";188
189 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));190 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));191 }192
193
194 void test6(void)195 {196 char *buff1 = "go+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDQ+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeAB";197 char *buff2 = "liuy+SKTRPT=1,13,1.1.1.1,3333\r\n\r\nabcdeABCDEFG";198
199 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));200 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));201 }202
203 void test7(void)204 {205 char *buff1 = "go+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeAB";206 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));207
208 char *buff2 = "liuy+SKTRPT=1,13,1.1.1.1,3333\r\n\r\nabcdeABCDEFG+OK1";209 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));210
211 char *buff3 = "+SKTRPT=1,4,1.1.1.1,3333\r\n\r\nqwer+OK2";212 XXXX_MINORNETHELPER_AT_PARSER_parser(buff3, strlen(buff3));213
214 char *buff4 = "+ERR3+SKTRPT=1,5,1.1.1.1,3333\r\n\r\nqwert+OK4";215 XXXX_MINORNETHELPER_AT_PARSER_parser(buff4, strlen(buff4));216
217 char *buff5 = "+SKTRPT=1,5,1.1.1.1,3333\r\n\r\nqwert";218 XXXX_MINORNETHELPER_AT_PARSER_parser(buff5, strlen(buff5));219
220 char *buff6 = "+SKTRPT=1,6,1.1.1.1,3333\r\n\r\nqwerty+OK+ERR5";221 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));222
223 char *buff7 = "+OK6+ERR7";224 XXXX_MINORNETHELPER_AT_PARSER_parser(buff7, strlen(buff7));225
226 char *buff8 = "+OK8";227 XXXX_MINORNETHELPER_AT_PARSER_parser(buff8, strlen(buff8));228 }229
230 void test8(void)231 {232 char *buff1 = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,360,1.1.1.1,3333\r\n\r\nabcdeAB";233 char *buff2 = "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";234 char *buff3 = "liuy";235
236 char *buff4 = "AAaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";237 char *buff5 = "YYYY";238 char *buff6 = "BBaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklOVER";239
240 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));241 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));242 XXXX_MINORNETHELPER_AT_PARSER_parser(buff3, strlen(buff3));243 XXXX_MINORNETHELPER_AT_PARSER_parser(buff4, strlen(buff4));244 XXXX_MINORNETHELPER_AT_PARSER_parser(buff5, strlen(buff5));245 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));246 }247
248 void test9(void)249 {250 char *buff1 = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,360,1.1.1.1,3333\r\n\r\nabcdeAB";251 char *buff2 = "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";252 char *buff3 = "liuy";253
254 char *buff4 = "AAaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";255 char *buff5 = "YYYY";256 char *buff6 = "BBaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklOVER+SKTR";257 char *buff7 = "PT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE";258
259 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));260 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));261 XXXX_MINORNETHELPER_AT_PARSER_parser(buff3, strlen(buff3));262 XXXX_MINORNETHELPER_AT_PARSER_parser(buff4, strlen(buff4));263 XXXX_MINORNETHELPER_AT_PARSER_parser(buff5, strlen(buff5));264 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));265 XXXX_MINORNETHELPER_AT_PARSER_parser(buff7, strlen(buff7));266 }267
268 void test10(void)269 {270 char *buff1 = "+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE+SKTRPT=1,11,1.1.1.1,3333\r\n\r\nabcdeABCDEF+SKTRPT=1,360,1.1.1.1,3333\r\n\r\nabcdeAB";271 char *buff2 = "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";272 char *buff3 = "liuy";273
274 char *buff4 = "AAaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklllll";275 char *buff5 = "YYYY";276 char *buff6 = "BBaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkklOVER+SKTR";277 char *buff7 = "PT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDV";278
279 XXXX_MINORNETHELPER_AT_PARSER_parser(buff1, strlen(buff1));280 XXXX_MINORNETHELPER_AT_PARSER_parser(buff2, strlen(buff2));281 XXXX_MINORNETHELPER_AT_PARSER_parser(buff3, strlen(buff3));282 XXXX_MINORNETHELPER_AT_PARSER_parser(buff4, strlen(buff4));283 XXXX_MINORNETHELPER_AT_PARSER_parser(buff5, strlen(buff5));284 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));285
286 sleep(2);287 XXXX_MINORNETHELPER_AT_PARSER_parser(buff7, strlen(buff7));288 }289
290 void test11_pressure(void)291 {292 char *buff[] = {"+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE",293 "+OK",294 "+OK=1",295 "+OK=22",296 "+ERR"};297 unsigned int count = 0;298 unsigned int rand_str = 0;299
300 count = sizeof(buff) / sizeof(char *);301
302 for(; ; ) {303 rand_str = rand() %count;304 XXXX_MINORNETHELPER_AT_PARSER_parser(buff[rand_str], strlen(buff[rand_str]));305 sleep(1);306 }307
308 }309
310 void test12_pressure_normal(void)311 {312 char *buff[] = {"+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCDE",313 "+OK",314 "+OK=1",315 "+OK=22",316 "+ERR"};317 unsigned int count = 0;318 unsigned int rand_str = 0;319 unsigned int bf_len = 0;320 unsigned int already_set_len = 0;321 unsigned int will_cpy_len = 0;322 int is_full = 0;323 int youbiao = 0;324 int index = 0;325 char bf[17] = {'\0'};326
327 count = sizeof(buff) / sizeof(char *);328 bf_len = sizeof(bf);329 already_set_len = 0;330
331 for (index = 0; ; index++) { //index < 20
332 if (0 ==is_full) {333 rand_str = rand() %count;334
335 will_cpy_len = XXXX_MIN(bf_len -already_set_len, strlen(buff[rand_str]));336 memcpy(bf +already_set_len, buff[rand_str], will_cpy_len);337 youbiao =will_cpy_len;338 } else{339 already_set_len = 0;340 is_full = 0;341 memset(bf, 0, bf_len);342
343 if (youbiao >=strlen(buff[rand_str])) {344 continue;345 } else{346 will_cpy_len = XXXX_MIN(bf_len - already_set_len, strlen(buff[rand_str]) -youbiao);347 memcpy(bf + already_set_len, buff[rand_str] +youbiao, will_cpy_len);348 youbiao +=will_cpy_len;349 }350
351 }352 already_set_len +=will_cpy_len;353
354 if (already_set_len >=bf_len)355 {356 XXXX_MINORNETHELPER_AT_PARSER_parser(bf, bf_len);357 is_full = 1;358 }359
360 }361 }362
363 void test13_pressure_abnormal(void)364 {365 char *buff[] = {"+SKTRPT=1,10,1.1.1.1,3333\r\n\r\nabcdeABCD", //本条消息字节丢失
366 "+OK",367 "+OK=1",368 "+OK=22",369 "+ERR"};370 unsigned int count = 0;371 unsigned int rand_str = 0;372 unsigned int bf_len = 0;373 unsigned int already_set_len = 0;374 unsigned int will_cpy_len = 0;375 int is_full = 0;376 int youbiao = 0;377 int index = 0;378 char bf[17] = {'\0'};379
380 count = sizeof(buff) / sizeof(char *);381 bf_len = sizeof(bf);382 already_set_len = 0;383
384 srand((unsigned int)time(NULL));385
386 for (index = 0; ; index++) { //index < 10
387 if (0 ==is_full) {388 rand_str = rand() %count;389
390 will_cpy_len = XXXX_MIN(bf_len -already_set_len, strlen(buff[rand_str]));391 memcpy(bf +already_set_len, buff[rand_str], will_cpy_len);392 youbiao =will_cpy_len;393 } else{394 already_set_len = 0;395 is_full = 0;396 memset(bf, 0, bf_len);397
398 if (youbiao >=strlen(buff[rand_str])) {399 continue;400 } else{401 will_cpy_len = XXXX_MIN(bf_len - already_set_len, strlen(buff[rand_str]) -youbiao);402 memcpy(bf + already_set_len, buff[rand_str] +youbiao, will_cpy_len);403 youbiao +=will_cpy_len;404 }405
406 }407 already_set_len +=will_cpy_len;408
409 if (already_set_len >=bf_len)410 {411 XXXX_MINORNETHELPER_AT_PARSER_parser(bf, bf_len);412 is_full = 1;413 }414
415 }416 }417
418 void test14(void)419 {420
421 char *buff6 = "+SKTRPT=1,6,1.1.1.1,3333\r\n\r\n\t\r\t\t\tA+OK+ERR5"; //不可见字符测试
422 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, 42);423
424 }425
426 void test15(void)427 {428
429 char *buff6 = "+SKTRPT=1,6,1.1.1.1,3333\r\n\r\naaaaabAAAAAAAAA11111111112222222222333333333344444444445555+5555556666666666777777777788888888889999999999000000000011111111112222222222333333333344444444445555+55555566666666667777777777888888888899999999990000000000+OK+ERR5"; //多出来的数据里有+
430 XXXX_MINORNETHELPER_AT_PARSER_parser(buff6, strlen(buff6));431
432 }433
434 int main(int argc, char *argv[])435 {436
437 pthread_t ntid;438 int err = 0;439
440 XXXX_task_init();441
442 err = pthread_create(&ntid, NULL, thr_fn2, NULL);443 if(err != 0){444 XXXX_print_ln_I("can't create thread: %s",strerror(err));445 }446
447 //test1();
448 test12_pressure_normal();449
450 for(; ;)451 {452 usleep(1000 * 1000);453 printf("...");454 continue;455 }456
457 return 0;458 }