Skip to content
Snippets Groups Projects
Commit fa30de9b authored by David Garcia Quintas's avatar David Garcia Quintas
Browse files

removed some bits from invalid LR design

parent 824363dc
No related branches found
No related tags found
No related merge requests found
...@@ -38,9 +38,11 @@ ...@@ -38,9 +38,11 @@
#include "src/core/lib/channel/channel_stack.h" #include "src/core/lib/channel/channel_stack.h"
/** Metadata key for initial metadata coming from clients */ /** Metadata key for initial metadata coming from clients */
/* TODO(dgq): change to the final value TBD */
#define GRPC_LOAD_REPORTING_INITIAL_MD_KEY "load-reporting-initial" #define GRPC_LOAD_REPORTING_INITIAL_MD_KEY "load-reporting-initial"
/** Metadata key for trailing metadata from servers */ /** Metadata key for trailing metadata from servers */
/* TODO(dgq): change to the final value TBD */
#define GRPC_LOAD_REPORTING_TRAILING_MD_KEY "load-reporting-trailing" #define GRPC_LOAD_REPORTING_TRAILING_MD_KEY "load-reporting-trailing"
/** Identifiers for the invocation point of the users LR callback */ /** Identifiers for the invocation point of the users LR callback */
......
...@@ -43,11 +43,6 @@ ...@@ -43,11 +43,6 @@
#include "src/core/lib/profiling/timers.h" #include "src/core/lib/profiling/timers.h"
#include "src/core/lib/transport/static_metadata.h" #include "src/core/lib/transport/static_metadata.h"
void (*g_load_reporting_fn)(const grpc_load_reporting_call_data *call_data);
/* The function to be defined */
void load_reporting_fn(const grpc_load_reporting_call_data *call_data) {}
typedef struct call_data { typedef struct call_data {
intptr_t id; /**< an id unique to the call */ intptr_t id; /**< an id unique to the call */
char *trailing_md_string; char *trailing_md_string;
...@@ -68,15 +63,6 @@ typedef struct channel_data { ...@@ -68,15 +63,6 @@ typedef struct channel_data {
intptr_t id; /**< an id unique to the channel */ intptr_t id; /**< an id unique to the channel */
} channel_data; } channel_data;
static void invoke_lr_fn(grpc_load_reporting_call_data *lr_call_data) {
if (g_load_reporting_fn == NULL) {
g_load_reporting_fn = load_reporting_fn;
}
GPR_TIMER_BEGIN("load_reporting_fn", 0);
g_load_reporting_fn(lr_call_data);
GPR_TIMER_END("load_reporting_fn", 0);
}
typedef struct { typedef struct {
grpc_call_element *elem; grpc_call_element *elem;
grpc_exec_ctx *exec_ctx; grpc_exec_ctx *exec_ctx;
...@@ -91,6 +77,7 @@ static grpc_mdelem *recv_md_filter(void *user_data, grpc_mdelem *md) { ...@@ -91,6 +77,7 @@ static grpc_mdelem *recv_md_filter(void *user_data, grpc_mdelem *md) {
calld->service_method = grpc_mdstr_as_c_string(md->value); calld->service_method = grpc_mdstr_as_c_string(md->value);
} else if (md->key == GRPC_MDSTR_LOAD_REPORTING_INITIAL) { } else if (md->key == GRPC_MDSTR_LOAD_REPORTING_INITIAL) {
calld->initial_md_string = gpr_strdup(grpc_mdstr_as_c_string(md->value)); calld->initial_md_string = gpr_strdup(grpc_mdstr_as_c_string(md->value));
return NULL;
} }
return md; return md;
...@@ -122,13 +109,14 @@ static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data, ...@@ -122,13 +109,14 @@ static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data,
/* Constructor for call_data */ /* Constructor for call_data */
static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_call_element_args *args) { grpc_call_element_args *args) {
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data; call_data *calld = elem->call_data;
memset(calld, 0, sizeof(call_data)); memset(calld, 0, sizeof(call_data));
calld->id = (intptr_t)args->call_stack; calld->id = (intptr_t)args->call_stack;
grpc_closure_init(&calld->on_initial_md_ready, on_initial_md_ready, elem); grpc_closure_init(&calld->on_initial_md_ready, on_initial_md_ready, elem);
/* TODO(dgq): do something with the data
channel_data *chand = elem->channel_data;
grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CALL_CREATION, grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CALL_CREATION,
(intptr_t)chand->id, (intptr_t)chand->id,
(intptr_t)calld->id, (intptr_t)calld->id,
...@@ -136,16 +124,17 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, ...@@ -136,16 +124,17 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
NULL, NULL,
NULL, NULL,
NULL}; NULL};
invoke_lr_fn(&lr_call_data); */
} }
/* Destructor for call_data */ /* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info, const grpc_call_final_info *final_info,
void *ignored) { void *ignored) {
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data; call_data *calld = elem->call_data;
/* TODO(dgq): do something with the data
channel_data *chand = elem->channel_data;
grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CALL_DESTRUCTION, grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CALL_DESTRUCTION,
(intptr_t)chand->id, (intptr_t)chand->id,
(intptr_t)calld->id, (intptr_t)calld->id,
...@@ -153,8 +142,7 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, ...@@ -153,8 +142,7 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
calld->initial_md_string, calld->initial_md_string,
calld->trailing_md_string, calld->trailing_md_string,
calld->service_method}; calld->service_method};
*/
invoke_lr_fn(&lr_call_data);
gpr_free(calld->initial_md_string); gpr_free(calld->initial_md_string);
gpr_free(calld->trailing_md_string); gpr_free(calld->trailing_md_string);
...@@ -171,6 +159,7 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx, ...@@ -171,6 +159,7 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx,
chand->id = (intptr_t)args->channel_stack; chand->id = (intptr_t)args->channel_stack;
/* TODO(dgq): do something with the data
grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CHANNEL_CREATION, grpc_load_reporting_call_data lr_call_data = {GRPC_LR_POINT_CHANNEL_CREATION,
(intptr_t)chand, (intptr_t)chand,
0, 0,
...@@ -178,12 +167,13 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx, ...@@ -178,12 +167,13 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx,
NULL, NULL,
NULL, NULL,
NULL}; NULL};
invoke_lr_fn(&lr_call_data); */
} }
/* Destructor for channel data */ /* Destructor for channel data */
static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem) { grpc_channel_element *elem) {
/* TODO(dgq): do something with the data
channel_data *chand = elem->channel_data; channel_data *chand = elem->channel_data;
grpc_load_reporting_call_data lr_call_data = { grpc_load_reporting_call_data lr_call_data = {
GRPC_LR_POINT_CHANNEL_DESTRUCTION, GRPC_LR_POINT_CHANNEL_DESTRUCTION,
...@@ -193,7 +183,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, ...@@ -193,7 +183,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
NULL, NULL,
NULL, NULL,
NULL}; NULL};
invoke_lr_fn(&lr_call_data); */
} }
static grpc_mdelem *lr_trailing_md_filter(void *user_data, grpc_mdelem *md) { static grpc_mdelem *lr_trailing_md_filter(void *user_data, grpc_mdelem *md) {
...@@ -202,6 +192,7 @@ static grpc_mdelem *lr_trailing_md_filter(void *user_data, grpc_mdelem *md) { ...@@ -202,6 +192,7 @@ static grpc_mdelem *lr_trailing_md_filter(void *user_data, grpc_mdelem *md) {
if (md->key == GRPC_MDSTR_LOAD_REPORTING_TRAILING) { if (md->key == GRPC_MDSTR_LOAD_REPORTING_TRAILING) {
calld->trailing_md_string = gpr_strdup(grpc_mdstr_as_c_string(md->value)); calld->trailing_md_string = gpr_strdup(grpc_mdstr_as_c_string(md->value));
return NULL;
} }
return md; return md;
......
...@@ -69,44 +69,6 @@ typedef struct { ...@@ -69,44 +69,6 @@ typedef struct {
bool fully_processed; bool fully_processed;
} load_reporting_data; } load_reporting_data;
static load_reporting_data lr_data;
static void load_reporting_test_fn(
const grpc_load_reporting_call_data *call_data) {
gpr_mu_lock(&lr_data.mu);
switch (call_data->source) {
case GRPC_LR_POINT_CHANNEL_CREATION:
lr_data.channel_id = call_data->channel_id;
break;
case GRPC_LR_POINT_CHANNEL_DESTRUCTION:
break;
case GRPC_LR_POINT_CALL_CREATION:
lr_data.call_id = call_data->call_id;
break;
case GRPC_LR_POINT_CALL_DESTRUCTION:
if (lr_data.initial_md_str == NULL) {
lr_data.initial_md_str = gpr_strdup(call_data->initial_md_string);
}
if (lr_data.trailing_md_str == NULL) {
lr_data.trailing_md_str = gpr_strdup(call_data->trailing_md_string);
}
if (lr_data.method_name == NULL) {
lr_data.method_name = gpr_strdup(call_data->method_name);
}
lr_data.incoming_bytes = call_data->final_info->stats
.transport_stream_stats.incoming.data_bytes;
lr_data.outgoing_bytes = call_data->final_info->stats
.transport_stream_stats.outgoing.data_bytes;
lr_data.call_final_status = call_data->final_info->final_status;
lr_data.fully_processed = true;
break;
default:
abort();
}
gpr_mu_unlock(&lr_data.mu);
}
static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config, static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
const char *test_name, const char *test_name,
grpc_channel_args *client_args, grpc_channel_args *client_args,
...@@ -315,8 +277,8 @@ extern void (*g_load_reporting_fn)( ...@@ -315,8 +277,8 @@ extern void (*g_load_reporting_fn)(
const grpc_load_reporting_call_data *call_data); const grpc_load_reporting_call_data *call_data);
static void test_load_reporting_hook(grpc_end2end_test_config config) { static void test_load_reporting_hook(grpc_end2end_test_config config) {
gpr_mu_init(&lr_data.mu); /* TODO(dgq): this test is currently a noop until LR is fully defined.
g_load_reporting_fn = load_reporting_test_fn; * Leaving the rest here, as it'll likely be reusable. */
/* Introduce load reporting for the server through its arguments */ /* Introduce load reporting for the server through its arguments */
grpc_arg arg = grpc_load_reporting_enable_arg(); grpc_arg arg = grpc_load_reporting_enable_arg();
...@@ -350,26 +312,6 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) { ...@@ -350,26 +312,6 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) {
end_test(&f); end_test(&f);
grpc_channel_args_destroy(lr_server_args); grpc_channel_args_destroy(lr_server_args);
config.tear_down_data(&f); config.tear_down_data(&f);
GPR_ASSERT(lr_data.fully_processed);
GPR_ASSERT(lr_data.incoming_bytes == strlen(request_msg));
GPR_ASSERT(lr_data.outgoing_bytes == strlen(response_msg));
GPR_ASSERT(lr_data.call_id > 0);
GPR_ASSERT(lr_data.channel_id > 0);
GPR_ASSERT(strcmp(lr_data.method_name, "/gRPCFTW") == 0);
GPR_ASSERT(lr_data.initial_md_str != NULL);
GPR_ASSERT(lr_data.trailing_md_str != NULL);
GPR_ASSERT(strcmp(lr_data.initial_md_str, "client-token") == 0);
GPR_ASSERT(strcmp(lr_data.trailing_md_str, "server-token") == 0);
GPR_ASSERT(lr_data.call_final_status == GRPC_STATUS_OK);
gpr_free(lr_data.initial_md_str);
gpr_free(lr_data.trailing_md_str);
gpr_free(lr_data.method_name);
} }
void load_reporting_hook(grpc_end2end_test_config config) { void load_reporting_hook(grpc_end2end_test_config config) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment