summaryrefslogtreecommitdiff
path: root/0198-isolate-isula-search-ut-in-registry_images_ut.patch
diff options
context:
space:
mode:
Diffstat (limited to '0198-isolate-isula-search-ut-in-registry_images_ut.patch')
-rw-r--r--0198-isolate-isula-search-ut-in-registry_images_ut.patch169
1 files changed, 169 insertions, 0 deletions
diff --git a/0198-isolate-isula-search-ut-in-registry_images_ut.patch b/0198-isolate-isula-search-ut-in-registry_images_ut.patch
new file mode 100644
index 0000000..f7d5754
--- /dev/null
+++ b/0198-isolate-isula-search-ut-in-registry_images_ut.patch
@@ -0,0 +1,169 @@
+From 487191cf6bbedc14524056dd653bdc920e78f545 Mon Sep 17 00:00:00 2001
+From: zhongtao <zhongtao17@huawei.com>
+Date: Wed, 19 Feb 2025 11:52:59 +1400
+Subject: [PATCH 198/198] isolate isula search ut in registry_images_ut
+
+Signed-off-by: zhongtao <zhongtao17@huawei.com>
+---
+ test/image/oci/registry/CMakeLists.txt | 10 ++-
+ test/image/oci/registry/registry_ut.cc | 103 +++++++++++++------------
+ 2 files changed, 61 insertions(+), 52 deletions(-)
+
+diff --git a/test/image/oci/registry/CMakeLists.txt b/test/image/oci/registry/CMakeLists.txt
+index d78bb7d3..5ae59ebc 100644
+--- a/test/image/oci/registry/CMakeLists.txt
++++ b/test/image/oci/registry/CMakeLists.txt
+@@ -2,7 +2,16 @@ project(iSulad_UT)
+
+ SET(EXE registry_images_ut)
+
++if(ENABLE_IMAGE_SEARCH)
++ set(search_srcs
++ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry_apiv1.c
++ )
++else()
++ set(search_srcs "")
++endif()
++
+ add_executable(${EXE}
++ ${search_srcs}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/utils/cutils/utils.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/utils/cutils/utils_regex.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/utils/cutils/utils_verify.c
+@@ -34,7 +43,6 @@ add_executable(${EXE}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/storage/remote_layer_support/ro_symlink_maintain.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry_apiv2.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/registry_apiv1.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/http_request.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/certs.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/daemon/modules/image/oci/registry/auths.c
+diff --git a/test/image/oci/registry/registry_ut.cc b/test/image/oci/registry/registry_ut.cc
+index 4eacdb11..c5d9717c 100644
+--- a/test/image/oci/registry/registry_ut.cc
++++ b/test/image/oci/registry/registry_ut.cc
+@@ -395,57 +395,6 @@ int invokeHttpRequestLogin(const char *url, struct http_get_options *options, lo
+ return 0;
+ }
+
+-int invokeHttpRequestSearch(const char *url, struct http_get_options *options, long *response_code, int recursive_len)
+-{
+-#define RETRY_TIMES 3
+-#define SEARCH_TEST_NOT_FOUND 2
+-#define SEARCH_TEST_SERVER_ERROR 5
+-#define SEARCH_TEST_RETRY_SUCCESS 8
+- std::string file;
+- char *data = nullptr;
+- Buffer *output_buffer = (Buffer *)options->output;
+- static int search_count = 0;
+-
+- ERROR("url is %s", url);
+- ERROR("search_count is %d", search_count);
+-
+- std::string data_path = get_dir() + "/data/oci/";
+- if (strcmp(url, "https://index.docker.io/v1/_ping") == 0) {
+- file = data_path + "ping_v1_head";
+- } else if (util_has_prefix(url, "https://index.docker.io/v1/search?q=busybox")) {
+- search_count++;
+- // test not find
+- if (search_count >= SEARCH_TEST_NOT_FOUND && search_count < SEARCH_TEST_NOT_FOUND + RETRY_TIMES) {
+- file = data_path + "search_result_404";
+- }
+- // test server error and restry
+- else if ((search_count >= SEARCH_TEST_SERVER_ERROR && search_count < SEARCH_TEST_SERVER_ERROR + RETRY_TIMES) ||
+- (search_count == SEARCH_TEST_RETRY_SUCCESS)) {
+- file = data_path + "search_server_error";
+- } else {
+- file = data_path + "search_result";
+- }
+- } else {
+- ERROR("%s not match failed", url);
+- return -1;
+- }
+-
+- data = util_read_text_file(file.c_str());
+- if (data == nullptr) {
+- ERROR("read file %s failed", file.c_str());
+- return -1;
+- }
+-
+- if (options->outputtype == HTTP_REQUEST_STRBUF) {
+- free(output_buffer->contents);
+- output_buffer->contents = util_strdup_s(data);
+- }
+- free(data);
+-
+- return 0;
+-}
+-
+-
+ int invokeStorageImgCreate(const char *id, const char *parent_id, const char *metadata,
+ struct storage_img_create_options *opts)
+ {
+@@ -921,6 +870,57 @@ TEST_F(RegistryUnitTest, test_cleanup)
+ ASSERT_EQ(remove_certs(mirror_dir), 0);
+ }
+
++#ifdef ENABLE_IMAGE_SEARCH
++int invokeHttpRequestSearch(const char *url, struct http_get_options *options, long *response_code, int recursive_len)
++{
++#define RETRY_TIMES 3
++#define SEARCH_TEST_NOT_FOUND 2
++#define SEARCH_TEST_SERVER_ERROR 5
++#define SEARCH_TEST_RETRY_SUCCESS 8
++ std::string file;
++ char *data = nullptr;
++ Buffer *output_buffer = (Buffer *)options->output;
++ static int search_count = 0;
++
++ ERROR("url is %s", url);
++ ERROR("search_count is %d", search_count);
++
++ std::string data_path = get_dir() + "/data/oci/";
++ if (strcmp(url, "https://index.docker.io/v1/_ping") == 0) {
++ file = data_path + "ping_v1_head";
++ } else if (util_has_prefix(url, "https://index.docker.io/v1/search?q=busybox")) {
++ search_count++;
++ // test not find
++ if (search_count >= SEARCH_TEST_NOT_FOUND && search_count < SEARCH_TEST_NOT_FOUND + RETRY_TIMES) {
++ file = data_path + "search_result_404";
++ }
++ // test server error and restry
++ else if ((search_count >= SEARCH_TEST_SERVER_ERROR && search_count < SEARCH_TEST_SERVER_ERROR + RETRY_TIMES) ||
++ (search_count == SEARCH_TEST_RETRY_SUCCESS)) {
++ file = data_path + "search_server_error";
++ } else {
++ file = data_path + "search_result";
++ }
++ } else {
++ ERROR("%s not match failed", url);
++ return -1;
++ }
++
++ data = util_read_text_file(file.c_str());
++ if (data == nullptr) {
++ ERROR("read file %s failed", file.c_str());
++ return -1;
++ }
++
++ if (options->outputtype == HTTP_REQUEST_STRBUF) {
++ free(output_buffer->contents);
++ output_buffer->contents = util_strdup_s(data);
++ }
++ free(data);
++
++ return 0;
++}
++
+ TEST_F(RegistryUnitTest, test_search_image)
+ {
+ registry_search_options *options = nullptr;
+@@ -971,3 +971,4 @@ TEST_F(RegistryUnitTest, test_search_image)
+
+ free_registry_search_options(options);
+ }
++#endif
+\ No newline at end of file
+--
+2.34.1
+