提交 b2e6e449 编写于 作者: H haozi007 提交者: lifeng68

refactor lookup api

Signed-off-by: Nhaozi007 <liuhao27@huawei.com>
上级 092665a5
......@@ -1198,23 +1198,29 @@ struct layer** layer_store_by_uncompress_digest(const char *digest, size_t *laye
return layers_by_digest_map(g_metadata.by_uncompress_digest, digest, layers_len);
}
char *layer_store_lookup(const char *name)
struct layer *layer_store_lookup(const char *name)
{
char *result = NULL;
struct layer *ret = NULL;
layer_t *l = NULL;
if (name == NULL) {
return result;
return ret;
}
ret = util_common_calloc_s(sizeof(struct layer));
if (ret == NULL) {
ERROR("Out of memory");
return ret;
}
l = lookup_with_lock(name);
if (l == NULL) {
return result;
return ret;
}
layer_lock(l);
result = util_strdup_s(l->slayer->id);
copy_json_to_layer(l, ret);
layer_unlock(l);
layer_ref_dec(l);
return result;
return ret;
}
static char *mount_helper(layer_t *l, const struct layer_store_mount_opts *opts)
......
......@@ -57,7 +57,7 @@ struct layer** layer_store_list(size_t *layers_len);
bool layer_store_is_used(const char *id);
struct layer** layer_store_by_compress_digest(const char *digest, size_t *layers_len);
struct layer** layer_store_by_uncompress_digest(const char *digest, size_t *layers_len);
char *layer_store_lookup(const char *name);
struct layer *layer_store_lookup(const char *name);
char *layer_store_mount(const char *id, const struct layer_store_mount_opts *opts);
int layer_store_umount(const char *id, bool force);
int layer_store_mounted(const char *id);
......
......@@ -179,10 +179,19 @@ TEST_F(StorageImagesUnitTest, test_layer_store_lookup)
std::string id { "ac86325a0e6384e251f2f4418d7b36321ad6811f9ba8a3dc87e13d634b0ec1d1" };
std::string name { "689feccc14f14112b43b1fbf7dc14c3426e4fdd6e2bff462ec70b9f6ee4b3fae-layer" };
std::string incorrectId { "4db68de4ff27" };
ASSERT_STREQ(layer_store_lookup(name.c_str()), id.c_str());
ASSERT_STREQ(layer_store_lookup(id.c_str()), id.c_str());
ASSERT_EQ(layer_store_lookup(incorrectId.c_str()), nullptr);
struct layer *l = NULL;
l = layer_store_lookup(name.c_str());
ASSERT_NE(l, nullptr);
ASSERT_STREQ(l->id, id.c_str());
free_layer(l);
l = layer_store_lookup(id.c_str());
ASSERT_NE(l, nullptr);
ASSERT_STREQ(l->id, id.c_str());
free_layer(l);
l = layer_store_lookup(incorrectId.c_str());
ASSERT_EQ(l->id, nullptr);
free_layer(l);
}
TEST_F(StorageImagesUnitTest, test_layer_store_exists)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册