提交 fc7d18d3 编写于 作者: L LiFeng

iSulad: fix testcases fail

Signed-off-by: NLiFeng <lifeng68@huawei.com>
上级 ecc976fa
......@@ -18,6 +18,10 @@
#include <stdbool.h>
#include <string.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SHARE_NAMESPACE_PREFIX "container:"
#define SHARE_NAMESPACE_HOST "host"
#define SHARE_NAMESPACE_NONE "none"
......@@ -81,5 +85,9 @@ char *connected_container(const char *mode);
char *get_share_namespace_path(const char *type, const char *src_path);
#ifdef __cplusplus
}
#endif
#endif
......@@ -15,7 +15,6 @@ add_executable(${EXE}
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/sha256/sha256.c
${CMAKE_BINARY_DIR}/json/json_common.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/path.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/spec/specs_mount.c
${CMAKE_BINARY_DIR}/json/host_config.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/spec/specs_extend.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libisulad.c
......@@ -31,6 +30,10 @@ add_executable(${EXE}
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/json/schema/src/read_file.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/cmd/isulad/arguments.c
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/image/oci/oci_llt_common.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/mocks/containers_store_mock.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/mocks/namespace_mock.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/mocks/container_unix_mock.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/spec/specs_mount.c
${CMAKE_BINARY_DIR}/json/imagetool_image.c
${CMAKE_BINARY_DIR}/json/oci_image_spec.c
oci_config_merge_llt.cc)
......@@ -41,8 +44,12 @@ target_include_directories(${EXE} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/image/oci
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/cutils
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/map
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/engines
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/json
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/spec
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/manager
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/services/execution/events
${CMAKE_BINARY_DIR}/json
${CMAKE_BINARY_DIR}/conf
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/sha256
......@@ -52,7 +59,8 @@ target_include_directories(${EXE} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/json/schema/src
${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/console
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/image/oci
${CMAKE_CURRENT_SOURCE_DIR}/../../../../test/mocks
)
set_target_properties(${EXE} PROPERTIES LINK_FLAGS "-Wl,--wrap,util_common_calloc_s -Wl,--wrap,util_smart_calloc_s -Wl,--wrap,merge_env")
target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} -lyajl -lz)
target_link_libraries(${EXE} ${GTEST_BOTH_LIBRARIES} ${GMOCK_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} -lgrpc++ -lprotobuf -lcrypto -lyajl -lz)
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: lifeng
* Create: 2020-02-14
* Description: provide container unix mock
******************************************************************************/
#include "container_unix_mock.h"
namespace {
MockContainerUnix *g_container_unix_mock = NULL;
}
void MockContainerUnix_SetMock(MockContainerUnix* mock)
{
g_container_unix_mock = mock;
}
/* container unref */
void container_unref(container_t *cont)
{
if (g_container_unix_mock != nullptr) {
return g_container_unix_mock->ContainerUnref(cont);
}
return;
}
bool has_mount_for(container_t *cont, const char *mpath)
{
if (g_container_unix_mock != nullptr) {
return g_container_unix_mock->HasMountFor(cont, mpath);
}
return false;
}
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: lifeng
* Create: 2020-02-14
* Description: provide container unix mock
******************************************************************************/
#ifndef CONTAINER_UNIX_MOCK_H_
#define CONTAINER_UNIX_MOCK_H_
#include <gmock/gmock.h>
#include "container_unix.h"
class MockContainerUnix {
public:
virtual ~MockContainerUnix() = default;
MOCK_METHOD2(HasMountFor, bool(container_t *cont, const char *mpath));
MOCK_METHOD1(ContainerUnref, void(container_t *cont));
};
void MockContainerUnix_SetMock(MockContainerUnix* mock);
#endif // CONTAINER_UNIX_MOCK_H_
\ No newline at end of file
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: wujing
* Create: 2020-02-14
* Description: provide containers store mock
******************************************************************************/
#include "containers_store_mock.h"
namespace {
MockContainersStore *g_containers_store_mock = NULL;
}
void MockContainersStore_SetMock(MockContainersStore* mock)
{
g_containers_store_mock = mock;
}
int containers_store_init(void)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreInit();
}
return -1;
}
bool containers_store_add(const char *id, container_t *cont)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreAdd(id, cont);
}
return false;
}
container_t *containers_store_get(const char *id_or_name)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreGet(id_or_name);
}
return nullptr;
}
container_t *containers_store_get_by_prefix(const char *prefix)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreGetByPrefix(prefix);
}
return nullptr;
}
bool containers_store_remove(const char *id)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreRemove(id);
}
return false;
}
int containers_store_list(container_t ***out, size_t *size)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreList(out, size);
}
return -1;
}
char **containers_store_list_ids(void)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->ContainersStoreListIds();
}
return nullptr;
}
int name_index_init(void)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexInit();
}
return -1;
}
bool name_index_remove(const char *name)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexRemove(name);
}
return false;
}
char *name_index_get(const char *name)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexGet(name);
}
return nullptr;
}
bool name_index_add(const char *name, const char *id)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexAdd(name, id);
}
return false;
}
map_t *name_index_get_all(void)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexGetAll();
}
return nullptr;
}
bool name_index_rename(const char *new_name, const char *old_name, const char *id)
{
if (g_containers_store_mock != nullptr) {
return g_containers_store_mock->NameIndexRename(new_name, old_name, id);
}
return false;
}
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: wujing
* Create: 2020-02-14
* Description: provide containers store mock
******************************************************************************/
#ifndef CONTAINERS_STORE_MOCK_H_
#define CONTAINERS_STORE_MOCK_H_
#include <gmock/gmock.h>
#include "containers_store.h"
class MockContainersStore {
public:
virtual ~MockContainersStore() = default;
MOCK_METHOD0(ContainersStoreInit, int(void));
MOCK_METHOD2(ContainersStoreAdd, bool(const char *id, container_t *cont));
MOCK_METHOD1(ContainersStoreGet, container_t *(const char *id_or_name));
MOCK_METHOD1(ContainersStoreGetByPrefix, container_t *(const char *prefix));
MOCK_METHOD1(ContainersStoreRemove, bool(const char *id));
MOCK_METHOD2(ContainersStoreList, int(container_t ***out, size_t *size));
MOCK_METHOD0(ContainersStoreListIds, char **(void));
MOCK_METHOD0(NameIndexInit, int(void));
MOCK_METHOD1(NameIndexRemove, bool(const char *name));
MOCK_METHOD1(NameIndexGet, char *(const char *name));
MOCK_METHOD2(NameIndexAdd, bool(const char *name, const char *id));
MOCK_METHOD0(NameIndexGetAll, map_t * (void));
MOCK_METHOD3(NameIndexRename, bool(const char *new_name, const char *old_name, const char *id));
};
void MockContainersStore_SetMock(MockContainersStore* mock);
#endif // CONTAINERS_STORE_MOCK_H_
\ No newline at end of file
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: wujing
* Create: 2020-02-14
* Description: provide namespace mock
******************************************************************************/
#include "namespace_mock.h"
namespace {
MockNamespace *g_namespace_mock = NULL;
}
void MockNamespace_SetMock(MockNamespace* mock)
{
g_namespace_mock = mock;
}
char *connected_container(const char *mode)
{
if (g_namespace_mock != nullptr) {
return g_namespace_mock->ConnectedContainer(mode);
}
return nullptr;
}
char *get_share_namespace_path(const char *type, const char *src_path)
{
if (g_namespace_mock != nullptr) {
return g_namespace_mock->GetShareNamespacePath(type, src_path);
}
return nullptr;
}
char *get_container_process_label(const char *path)
{
if (g_namespace_mock != nullptr) {
return g_namespace_mock->GetContainerProcessLabel(path);
}
return nullptr;
}
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: wujing
* Create: 2020-02-14
* Description: provide namespace mock
******************************************************************************/
#ifndef NAMESPACE_MOCK_H_
#define NAMESPACE_MOCK_H_
#include <gmock/gmock.h>
#include "namespace.h"
class MockNamespace {
public:
virtual ~MockNamespace() = default;
MOCK_METHOD1(ConnectedContainer, char *(const char *mode));
MOCK_METHOD2(GetShareNamespacePath, char *(const char *type, const char *src_path));
MOCK_METHOD1(GetContainerProcessLabel, char *(const char *path));
};
void MockNamespace_SetMock(MockNamespace* mock);
#endif // NAMESPACE_MOCK_H_
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册