Adjust benchmark directory,enable HTTP test,rename variables,format codes

This commit is contained in:
lijia
2024-08-16 14:58:19 +08:00
parent cd2a2360fe
commit 3cdfabb683
153 changed files with 1064 additions and 4415 deletions

View File

@@ -0,0 +1,150 @@
#include "cJSON.h"
#include <gtest/gtest.h>
#include <unistd.h>
#include <stdio.h>
#include <assert.h>
#include "http_decoder_gtest.h"
#ifdef __cplusplus
extern "C"
{
#endif
#include "stellar/stellar.h"
#ifdef __cplusplus
}
#endif
// #define IGNORE_PRINTF
#ifdef IGNORE_PRINTF
#define printf(fmt, ...) (0)
#endif
static cJSON *g_test_result_root = NULL;
static cJSON *g_load_result_root = NULL;
static const char *result_json_path = NULL;
extern "C" int commit_test_result_json(cJSON *node, const char *name)
{
(void)name;
if (g_test_result_root)
{
// cJSON_AddItemToObject(g_test_result_root, name, node);
// cJSON_AddStringToObject(node, "name", name);
cJSON_AddItemToArray(g_test_result_root, node);
return 0;
}
return -1;
}
static void hdgt_prune_non_result_item(cJSON *benchmark_json_root)
{
int array_size = cJSON_GetArraySize(benchmark_json_root);
for (int i = 0; i < array_size; i++)
{
cJSON *object_root = cJSON_GetArrayItem(benchmark_json_root, i);
cJSON_DeleteItemFromObject(object_root, GTEST_HTTP_PAYLOAD_NAME);
}
}
static cJSON *load_result_from_jsonfile(const char *json_path)
{
if (json_path == NULL)
return NULL;
long file_len = 0;
char *file_content = NULL;
FILE *fp = NULL;
fp = fopen(json_path, "r+");
if (NULL == fp)
{
return NULL;
}
fseek(fp, 0, SEEK_END);
file_len = ftell(fp);
fseek(fp, 0, SEEK_SET);
if (file_len == 0)
{
fclose(fp);
return NULL;
}
file_content = (char *)malloc(file_len + 1);
fread(file_content, file_len, 1, fp);
file_content[file_len] = '\0';
cJSON *load = cJSON_Parse(file_content);
free(file_content);
fclose(fp);
hdgt_prune_non_result_item(load);
return load;
}
TEST(PROTOCOL, compare_result_json)
{
EXPECT_EQ(cJSON_GetArraySize(g_test_result_root), cJSON_GetArraySize(g_load_result_root));
int ret = cJSON_Compare(g_test_result_root, g_load_result_root, 0);
EXPECT_EQ(1, ret);
if (ret != 1)
{
char *load_json_str = cJSON_Print(g_load_result_root);
printf("LOAD Raw:\n%s\n", load_json_str);
free(load_json_str);
char *result_json_str = cJSON_Print(g_test_result_root);
printf("TEST Raw:\n%s\n", result_json_str);
free(result_json_str);
cJSON *t_load = g_load_result_root->child, *t_test = g_test_result_root->child;
while (t_load != NULL)
{
ret = cJSON_Compare(t_load, t_test, 0);
if (ret != 1)
{
load_json_str = cJSON_Print(t_load);
printf("LOAD Diff:\n%s\n", load_json_str);
free(load_json_str);
result_json_str = cJSON_Print(t_test);
printf("TEST Diff:\n%s\n", result_json_str);
free(result_json_str);
goto fail;
}
t_load = t_load->next;
t_test = t_test->next;
}
}
cJSON_Delete(g_load_result_root);
cJSON_Delete(g_test_result_root);
return;
fail:
cJSON_Delete(g_load_result_root);
cJSON_Delete(g_test_result_root);
return;
}
int main(int argc, char *argv[])
{
int ret = 0;
if (argc < 2)
{
printf("Usage: %s <result_json_path>\n", argv[0]);
result_json_path = NULL;
}
else
{
result_json_path = argv[1];
g_test_result_root = cJSON_CreateArray();
g_load_result_root = load_result_from_jsonfile(result_json_path);
assert(g_load_result_root != NULL && g_test_result_root != NULL);
}
::testing::InitGoogleTest(&argc, argv);
if (stellar_run(argc - 1, argv + 1) < 0)
{
return -1;
}
if (result_json_path != NULL)
{
ret = RUN_ALL_TESTS();
}
return ret;
}