support limit
This commit is contained in:
parent
bef32ace38
commit
ecf1916d78
33 changed files with 3036 additions and 243 deletions
324
src/lib/testsuite/test_limit.c
Normal file
324
src/lib/testsuite/test_limit.c
Normal file
|
|
@ -0,0 +1,324 @@
|
|||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unity.h>
|
||||
|
||||
#include "group.h"
|
||||
#include "xce/types.h"
|
||||
#include "xcelimit.h"
|
||||
|
||||
static void test_build_consumer1(void)
|
||||
{
|
||||
xce_consumer_t* c = NULL;
|
||||
groupmgr_t mgr;
|
||||
xce_group_config_t gdata = {
|
||||
.members = { .count = 2, .data = (char*[]) { "rshen", "jsxing" } }
|
||||
};
|
||||
int rc = 0;
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&mgr, 4, 4);
|
||||
rc = build_consumer(&c, &mgr, CONSUMER_USER, 1, &gdata, "user_group1");
|
||||
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
rc = fmt_consumer(buf, sizeof(buf) - 1, c);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("\n >>> consumer: %s\n", buf);
|
||||
|
||||
kill_consumer(c);
|
||||
|
||||
groupmgr_fini(&mgr);
|
||||
return;
|
||||
}
|
||||
|
||||
static void test_build_consumer2(void)
|
||||
{
|
||||
xce_consumer_t* c = NULL;
|
||||
groupmgr_t mgr;
|
||||
xce_group_config_t gdata = {
|
||||
.members = { .count = 1, .data = (char*[]) { "all" } },
|
||||
.ex_members = { .count = 2, .data = (char*[]) { "rshen", "jsxing" } }
|
||||
};
|
||||
int rc = 0;
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&mgr, 4, 4);
|
||||
rc = build_consumer(&c, &mgr, CONSUMER_USER, 1, &gdata, "user_group1");
|
||||
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
rc = fmt_consumer(buf, sizeof(buf) - 1, c);
|
||||
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("\n >>> consumer: %s\n", buf);
|
||||
|
||||
kill_consumer(c);
|
||||
|
||||
groupmgr_fini(&mgr);
|
||||
return;
|
||||
}
|
||||
|
||||
static void test_build_limit_ok1(void)
|
||||
{
|
||||
groupmgr_t umgr, qmgr, hmgr, pmgr;
|
||||
xce_limit_t* limit;
|
||||
int rc;
|
||||
xce_limit_config_t limit_config = {
|
||||
.name = "limit1",
|
||||
.per_user = 0,
|
||||
.per_queue = 0,
|
||||
.per_project = 0,
|
||||
.per_host = 0,
|
||||
.users
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "u1" } } },
|
||||
.queues = NULL,
|
||||
.hosts = NULL,
|
||||
.projects = NULL,
|
||||
.val
|
||||
= &(xce_limit_val_t) { .resname = "mem", .percent = 1, .val = 80.0 }
|
||||
};
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&umgr, 4, 4);
|
||||
groupmgr_init(&qmgr, 4, 4);
|
||||
groupmgr_init(&hmgr, 4, 4);
|
||||
groupmgr_init(&pmgr, 4, 4);
|
||||
|
||||
rc = build_limit(&limit, &umgr, &qmgr, &hmgr, &pmgr, &limit_config);
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
memset(buf, 0x0, sizeof(buf));
|
||||
|
||||
rc = fmt_limit(buf, sizeof(buf) - 1, limit);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
||||
kill_limit(limit);
|
||||
|
||||
groupmgr_fini(&pmgr);
|
||||
groupmgr_fini(&hmgr);
|
||||
groupmgr_fini(&qmgr);
|
||||
groupmgr_fini(&umgr);
|
||||
}
|
||||
|
||||
static void test_match_limit_ok1(void)
|
||||
{
|
||||
groupmgr_t umgr, qmgr, hmgr, pmgr;
|
||||
xce_limit_t* limit;
|
||||
int rc;
|
||||
xce_limit_config_t limit_config = {
|
||||
.name = "limit1",
|
||||
.per_user = 0,
|
||||
.per_queue = 0,
|
||||
.per_project = 0,
|
||||
.per_host = 0,
|
||||
.users
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "all" } } },
|
||||
.queues
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "all" } } },
|
||||
.hosts = NULL,
|
||||
.projects
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "all" } } },
|
||||
.val
|
||||
= &(xce_limit_val_t) { .resname = "mem", .percent = 1, .val = 80.0 }
|
||||
};
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&umgr, 4, 4);
|
||||
groupmgr_init(&qmgr, 4, 4);
|
||||
groupmgr_init(&hmgr, 4, 4);
|
||||
groupmgr_init(&pmgr, 4, 4);
|
||||
|
||||
rc = build_limit(&limit, &umgr, &qmgr, &hmgr, &pmgr, &limit_config);
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
memset(buf, 0x0, sizeof(buf));
|
||||
|
||||
rc = fmt_limit(buf, sizeof(buf) - 1, limit);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
||||
rc = match_limit(limit, 1, "rshen", "xce", "project1");
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
kill_limit(limit);
|
||||
|
||||
groupmgr_fini(&pmgr);
|
||||
groupmgr_fini(&hmgr);
|
||||
groupmgr_fini(&qmgr);
|
||||
groupmgr_fini(&umgr);
|
||||
}
|
||||
|
||||
static void test_match_limit_ok2(void)
|
||||
{
|
||||
groupmgr_t umgr, qmgr, hmgr, pmgr;
|
||||
xce_limit_t* limit;
|
||||
int rc;
|
||||
xce_limit_config_t limit_config = {
|
||||
.name = "limit1",
|
||||
.per_user = 0,
|
||||
.per_queue = 0,
|
||||
.per_project = 0,
|
||||
.per_host = 0,
|
||||
.users = NULL,
|
||||
.queues = NULL,
|
||||
.hosts = NULL,
|
||||
.projects = NULL,
|
||||
.val
|
||||
= &(xce_limit_val_t) { .resname = "mem", .percent = 1, .val = 80.0 }
|
||||
};
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&umgr, 4, 4);
|
||||
groupmgr_init(&qmgr, 4, 4);
|
||||
groupmgr_init(&hmgr, 4, 4);
|
||||
groupmgr_init(&pmgr, 4, 4);
|
||||
|
||||
rc = build_limit(&limit, &umgr, &qmgr, &hmgr, &pmgr, &limit_config);
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
memset(buf, 0x0, sizeof(buf));
|
||||
|
||||
rc = fmt_limit(buf, sizeof(buf) - 1, limit);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
||||
rc = match_limit(limit, 1, "rshen", "xce", "project1");
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
kill_limit(limit);
|
||||
|
||||
groupmgr_fini(&pmgr);
|
||||
groupmgr_fini(&hmgr);
|
||||
groupmgr_fini(&qmgr);
|
||||
groupmgr_fini(&umgr);
|
||||
}
|
||||
|
||||
static void test_match_limit1(void)
|
||||
{
|
||||
groupmgr_t umgr, qmgr, hmgr, pmgr;
|
||||
xce_limit_t* limit;
|
||||
int rc;
|
||||
xce_limit_config_t limit_config = {
|
||||
.name = "limit1",
|
||||
.per_user = 0,
|
||||
.per_queue = 0,
|
||||
.per_project = 0,
|
||||
.per_host = 0,
|
||||
.users
|
||||
= &(xce_group_config_t) { .members
|
||||
= { .count = 1, .data = (char*[]) { "all" } },
|
||||
.ex_members
|
||||
= { .count = 1,
|
||||
.data = (char*[]) { "rshen" } } },
|
||||
.queues
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "all" } } },
|
||||
.hosts = NULL,
|
||||
.projects
|
||||
= &(xce_group_config_t) { .members = { .count = 1,
|
||||
.data = (char*[]) { "all" } } },
|
||||
.val
|
||||
= &(xce_limit_val_t) { .resname = "mem", .percent = 1, .val = 80.0 }
|
||||
};
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&umgr, 4, 4);
|
||||
groupmgr_init(&qmgr, 4, 4);
|
||||
groupmgr_init(&hmgr, 4, 4);
|
||||
groupmgr_init(&pmgr, 4, 4);
|
||||
|
||||
rc = build_limit(&limit, &umgr, &qmgr, &hmgr, &pmgr, &limit_config);
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
memset(buf, 0x0, sizeof(buf));
|
||||
|
||||
rc = fmt_limit(buf, sizeof(buf) - 1, limit);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
||||
rc = match_limit(limit, 1, "rshen", "xce", "project1");
|
||||
TEST_ASSERT_TRUE(rc == 0);
|
||||
|
||||
kill_limit(limit);
|
||||
|
||||
groupmgr_fini(&pmgr);
|
||||
groupmgr_fini(&hmgr);
|
||||
groupmgr_fini(&qmgr);
|
||||
groupmgr_fini(&umgr);
|
||||
}
|
||||
|
||||
static void test_match_limit2(void)
|
||||
{
|
||||
groupmgr_t umgr, qmgr, hmgr, pmgr;
|
||||
xce_limit_t* limit;
|
||||
int rc;
|
||||
xce_limit_config_t limit_config = {
|
||||
.name = "limit1",
|
||||
.per_user = 0,
|
||||
.per_queue = 0,
|
||||
.per_project = 0,
|
||||
.per_host = 0,
|
||||
.users
|
||||
= &(xce_group_config_t) { .members
|
||||
= { .count = 1, .data = (char*[]) { "all" } },
|
||||
.ex_members
|
||||
= { .count = 1,
|
||||
.data = (char*[]) { "rshen" } } },
|
||||
.queues = NULL,
|
||||
.hosts = NULL,
|
||||
.projects = NULL,
|
||||
.val
|
||||
= &(xce_limit_val_t) { .resname = "slots", .percent = 0, .val = 3.0 }
|
||||
};
|
||||
char buf[1024];
|
||||
|
||||
groupmgr_init(&umgr, 4, 4);
|
||||
groupmgr_init(&qmgr, 4, 4);
|
||||
groupmgr_init(&hmgr, 4, 4);
|
||||
groupmgr_init(&pmgr, 4, 4);
|
||||
|
||||
rc = build_limit(&limit, &umgr, &qmgr, &hmgr, &pmgr, &limit_config);
|
||||
TEST_ASSERT_TRUE(rc == 1);
|
||||
|
||||
memset(buf, 0x0, sizeof(buf));
|
||||
|
||||
rc = fmt_limit(buf, sizeof(buf) - 1, limit);
|
||||
TEST_ASSERT_TRUE(rc > 0);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
||||
rc = match_limit(limit, 1, "rshen", "normal", "default");
|
||||
TEST_ASSERT_TRUE(rc == 0);
|
||||
|
||||
kill_limit(limit);
|
||||
|
||||
groupmgr_fini(&pmgr);
|
||||
groupmgr_fini(&hmgr);
|
||||
groupmgr_fini(&qmgr);
|
||||
groupmgr_fini(&umgr);
|
||||
}
|
||||
|
||||
void test_limit(void)
|
||||
{
|
||||
printf("\n>> limit test\n\n");
|
||||
RUN_TEST(test_build_consumer1);
|
||||
RUN_TEST(test_build_consumer2);
|
||||
RUN_TEST(test_build_limit_ok1);
|
||||
RUN_TEST(test_match_limit_ok1);
|
||||
RUN_TEST(test_match_limit_ok2);
|
||||
RUN_TEST(test_match_limit1);
|
||||
RUN_TEST(test_match_limit2);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue