fix up api test to run and add test for new [gs]et_cgroup_item

Signed-off-by: Dwight Engen <dwight.en...@oracle.com>
---
 src/lua-lxc/core.c           | 35 +++++++++++++++++++++++++++++++++++
 src/lua-lxc/lxc.lua          | 16 ++++++++++++++++
 src/lua-lxc/test/apitest.lua | 13 +++++++++++++
 3 files changed, 64 insertions(+)

diff --git a/src/lua-lxc/core.c b/src/lua-lxc/core.c
index 002e8bf..ea19cc3 100644
--- a/src/lua-lxc/core.c
+++ b/src/lua-lxc/core.c
@@ -282,6 +282,29 @@ static int container_clear_config_item(lua_State *L)
     return 1;
 }
 
+static int container_get_cgroup_item(lua_State *L)
+{
+    struct lxc_container *c = lua_unboxpointer(L, 1, CONTAINER_TYPENAME);
+    const char *key = luaL_checkstring(L, 2);
+    int len;
+    char *value;
+
+    len = c->get_cgroup_item(c, key, NULL, 0);
+    if (len <= 0)
+       goto not_found;
+
+    value = alloca(sizeof(char)*len + 1);
+    if (c->get_cgroup_item(c, key, value, len + 1) != len)
+       goto not_found;
+
+    lua_pushstring(L, value);
+    return 1;
+
+not_found:
+    lua_pushnil(L);
+    return 1;
+}
+
 static int container_get_config_item(lua_State *L)
 {
     struct lxc_container *c = lua_unboxpointer(L, 1, CONTAINER_TYPENAME);
@@ -305,6 +328,16 @@ not_found:
     return 1;
 }
 
+static int container_set_cgroup_item(lua_State *L)
+{
+    struct lxc_container *c = lua_unboxpointer(L, 1, CONTAINER_TYPENAME);
+    const char *key = luaL_checkstring(L, 2);
+    const char *value = luaL_checkstring(L, 3);
+
+    lua_pushboolean(L, !!c->set_cgroup_item(c, key, value));
+    return 1;
+}
+
 static int container_set_config_item(lua_State *L)
 {
     struct lxc_container *c = lua_unboxpointer(L, 1, CONTAINER_TYPENAME);
@@ -361,6 +394,8 @@ static luaL_Reg lxc_container_methods[] =
     {"config_file_name",       container_config_file_name},
     {"load_config",            container_load_config},
     {"save_config",            container_save_config},
+    {"get_cgroup_item",                container_get_cgroup_item},
+    {"set_cgroup_item",                container_set_cgroup_item},
     {"get_config_path",                container_get_config_path},
     {"set_config_path",                container_set_config_path},
     {"get_config_item",                container_get_config_item},
diff --git a/src/lua-lxc/lxc.lua b/src/lua-lxc/lxc.lua
index aa80a95..7c9580e 100755
--- a/src/lua-lxc/lxc.lua
+++ b/src/lua-lxc/lxc.lua
@@ -189,6 +189,10 @@ function container:clear_config_item(key)
     return self.core:clear_config_item(key)
 end
 
+function container:get_cgroup_item(key)
+    return self.core:get_cgroup_item(key)
+end
+
 function container:get_config_item(key)
     local value
     local vals = {}
@@ -209,6 +213,10 @@ function container:get_config_item(key)
     return vals
 end
 
+function container:set_cgroup_item(key, value)
+    return self.core:set_cgroup_item(key, value)
+end
+
 function container:set_config_item(key, value)
     return self.core:set_config_item(key, value)
 end
@@ -410,6 +418,14 @@ function M.containers_running(names_only)
     return containers
 end
 
+function M.version_get()
+    return core.version_get()
+end
+
+function M.default_config_path_get()
+    return core.default_config_path_get()
+end
+
 lxc_path = core.default_config_path_get()
 cgroup_path = cgroup_path_get()
 
diff --git a/src/lua-lxc/test/apitest.lua b/src/lua-lxc/test/apitest.lua
index 1365f91..f957ca4 100755
--- a/src/lua-lxc/test/apitest.lua
+++ b/src/lua-lxc/test/apitest.lua
@@ -206,6 +206,17 @@ function test_container_in_cfglist(should_find)
     end
 end
 
+function test_container_cgroup()
+    log(0, "Test get/set cgroup items...")
+
+    max_mem = container:get_cgroup_item("memory.max_usage_in_bytes")
+    saved_limit = container:get_cgroup_item("memory.limit_in_bytes")
+    assert(saved_limit ~= max_mem)
+    assert(container:set_cgroup_item("memory.limit_in_bytes", max_mem))
+    assert(container:get_cgroup_item("memory.limit_in_bytes") ~= saved_limit)
+    assert(container:set_cgroup_item("memory.limit_in_bytes", "-1"))
+end
+
 function test_config_items()
     log(0, "Test set/clear configuration items...")
 
@@ -313,6 +324,8 @@ test_config_network(0)
 test_container_start()
 test_container_started()
 
+test_container_cgroup()
+
 test_container_freeze()
 test_container_frozen()
 test_container_unfreeze()
-- 
1.8.3.1


------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to