Merge remote-tracking branch 'origin/main-1' into main-1

This commit is contained in:
hxy7yx
2023-10-31 22:35:07 +08:00
9 changed files with 129 additions and 77 deletions
-2
View File
@@ -335,8 +335,6 @@ void handle_get_node_state_resp(nng_aio *aio, neu_resp_get_node_state_t *state)
res.rtt = state->rtt;
res.log_level = state->state.log_level;
strcpy(res.core_level, state->core_level);
printf("!!!!!!!!!!!!!!!!!!%s\n", state->core_level);
printf("@@@@@@@@@@@@@@%s\n", res.core_level);
neu_json_encode_by_fn(&res, neu_json_encode_get_node_state_resp, &result);
+4 -4
View File
@@ -148,10 +148,10 @@ void handle_log_level(nng_aio *aio)
}
if (req->core) {
zlog_category_t *neuron = zlog_get_category("neuron");
ret = zlog_level_switch(neuron, log_level);
ret = zlog_level_switch(neuron, log_level);
if (ret != 0) {
nlog_error("Failed to modify log_level of the core, ret: %d",
ret);
nlog_error(
"Failed to modify log_level of the core, ret: %d", ret);
NEU_JSON_RESPONSE_ERROR(NEU_ERR_EINTERNAL, {
neu_http_response(aio, error_code.error, result_error);
});
@@ -178,7 +178,7 @@ void handle_log_level(nng_aio *aio)
header.ctx = aio;
header.type = NEU_REQ_UPDATE_LOG_LEVEL;
cmd.core = req->core;
ret = neu_plugin_op(plugin, header, &cmd);
ret = neu_plugin_op(plugin, header, &cmd);
if (ret != 0) {
NEU_JSON_RESPONSE_ERROR(NEU_ERR_IS_BUSY, {
neu_http_response(aio, NEU_ERR_IS_BUSY, result_error);
-1
View File
@@ -219,7 +219,6 @@ static int dashb_plugin_request(neu_plugin_t * plugin,
(neu_resp_get_nodes_state_t *) data);
break;
case NEU_RESP_GET_NODE_STATE:
printf("$$$$$$$$$$$$$$$$$$$$$$%s\n", ((neu_resp_get_node_state_t *)data)->core_level);
handle_get_node_state_resp(header->ctx,
(neu_resp_get_node_state_t *) data);
break;
+4 -3
View File
@@ -771,14 +771,15 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
break;
}
case NEU_REQ_GET_NODE_STATE: {
neu_resp_get_node_state_t *resp = (neu_resp_get_node_state_t *) &header[1];
neu_resp_get_node_state_t *resp =
(neu_resp_get_node_state_t *) &header[1];
neu_metric_entry_t *e = NULL;
if (NULL != adapter->metrics) {
HASH_FIND_STR(adapter->metrics->entries, NEU_METRIC_LAST_RTT_MS, e);
}
resp->rtt = NULL != e ? e->value : 0;
resp->state = neu_adapter_get_state(adapter);
resp->rtt = NULL != e ? e->value : 0;
resp->state = neu_adapter_get_state(adapter);
header->type = NEU_RESP_GET_NODE_STATE;
neu_msg_exchange(header);
reply(adapter, header, resp);
+41 -34
View File
@@ -1160,10 +1160,11 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
case NEU_REQ_GET_NODES_STATE: {
neu_resp_get_nodes_state_t resp = { 0 };
UT_array *states = neu_node_manager_get_state(manager->node_manager);
neu_adapter_t *adapter_core = neu_node_manager_find(manager->node_manager, "default-dashboard");
neu_adapter_t *adapter_core =
neu_node_manager_find(manager->node_manager, "default-dashboard");
strcpy(resp.core_level,
neu_plugin_to_plugin_common(adapter_core->plugin)->log_level);
neu_plugin_to_plugin_common(adapter_core->plugin)->log_level);
resp.states = utarray_clone(states);
strcpy(header->receiver, header->sender);
@@ -1218,10 +1219,13 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
neu_msg_exchange(header);
reply(manager, header, &e);
} else {
neu_resp_get_node_state_t *resp = (neu_resp_get_node_state_t *) &header[1];
neu_adapter_t *adapter_core = neu_node_manager_find(manager->node_manager, "default-dashboard");
strcpy(resp->core_level,
neu_plugin_to_plugin_common(adapter_core->plugin)->log_level);
neu_resp_get_node_state_t *resp =
(neu_resp_get_node_state_t *) &header[1];
neu_adapter_t *adapter_core = neu_node_manager_find(
manager->node_manager, "default-dashboard");
strcpy(
resp->core_level,
neu_plugin_to_plugin_common(adapter_core->plugin)->log_level);
forward_msg(manager, header, header->receiver);
}
@@ -1482,65 +1486,68 @@ static int manager_loop(enum neu_event_io_type type, int fd, void *usr_data)
}
break;
}
case NEU_REQ_UPDATE_LOG_LEVEL:
case NEU_REQ_UPDATE_LOG_LEVEL: {
neu_req_update_log_level_t *cmd =
(neu_req_update_log_level_t *) &header[1];
if (cmd->core) {
if (strcmp(header->receiver, "") == 0) {
neu_adapter_t *adapter_core = neu_node_manager_find(manager->node_manager, "default-dashboard");
strcpy(neu_plugin_to_plugin_common(adapter_core->plugin)->log_level,
cmd->log_level);
neu_adapter_t *adapter_core = neu_node_manager_find(
manager->node_manager, "default-dashboard");
strcpy(neu_plugin_to_plugin_common(adapter_core->plugin)
->log_level,
cmd->log_level);
neu_resp_error_t error = { 0 };
neu_msg_exchange(header);
header->type = NEU_RESP_ERROR;
reply(manager, header, &error);
} else {
if (neu_node_manager_find(manager->node_manager, header->receiver) ==
NULL) {
if (neu_node_manager_find(manager->node_manager,
header->receiver) == NULL) {
neu_resp_error_t e = { .error = NEU_ERR_NODE_NOT_EXIST };
header->type = NEU_RESP_ERROR;
neu_msg_exchange(header);
reply(manager, header, &e);
} else {
neu_adapter_t *adapter_core = neu_node_manager_find(manager->node_manager, "default-dashboard");
strcpy(neu_plugin_to_plugin_common(adapter_core->plugin)->log_level,
cmd->log_level);
neu_req_update_log_level_t *cmd =
(neu_req_update_log_level_t *) &header[1];
neu_adapter_t *adapter_log =
neu_node_manager_find(manager->node_manager, header->receiver);
strcpy(neu_plugin_to_plugin_common(adapter_log->plugin)->log_level,
cmd->log_level);
neu_adapter_t *adapter_core = neu_node_manager_find(
manager->node_manager, "default-dashboard");
strcpy(neu_plugin_to_plugin_common(adapter_core->plugin)
->log_level,
cmd->log_level);
neu_adapter_t *adapter_log = neu_node_manager_find(
manager->node_manager, header->receiver);
strcpy(neu_plugin_to_plugin_common(adapter_log->plugin)
->log_level,
cmd->log_level);
forward_msg(manager, header, header->receiver);
}
}
} else {
if (strcmp(header->receiver, "") == 0) {
neu_resp_error_t e = { .error = NEU_ERR_PARAM_IS_WRONG };
header->type = NEU_RESP_ERROR;
neu_msg_exchange(header);
reply(manager, header, &e);
neu_resp_error_t e = { .error = NEU_ERR_PARAM_IS_WRONG };
header->type = NEU_RESP_ERROR;
neu_msg_exchange(header);
reply(manager, header, &e);
} else {
if (neu_node_manager_find(manager->node_manager, header->receiver) ==
NULL) {
if (neu_node_manager_find(manager->node_manager,
header->receiver) == NULL) {
neu_resp_error_t e = { .error = NEU_ERR_NODE_NOT_EXIST };
header->type = NEU_RESP_ERROR;
neu_msg_exchange(header);
reply(manager, header, &e);
} else {
neu_req_update_log_level_t *cmd =
(neu_req_update_log_level_t *) &header[1];
neu_adapter_t *adapter_log =
neu_node_manager_find(manager->node_manager, header->receiver);
strcpy(neu_plugin_to_plugin_common(adapter_log->plugin)->log_level,
cmd->log_level);
neu_adapter_t *adapter_log = neu_node_manager_find(
manager->node_manager, header->receiver);
strcpy(neu_plugin_to_plugin_common(adapter_log->plugin)
->log_level,
cmd->log_level);
forward_msg(manager, header, header->receiver);
}
}
}
break;
}
default:
assert(false);
break;
+15 -13
View File
@@ -45,19 +45,21 @@ int neu_json_decode_update_log_level_req(
req->node_name = NULL;
req->core = true;
neu_json_elem_t req_elems[] = { {
.name = "node",
.t = NEU_JSON_STR,
.attribute = NEU_JSON_ATTRIBUTE_OPTIONAL,
},
{
.name = "level",
.t = NEU_JSON_STR,
},
{
.name = "core",
.attribute = NEU_JSON_ATTRIBUTE_OPTIONAL,
}};
neu_json_elem_t req_elems[] = {
{
.name = "node",
.t = NEU_JSON_STR,
.attribute = NEU_JSON_ATTRIBUTE_OPTIONAL,
},
{
.name = "level",
.t = NEU_JSON_STR,
},
{
.name = "core",
.attribute = NEU_JSON_ATTRIBUTE_OPTIONAL,
}
};
ret = neu_json_decode_by_json(json_obj, NEU_JSON_ELEM_SIZE(req_elems),
req_elems);
+10 -11
View File
@@ -240,17 +240,16 @@ int neu_json_encode_get_nodes_state_resp(void *json_object, void *param)
p_node++;
}
neu_json_elem_t resp_elems[] = {
{
.name = "states",
.t = NEU_JSON_OBJECT,
.v.val_object = node_array,
},
{
.name = "neuron_core",
.t = NEU_JSON_STR,
.v.val_str = resp->core_level,
}};
neu_json_elem_t resp_elems[] = { {
.name = "states",
.t = NEU_JSON_OBJECT,
.v.val_object = node_array,
},
{
.name = "neuron_core",
.t = NEU_JSON_STR,
.v.val_str = resp->core_level,
} };
ret = neu_json_encode_field(json_object, resp_elems,
NEU_JSON_ELEM_SIZE(resp_elems));
+53 -7
View File
@@ -14,7 +14,7 @@ class TestLog:
assert 200 == response.status_code
assert 0 == response.json()['error']
response = api.change_log_level(node='modbus-tcp-1', level='debug')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'debug'})
assert 200 == response.status_code
assert 0 == response.json()['error']
@@ -24,7 +24,7 @@ class TestLog:
@description(given="node", when="change log_level to info", then="change success")
def test_change_log_level_info(self):
response = api.change_log_level(node='modbus-tcp-1', level='info')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'info'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
@@ -33,7 +33,7 @@ class TestLog:
@description(given="node", when="change log_level to warn", then="change success")
def test_change_log_level_warn(self):
response = api.change_log_level(node='modbus-tcp-1', level='warn')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'warn'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
@@ -42,7 +42,7 @@ class TestLog:
@description(given="node", when="change log_level to error", then="change success")
def test_change_log_level_error(self):
response = api.change_log_level(node='modbus-tcp-1', level='error')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'error'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
@@ -51,7 +51,7 @@ class TestLog:
@description(given="node", when="change log_level to fatal", then="change success")
def test_change_log_level_fatal(self):
response = api.change_log_level(node='modbus-tcp-1', level='fatal')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'fatal'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
@@ -60,7 +60,7 @@ class TestLog:
@description(given="node", when="change log_level to notice", then="change success")
def test_change_log_level_notice(self):
response = api.change_log_level(node='modbus-tcp-1', level='notice')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'notice'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
@@ -69,10 +69,56 @@ class TestLog:
@description(given="node", when="change log_level to invalid level", then="change failed")
def test_change_log_level_invalid(self):
response = api.change_log_level(node='modbus-tcp-1', level='invalid')
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'invalid'})
assert 400 == response.status_code
assert 1003 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
assert 200 == response.status_code
assert "notice" == response.json()['log_level']
@description(given="core=true, without node", when="change core log_level", then="change success")
def test_change_core_log_level_only(self):
response = api.change_log_level(json={"level": 'info', "core": True})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
assert 200 == response.status_code
assert "info" == response.json()['neuron_core']
assert "notice" == response.json()['log_level']
@description(given="core=false, without node", when="change core log_level", then="return error")
def test_change_log_level_err_param(self):
response = api.change_log_level(json={"level": 'info', "core": False})
assert 400 == response.status_code
assert 1003 == response.json()['error']
@description(given="without core, node exists", when="change core and node log_level", then="change success")
def test_change_core_node_log_level_without_core(self):
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'warn'})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
assert 200 == response.status_code
assert "warn" == response.json()['neuron_core']
assert "warn" == response.json()['log_level']
@description(given="core=true, node exists", when="change core and node log_level", then="change success")
def test_change_core_node_log_level(self):
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'notice', "core": True})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
assert 200 == response.status_code
assert "notice" == response.json()['neuron_core']
assert "notice" == response.json()['log_level']
@description(given="core=false, node exists", when="change node log_level", then="change success")
def test_change_node_log_level_only(self):
response = api.change_log_level(json={"node": 'modbus-tcp-1', "level": 'info', "core": False})
assert 0 == response.json()['error']
response = api.get_nodes_state('modbus-tcp-1')
assert 200 == response.status_code
assert "notice" == response.json()['neuron_core']
assert "info" == response.json()['log_level']
+2 -2
View File
@@ -53,8 +53,8 @@ def delete_virtual_license(jwt=config.default_jwt):
@gen_check
def change_log_level(node, level, jwt=config.default_jwt):
return requests.put(url=config.BASE_URL + '/api/v2/log/level', headers={"Authorization": jwt}, json={"node": node, "level": level})
def change_log_level(json, jwt=config.default_jwt):
return requests.put(url=config.BASE_URL + '/api/v2/log/level', headers={"Authorization": jwt}, json=json)
@gen_check