コード例 #1
0
ファイル: dstring_test.c プロジェクト: 1514louluo/lagopus
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);
}
コード例 #2
0
ファイル: dstring_test.c プロジェクト: 1514louluo/lagopus
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);
}
コード例 #3
0
ファイル: dstring_test.c プロジェクト: 1514louluo/lagopus
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.");
}
コード例 #4
0
ファイル: dstring_test.c プロジェクト: 1514louluo/lagopus
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);
}
コード例 #5
0
ファイル: snmp_cmd.c プロジェクト: JackieXie168/lagopus
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;
}