static void prepend_va_list_test(const char *format, ...) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; va_list args; bool empty; char *str = NULL; char test_str1[] = "hoge foo 1234 5678\n"; va_start(args, format); /* append int. */ ret = lagopus_dstring_vprependf(&ds, format, &args); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_vprependf error."); TEST_DSTRING(ret, &ds, str, test_str1); empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(false, empty, "empty error."); va_end(args); }
static void insert_va_list_test(const char *format, ...) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; va_list args; bool empty; char *str = NULL; size_t test_offset1 = 5; char test_str1[] = "1234 hoge foo 5678\n"; va_start(args, format); /* insert. */ ret = lagopus_dstring_vinsertf(&ds, test_offset1, format, &args); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_vinsertf error."); TEST_DSTRING(ret, &ds, str, test_str1); empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(false, empty, "empty error."); va_end(args); }
void test_lagopus_dstring_insertf_clear_srt_get(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; bool empty; char *str = NULL; size_t test_offset1 = 0; char test_str1[] = "1234 5678\n"; size_t test_offset2 = 5; char test_str2[] = "1234 hoge foo\n5678\n"; char test_str3[] = "\0"; size_t test_offset4 = 0; char test_str4[] = "9876 5432\n"; size_t test_offset5 = 5; char test_str5[] = "9876 hoge foo bar\n5432\n"; size_t test_offset6 = 0; char test_str6[] = "bas\n9876 hoge foo bar\n5432\n"; size_t test_offset7 = 0; char test_str7[] = "1 2\nbas\n9876 hoge foo bar\n5432\n"; size_t test_offset8 = 31; char test_str8[] = "1 2\nbas\n9876 hoge foo bar\n5432\n3 4\n"; size_t test_offset9 = 36; /* check empty. */ empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(true, empty, "empty error."); /* insert int. */ ret = lagopus_dstring_insertf(&ds, test_offset1, "%d 5678\n", 1234); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str1); empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(false, empty, "empty error."); /* insert str. */ ret = lagopus_dstring_insertf(&ds, test_offset2, "hoge %s\n", "foo"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str2); /* clear. */ ret = lagopus_dstring_clear(&ds); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_clear error."); TEST_DSTRING(ret, &ds, str, test_str3); /* insert int. */ ret = lagopus_dstring_insertf(&ds, test_offset4, "%d 5432\n", 9876); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str4); /* insert str. */ ret = lagopus_dstring_insertf(&ds, test_offset5, "hoge %s %s\n", "foo", "bar"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str5); /* not args */ ret = lagopus_dstring_insertf(&ds, test_offset6, "bas\n"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str6); /* offset = 0. */ ret = lagopus_dstring_insertf(&ds, test_offset7, "%d 2\n", 1); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str7); /* offset = end. */ ret = lagopus_dstring_insertf(&ds, test_offset8, "%d 4\n", 3); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_insertf error."); TEST_DSTRING(ret, &ds, str, test_str8); /* offset = over. */ ret = lagopus_dstring_insertf(&ds, test_offset9, "%d 5\n", 6); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "lagopus_dstring_insertf error."); }
void test_lagopus_dstring_prependf_clear_srt_get(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; bool empty; char *str = NULL; char test_str1[] = "1234 5678\n"; char test_str2[] = "hoge foo\n1234 5678\n"; char test_str3[] = "\0"; char test_str4[] = "9876 5432\n"; char test_str5[] = "hoge foo bar\n9876 5432\n"; char test_str6[] = "bas\nhoge foo bar\n9876 5432\n"; /* check empty. */ empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(true, empty, "empty error."); /* prepend int. */ ret = lagopus_dstring_prependf(&ds, "%d 5678\n", 1234); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_prependf error."); TEST_DSTRING(ret, &ds, str, test_str1); empty = lagopus_dstring_empty(&ds); TEST_ASSERT_EQUAL_MESSAGE(false, empty, "empty error."); /* prepend str. */ ret = lagopus_dstring_prependf(&ds, "hoge %s\n", "foo"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_prependf error."); TEST_DSTRING(ret, &ds, str, test_str2); /* clear. */ ret = lagopus_dstring_clear(&ds); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_clear error."); TEST_DSTRING(ret, &ds, str, test_str3); /* prepend int. */ ret = lagopus_dstring_prependf(&ds, "%d 5432\n", 9876); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_prependf error."); TEST_DSTRING(ret, &ds, str, test_str4); /* prepend str. */ ret = lagopus_dstring_prependf(&ds, "hoge %s %s\n", "foo", "bar"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_prependf error."); TEST_DSTRING(ret, &ds, str, test_str5); /* not args. */ ret = lagopus_dstring_prependf(&ds, "bas\n"); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_dstring_prependf error."); TEST_DSTRING(ret, &ds, str, test_str6); }
static inline lagopus_result_t s_parse_snmp_internal(const char *const argv[], lagopus_dstring_t *result) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; char *agentx_sock = NULL; char *esc_agentx = NULL; char *ping = NULL; while (IS_VALID_STRING(*argv) == true) { if (strcmp(*argv, "-master-agentx-socket") == 0) { if (IS_VALID_STRING(*(argv + 1)) == true) { argv++; if ((ret = lagopus_str_unescape(*argv, "\"'", &agentx_sock)) > 0) { if ((ret = lagopus_snmp_set_agentx_sock(agentx_sock)) != LAGOPUS_RESULT_OK) { ret = datastore_json_result_string_setf(result, ret, "Can't set %s.", agentx_sock); goto done; } } else if (ret == 0) { ret = datastore_json_result_string_setf(result, LAGOPUS_RESULT_INVALID_ARGS, "Bad opt val = %s ", *argv); goto done; } else { ret = datastore_json_result_string_setf(result, ret, "Can't convert to an " "unescaped strings."); goto done; } } else { if ((ret = lagopus_snmp_get_agentx_sock(&agentx_sock)) == LAGOPUS_RESULT_OK) { ret = datastore_json_string_escape(agentx_sock, (char **)&esc_agentx); if (ret == LAGOPUS_RESULT_OK) { ret = datastore_json_result_setf(result, ret, "[{" "\"master-agentx-socket\":\"%s\"" "}]", esc_agentx); goto done; } else { ret = datastore_json_result_string_setf(result, ret, "Can't convert to " "an escaped strings."); goto done; } } else { ret = datastore_json_result_string_setf(result, ret, "Can't get " "master-agentx-socket."); goto done; } } } else if (strcmp(*argv, "-ping-interval-second") == 0) { if (IS_VALID_STRING(*(argv + 1)) == true) { argv++; ret = lagopus_str_unescape(*argv, "\"'", &ping); if (ret > 0) { uint16_t new_ping; ret = lagopus_str_parse_uint16(ping, &new_ping); if (ret == LAGOPUS_RESULT_OK) { if ((ret = lagopus_snmp_set_ping_interval(new_ping)) != LAGOPUS_RESULT_OK) { ret = datastore_json_result_string_setf(result, ret, "Can't set " "ping-interval."); goto done; } } else { ret = datastore_json_result_string_setf(result, ret, "Can't parse string " "to uint16_t."); goto done; } } else if (ret == 0) { ret = datastore_json_result_string_setf(result, LAGOPUS_RESULT_INVALID_ARGS, "Bad opt val = %s ", *argv); goto done; } else { ret = datastore_json_result_string_setf(result, ret, "Can't convert to an " "unescaped strings."); goto done; } } else { uint16_t ping_interval; ret = lagopus_snmp_get_ping_interval(&ping_interval); if (ret == LAGOPUS_RESULT_OK) { ret = datastore_json_result_setf(result, ret, "[{" "\"ping-interval-second\":%d" "}]", ping_interval); goto done; } else { ret = datastore_json_result_string_setf(result, ret, "Can't get " "ping-interval-second."); goto done; } } } else if (strcmp(*argv, "enable") == 0) { if ((ret = lagopus_snmp_set_enable(true)) != LAGOPUS_RESULT_OK) { ret = datastore_json_result_string_setf(result, ret, "Can't set enable."); goto done; } } else { char *esc_str = NULL; ret = datastore_json_string_escape(*argv, (char **)&esc_str); if (ret == LAGOPUS_RESULT_OK) { ret = datastore_json_result_string_setf(result, LAGOPUS_RESULT_NOT_FOUND, "option = %s", esc_str); } free((void *)esc_str); } done: free((void *)agentx_sock); free((void *)esc_agentx); free((void *)ping); agentx_sock = NULL; esc_agentx = NULL; ping = NULL; if (ret != LAGOPUS_RESULT_OK) { break; } argv++; } if (ret == LAGOPUS_RESULT_OK && lagopus_dstring_empty(result)) { ret = lagopus_dstring_appendf(result, "{\"ret\":\"OK\"}"); if (ret != LAGOPUS_RESULT_OK) { ret = datastore_json_result_string_setf(result, ret, "Can't add strings " "to dstring."); } } return ret; }