예제 #1
0
void
test_shutdown_cmd_parse_bad_opts(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  const char *argv1[] = {"shutdown", "hoge",
                         NULL
                        };
  const char *argv2[] = {"shutdown", "-level",
                         NULL
                        };
  const char *argv3[] = {"shutdown", "-level", "hoge",
                         NULL
                        };

  ret = s_parse_shutdown(&interp, state, ARGV_SIZE(argv1),
                         argv1, NULL, NULL, NULL, NULL, NULL, &ds);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "s_parse_shutdown() error.");

  ret = s_parse_shutdown(&interp, state, ARGV_SIZE(argv2),
                         argv2, NULL, NULL, NULL, NULL, NULL, &ds);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "s_parse_shutdown() error.");

  ret = s_parse_shutdown(&interp, state, ARGV_SIZE(argv3),
                         argv3, NULL, NULL, NULL, NULL, NULL, &ds);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "s_parse_shutdown() error.");
}
예제 #2
0
void
test_meter_cmd_parse_bat_opt_02(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"meter", "br3", "hoge",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"INVALID_ARGS\",\n"
    "\"data\":\"sub_cmd = hoge.\"}";

  /* bridge create cmd. */
  TEST_BRIDGE_CREATE(ret, &interp, state, &tbl, &ds, str,
                     "b3", "3", "cha3", "c3", "i3", "p3", "3");

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 meter_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);

  /* bridge destroy cmd.*/
  TEST_BRIDGE_DESTROY(ret, &interp, state, &tbl, &ds, str,
                      "b3", "cha3", "c3", "i3", "p3");
}
예제 #3
0
void
test_meter_cmd_parse_stats_bat_opt_01(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"meter", "br4", "stats",
                         "hoge",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"INVALID_OBJECT\",\n"
    "\"data\":\"name = "DATASTORE_NAMESPACE_DELIMITER"br4\"}";

  /* bridge create cmd. */
  TEST_BRIDGE_CREATE(ret, &interp, state, &tbl, &ds, str,
                     "b4", "4", "cha4", "c4", "i4", "p4", "4");

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 meter_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);

  /* bridge destroy cmd.*/
  TEST_BRIDGE_DESTROY(ret, &interp, state, &tbl, &ds, str,
                      "b4", "cha4", "c4", "i4", "p4");
}
예제 #4
0
void
test_meter_cmd_parse_stats_02(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  uint64_t dpid = 6;
  uint32_t meter_id = 6;
  size_t band_num = 2;
  char *str = NULL;
  const char *argv1[] = {"meter", "b6", "stats",
                         NULL
                        };

  /* bridge create cmd. */
  TEST_BRIDGE_CREATE(ret, &interp, state, &tbl, &ds, str,
                     "b6", "6", "cha6", "c6", "i6", "p6", "6");

  meter_create(dpid, meter_id, band_num);

  /* stats cmd. */
  /* duration_sec/duration_nsec is undefined value. */
  TEST_CMD_PARSE_WITHOUT_STRCMP(ret, LAGOPUS_RESULT_OK,
                                meter_cmd_parse, &interp, state,
                                ARGV_SIZE(argv1), argv1, &tbl, NULL,
                                &ds, str);

  meter_destroy(dpid, meter_id);

  /* bridge destroy cmd.*/
  TEST_BRIDGE_DESTROY(ret, &interp, state, &tbl, &ds, str,
                      "b6", "cha6", "c6", "i6", "p6");
}
예제 #5
0
void
test_meter_cmd_parse_dump_01(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"meter", "b1",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"OK\",\n"
    "\"data\":[{\"name\":\""DATASTORE_NAMESPACE_DELIMITER"b1\",\n"
    "\"meters\":[]}]}";

  /* bridge create cmd. */
  TEST_BRIDGE_CREATE(ret, &interp, state, &tbl, &ds, str,
                     "b1", "1", "cha1", "c1", "i1", "p1", "1");

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, meter_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);

  /* bridge destroy cmd.*/
  TEST_BRIDGE_DESTROY(ret, &interp, state, &tbl, &ds, str,
                      "b1", "cha1", "c1", "i1", "p1");
}
예제 #6
0
void
test_agent_cmd_parse_serialize(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"agent",
                         "-channelq-size", "2000",
                         "-channelq-max-batches", "3000",
                         NULL};
  const char test_str1[] = "{\"ret\":\"OK\"}";
  const char serialize_str1[] =
      "agent "
      "-channelq-size 2000 "
      "-channelq-max-batches 3000\n\n";

  /* set */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
  lagopus_dstring_clear(&ds);

  /* serialize */
  ret = agent_cmd_serialize(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "agent_cmd_serialize error.");
  TEST_DSTRING_NO_JSON(ret, &ds, str, serialize_str1, true);
}
예제 #7
0
void
tearDown(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"bridge", bridge_name, "destroy",
                         NULL
                        };
  const char test_str1[] = "{\"ret\":\"OK\"}";
  char path[PATH_MAX];
  DIR *dp = NULL;
  struct dirent *dirent = NULL;

  /* bridge destroy cmd. */
  if (destroy == true) {
    TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, bridge_cmd_parse, &interp, state,
                   ARGV_SIZE(argv1), argv1, &tbl, bridge_cmd_update,
                   &ds, str, test_str1);
  }

  /* destroy interp. */
  INTERP_DESTROY(NULL, interp, tbl, ds, destroy);

  /* delete file. */
  dp = opendir(TMP_DIR);
  if (dp != NULL) {
    while ((dirent = readdir(dp)) != NULL) {
      if (strncmp(dirent->d_name, TMP_FILE, strlen(TMP_FILE))) {
        sprintf(path, "TMP_DIR/%s", dirent->d_name);
        unlink(path);
      }
    }
    closedir(dp);
  }
}
예제 #8
0
void
test_atomic_cmd_parse_tmp_dir(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"atomic", "begin", "-tmp-dir", NULL};
  const char test_str1[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":{\"tmp-dir\":\"\\/tmp\"}}";
  const char *argv2[] = {"atomic", "begin", "-tmp-dir", "./", NULL};
  const char *argv3[] = {"atomic", "begin", "-tmp-dir", NULL};
  const char test_str3[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":{\"tmp-dir\":\".\\/\"}}";
  const char *argv4[] = {"atomic", "begin", "hoge", NULL};
  const char test_str4[] =
      "{\"ret\":\"INVALID_ARGS\",\n"
      "\"data\":\"opt = hoge\"}";

  // Normal case
  {
    /* show tmp dir (begin cmd). */
    TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_atomic, &interp, state,
                   ARGV_SIZE(argv1), argv1, &tbl, NULL,
                   &result, str, test_str1);

    /* set tmp dir (begin cmd). */
    ret = s_parse_atomic(NULL, state, ARGV_SIZE(argv2), argv2, &tbl,
                         proc, NULL, NULL, NULL,
                         &result);
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_DATASTORE_INTERP_ERROR, ret);

    /* show tmp dir (begin cmd). */
    TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_atomic, &interp, state,
                   ARGV_SIZE(argv3), argv3, &tbl, NULL,
                   &result, str, test_str3);

    /* bad opt (begin cmd). */
    TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                   s_parse_atomic, &interp, state,
                   ARGV_SIZE(argv4), argv4, &tbl, NULL,
                   &result, str, test_str4);
  }
}
예제 #9
0
void
test_atomic_cmd_parse(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  const char *argv1[] = {"atomic", "begin", NULL};
  const char *argv_err1[] = {"atomic", "invalid_arg", NULL};

  // Normal case
  {
    ret = s_parse_atomic(&interp, state, ARGV_SIZE(argv_err1), argv_err1, &tbl,
                         proc, NULL, NULL, NULL,
                         &result);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_DATASTORE_INTERP_ERROR, ret,
                              "s_parse_atomic error.");
  }

  // Abnormal case
  {
    ret = s_parse_atomic(NULL, state, ARGV_SIZE(argv1), argv1, &tbl,
                         proc, NULL, NULL, NULL,
                         &result);
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_DATASTORE_INTERP_ERROR, ret);

    ret = s_parse_atomic(&interp, state, ARGV_SIZE(argv1), argv1, NULL,
                         proc, NULL, NULL, NULL,
                         &result);
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_DATASTORE_INTERP_ERROR, ret);

    ret = s_parse_atomic(&interp, state, ARGV_SIZE(argv1), argv1, &tbl,
                         NULL, NULL, NULL, NULL,
                         &result);
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_DATASTORE_INTERP_ERROR, ret);

    ret = s_parse_atomic(&interp, state, ARGV_SIZE(argv1), argv1, &tbl,
                         proc, NULL, NULL, NULL,
                         NULL);
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_INVALID_ARGS, ret);
  }
}
예제 #10
0
void
test_flow_cmd_parse_dump_01(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"flow",
                         NULL
                        };
  const char test_str1[] = "";

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK,
                 flow_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #11
0
void
test_agent_cmd_parse_bad_opt(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"agent", "-hoge",
                         NULL};
  const char test_str1[] =
      "{\"ret\":\"INVALID_ARGS\",\n"
      "\"data\":\"Unknown option '-hoge'\"}";

  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 s_parse_agent, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #12
0
void
test_agent_cmd_parse_bad_channelq_max_batches(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"agent",
                         "-channelq-max-batches", "hoge",
                         NULL};
  const char test_str1[] =
      "{\"ret\":\"INVALID_ARGS\",\n"
      "\"data\":\"can't parse 'hoge' as a uint16_t integer.\"}";

  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 s_parse_agent, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #13
0
void
test_flow_cmd_parse_config_03(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"flow", "config",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"OK\",\n"
    "\"data\":{\"tmp-dir\":\"\\/tmp\"}}";

  /* show cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK,
                 flow_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #14
0
void
test_flow_cmd_parse_dump_not_bridge(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"flow",
                         "bridge01",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"NOT_FOUND\",\n"
    "\"data\":\"name = "DATASTORE_NAMESPACE_DELIMITER"bridge01\"}";

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 flow_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #15
0
void
test_meter_cmd_parse_dump_02(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  uint64_t dpid = 5;
  uint32_t meter_id = 5;
  size_t band_num = 2;
  char *str = NULL;
  const char *argv1[] = {"meter", "b5",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"OK\",\n"
    "\"data\":[{\"name\":\""DATASTORE_NAMESPACE_DELIMITER"b5\",\n"
    "\"meters\":[{\"meter-id\":5,\n"
    "\"flags\":[\"kbps\",\n"
    "\"burst\"],\n"
    "\"bands\":[{\"band-id\":0,\n"
    "\"type\":\"drop\",\n"
    "\"rate\":1,\n"
    "\"burst-size\":2},\n"
    "{\"band-id\":1,\n"
    "\"type\":\"drop\",\n"
    "\"rate\":2,\n"
    "\"burst-size\":3}]}]}]}";

  /* bridge create cmd. */
  TEST_BRIDGE_CREATE(ret, &interp, state, &tbl, &ds, str,
                     "b5", "5", "cha5", "c5", "i5", "p5", "5");

  meter_create(dpid, meter_id, band_num);

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, meter_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);

  meter_destroy(dpid, meter_id);

  /* bridge destroy cmd.*/
  TEST_BRIDGE_DESTROY(ret, &interp, state, &tbl, &ds, str,
                      "b5", "cha5", "c5", "i5", "p5");
}
예제 #16
0
void
setUp(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"bridge", bridge_name, "create", NULL};
  const char test_str1[] = "{\"ret\":\"OK\"}";

  /* create interp. */
  INTERP_CREATE(ret, NULL,interp, tbl, ds);

  /* bridge create cmd. */
  if (is_init == false) {
    is_init = true;
    TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, bridge_cmd_parse, &interp, state,
                   ARGV_SIZE(argv1), argv1, &tbl, bridge_cmd_update,
                   &ds, str, test_str1);
  }
}
예제 #17
0
void
test_flow_cmd_parse_config_bad_tmp_dir(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"flow", "config",
                         "-tmp-dir", "/hoge",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"POSIX_API_ERROR\",\n"
    "\"data\":\"Bad opt value = \\/hoge.\"}";

  /* show cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 flow_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #18
0
void
test_route_cmd_parse_dump_01(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"route",
                         NULL
                        };
  const char *test_str1 = "";

  /* dump cmd */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK,
                 route_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID*/
}
예제 #19
0
void
test_flow_cmd_parse_dump_bad_opt_val_02(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"flow",
                         "br0",
                         "-table-id", "hoge",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"INVALID_ARGS\",\n"
    "\"data\":\"Bad opt value = hoge.\"}";

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 flow_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
}
예제 #20
0
void
test_route_cmd_parse_config_tmp_dir03(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"route",
                         "config",
                         NULL
                        };
  const char test_str1[] = "{\"ret\":\"OK\",\n"
                           "\"data\":{\"tmp-dir\":\"\\/tmp\"}}";

  /* show cmd */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK,
                 route_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
예제 #21
0
void
test_route_cmd_parse_dump_not_bridge(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"route",
                         "bridge01",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"NOT_FOUND\",\n"
    "\"data\":\"name = "DATASTORE_NAMESPACE_DELIMITER"bridge01\"}";

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 route_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
예제 #22
0
void
test_mactable_cmd_parse_dump_bad_opt_val_02(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"route",
                         "br0",
                         "-table-id", "hoge",
                         NULL
                        };
  const char test_str1[] =
    "{\"ret\":\"INVALID_ARGS\",\n"
    "\"data\":\"Bad opt value = hoge.\"}";

  /* dump cmd. */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_DATASTORE_INTERP_ERROR,
                 route_cmd_parse, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
예제 #23
0
void
test_agent_cmd_parse_set_opts(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"agent",
                         NULL};
  const char test_str1[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":[{\"channelq-size\":1000,\n"
      "\"channelq-max-batches\":1000}]}";
  const char *argv2[] = {"agent",
                         "-channelq-size", "1",
                         NULL};
  const char test_str2[] = "{\"ret\":\"OK\"}";
  const char *argv3[] = {"agent",
                         NULL};
  const char test_str3[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":[{\"channelq-size\":1,\n"
      "\"channelq-max-batches\":1000}]}";
  const char *argv4[] = {"agent",
                         "-channelq-size",
                         NULL};
  const char test_str4[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":[{\"channelq-size\":1}]}";
  const char *argv5[] = {"agent",
                         "-channelq-max-batches", "2",
                         NULL};
  const char test_str5[] = "{\"ret\":\"OK\"}";
  const char *argv6[] = {"agent",
                         NULL};
  const char test_str6[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":[{\"channelq-size\":1,\n"
      "\"channelq-max-batches\":2}]}";
  const char *argv7[] = {"agent",
                         "-channelq-max-batches",
                         NULL};
  const char test_str7[] =
      "{\"ret\":\"OK\",\n"
      "\"data\":[{\"channelq-max-batches\":2}]}";

  /* show */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);

  /* set channelq-size */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv2), argv2, &tbl, NULL,
                 &ds, str, test_str2);

  /* show */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv3), argv3, &tbl, NULL,
                 &ds, str, test_str3);

  /* show channelq-size */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv4), argv4, &tbl, NULL,
                 &ds, str, test_str4);

  /* set channelq-size */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv5), argv5, &tbl, NULL,
                 &ds, str, test_str5);

  /* show */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv6), argv6, &tbl, NULL,
                 &ds, str, test_str6);

  /* show channelq-max-batches */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv7), argv7, &tbl, NULL,
                 &ds, str, test_str7);
}