diff --git a/suite2cases/smoke-sysSentry.json b/suite2cases/smoke-sysSentry.json new file mode 100644 index 0000000000000000000000000000000000000000..f97e2dcd2337dfb1f931decb191fc4fe7ac2ce98 --- /dev/null +++ b/suite2cases/smoke-sysSentry.json @@ -0,0 +1,36 @@ +{ + "path": "$OET_PATH/testcases/smoke-test/smoke-sysSentry", + "cases": [ + { + "name": "oe_test_sysSentry_xalarmd_recorver" + }, + { + "name": "oe_test_sysSentry_oom" + }, + { + "name": "oe_test_sysSentry_kernel_reboot_001" + }, + { + "name": "oe_test_sysSentry_kernel_reboot_002" + }, + { + "name": "oe_test_sysSentry_kernel_reboot_003" + }, + { + "name": "oe_test_sysSentry_kernel_reboot_004" + }, + { + "name": "oe_test_sysSentry_panic_001" + }, + { + "name": "oe_test_sysSentry_panic_002" + }, + { + "name": "oe_test_sysSentry_panic_003" + }, + { + "name": "oe_test_sysSentry_panic_004" + }, + + ] +} diff --git a/testcases/smoke-test/smock-sysSentry/RA/RA_oom.c b/testcases/smoke-test/smock-sysSentry/RA/RA_oom.c new file mode 100644 index 0000000000000000000000000000000000000000..9145f8fbba218a5d1d5fc8daecfc05567309f005 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/RA/RA_oom.c @@ -0,0 +1,84 @@ +#include +#include +#include +#include +#include + +#define SLEEP_TIME 10 +#define ID_LIST_LENGTH 1 +#define TIME_UNIT_MILLISECONDS 1000 + +int need_ack = 0; +unsigned long process_alarm_info(struct alarm_msg *param) +{ + int alarmid; + long long alarmtime; + char *pucParas; + + alarmid = (param == NULL ? 0 : param->usAlarmId); + alarmtime = (param == NULL ? 0 : ((long long)(param->AlarmTime.tv_sec) * TIME_UNIT_MILLISECONDS + (long long)(param->AlarmTime.tv_usec) / TIME_UNIT_MILLISECONDS)); + pucParas = (param == NULL ? NULL : (char *)param->pucParas); + + unsigned long msgid; + char buf[1024]; + sscanf(pucParas, "%lu_", &msgid); + char *sync_pos = strstr(pucParas, "sync:"); + if(sync_pos) + { + sscanf(sync_pos, "sync:%d," , &need_ack); + + } + printf("msgid : %lu\n" , msgid); + printf("need_ack : %d\n" , need_ack); + printf("plugin notified with [alarmid:%d] [alarmtime:%lld ms] [msg:%s]\n" , + alarmid, alarmtime,pucParas); + return msgid; +} +int main(int argc, char **argv) +{ + int ret; + struct alarm_register *register_info; + struct alarm_subscription_info id_filter; + struct alarm_msg *msg = malloc(sizeof(struct alarm_msg)); + id_filter.id_list[0] = ALARM_OOM_EVENT; + id_filter.len = 1; + ret = xalarm_register_event(®ister_info, id_filter); + if(ret < 0) + { + printf("%d\n", ret); + perror("Failed to register xalarm\n"); + return 1; + + } + while(1) + { + printf("===Waiting for plugin msg ... \n"); + ret = xalarm_get_event(msg, register_info); + if(ret < 0) + { + perror("Failed to get msg\n"); + return 1; + } + printf("Processing msg from plugin ... \n"); + unsigned long msgid = process_alarm_info(msg); + if (need_ack) + { + printf("Ack msg to plugin ...\n"); + char ack[256]; + int nr_freed = 0; + sprintf(ack, "%lu_%d", msgid, nr_freed); + ret = xalarm_report_event(ALARM_OOM_ACK_EVENT, ack); + if(ret < 0) + { + perror("Failed to send msg\n"); + return 1; + } + } + else + { + printf("no need ack .. \n"); + } + } + xalarm_unregister_event(register_info); + return 0; + } \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/RA/RA_plugin.c b/testcases/smoke-test/smock-sysSentry/RA/RA_plugin.c new file mode 100644 index 0000000000000000000000000000000000000000..ff90ea5f0abc90795bcdd5fd439de74d4860771d --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/RA/RA_plugin.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include + + +#define ID_LIST_LENGTH 1 +#define ID_INDEX_0 0 +#define TIME_UNIT_MILLISECONDS 1000 + +void RefreshOutput(void) +{ + int ret = fflush(stdout); + if (ret !=0){ + printf("Failed to fflush \n"); + + } +} +void print_alarm_info(struct alarm_msg *param) +{ + int alarmid; + long long alarmtime; + char *pucParas; + alarmid=(param == NULL ? 0 : param->usAlarmId); + alarmtime = (param == NULL ? 0 : ((long long)(param->AlarmTime.tv_sec) * TIME_UNIT_MILLISECONDS + + (long long)(param->AlarmTime.tv_usec) / TIME_UNIT_MILLISECONDS)); + pucParas = (param == NULL ? NULL : (char *)param->pucParas); + printf("plugin notified with [alarmid:%d] [alarmtime:%lld ms] [msg:%s]\n", + alarmid, alarmtime, pucParas); + return; +} + +int main(int argc, char **argv) +{ + struct alarm_register* register_info; + pthread_t thread_id; + int ret; + struct alarm_subscription_info id_filter; + struct alarm_msg *msg = malloc(sizeof(struct alarm_msg)); + char input[256]; + const char *auto_input = "hello"; + size_t len = strlen(auto_input); + + strncpy(input, auto_input, sizeof(input)); + input[sizeof(input)-1] = '\0'; + + if(len > 0 && input[len-1] == '\n'){ + input[len-1] = '\0'; + } + + printf ("Sending %s msg to RA ...", input); + xalarm_report_event(ALARM_REBOOT_EVENT, input); + id_filter.id_list[ID_INDEX_0] = ALARM_REBOOT_ACK_EVENT; + id_filter.len = ID_LIST_LENGTH; + ret = xalarm_register_event(®ister_info, id_filter); + if(ret < 0 ){ + printf("%d\n", ret); + perror("Failed to register xalarm\n"); + return 1; + } + printf("Waiting for RA msg .....\n"); + ret = xalarm_get_event(msg, register_info); + if(ret < 0){ + perror("Failed to get msg\n"); + return 1; + } + RefreshOutput(); + print_alarm_info(msg); + xalarm_unregister_event(register_info); + RefreshOutput(); + return 0; +} \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/RA/RA_reboot.c b/testcases/smoke-test/smock-sysSentry/RA/RA_reboot.c new file mode 100644 index 0000000000000000000000000000000000000000..cbbb477afbc3fc81d19afb2df1df34f3e3f8a68e --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/RA/RA_reboot.c @@ -0,0 +1,171 @@ +#include +#include +#include +#include +#include +#include +#include +#include "smh_common_type.h" + +#define SLEEP_TIME 1 +#define SMH_MESSAGE_MAX 4 +#define ID_LIST_LENGTH SMH_MESSAGE_MAX +#define TIME_UNIT_MILLISECONDS 1000 +#define URMA_SEND_DATA_MAX_LEN 100 + +int event_id; +int ack_result = 0; +int g_wait_ack_event_id; +struct alarm_register* register_info; + +void signal_handler(int signum){ + printf("收到信号:%d, 程序将退出\n", signum); + xalarm_unregister_event(register_info); +} +void process_alarm_info(struct alarm_msg *param) +{ + int alarmid; + long long alarmtime; + char *pucParas; + if (param == NULL){ + perror("接受插件发送的消息失败\n"); + return; + } + alarmid = param->usAlarmId; + event_id= alarmid; + alarmtime = ((long long)(param->AlarmTime.tv_sec)* TIME_UNIT_MILLISECONDS + (long long)(param->AlarmTime.tv_usec) / TIME_UNIT_MILLISECONDS); + pucParas = (char *)param ->pucParas; + printf ("plugin notified with [alarmid:%d] [alarmtime:%lld ms] [msg:%s]\n", alarmid, alarmtime, pucParas); + return; +} +int main(int argc, char **argv) +{ + struct alarm_msg *msg =malloc(sizeof(struct alarm_msg)); + struct alarm_subscription_info id_filter; + id_filter.id_list[0] = ALARM_REBOOT_EVENT; + id_filter.id_list[1] = ALARM_OOM_EVENT; + id_filter.id_list[2] = ALARM_PANIC_EVENT; + id_filter.id_list[3] = ALARM_KERNEL_REBOOT_EVENT; + + id_filter.len = ID_LIST_LENGTH; + int ret; + ack_result = atoi(argv[1]); + time_t start_time, current_time; + bool time_start_flag = false; + double elapsed_seconds; + int delay_ack_time=0; + sscanf(argv[2], "%d", &delay_ack_time); + int cnt = 0; + + ret = xalarm_register_event(®ister_info, id_filter); + if(ret < 0){ + perror("Failed to register xalarm\n"); + return 1; + } + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + + while (1){ + printf("waiting for plugin msg....\n"); + ret = xalarm_get_event(msg, register_info); + if (ret<0){ + perror("Failed to get msg \n"); + return 1; + }else { + printf("get mgs success, cnt is %d.\n", ++cnt); + } + process_alarm_info(msg); + if(!time_start_flag){ + time(&start_time); + time_start_flag = true; + g_wait_ack_event_id = event_id; + } + if (g_wait_ack_event_id == ALARM_REBOOT_EVENT){ + if (ack_result !=2){ + char res_str[256]; + snprintf(res_str, 256, "%s_%d", msg->pucParas, ack_result); + ret = xalarm_report_event(ALARM_REBOOT_ACK_EVENT, res_str); + if(ret < 0){ + perror("Failed to send reboot ack msg \n"); + return 1; + } + printf("send reboot ack msg to plugin \n"); + } + }else if (g_wait_ack_event_id == ALARM_OOM_EVENT){ + if(ack_result !=2){ + char res_str[256]; + snprintf(res_str, 256, "%s_%d", msg->pucParas, ack_result); + ret=xalarm_report_event(ALARM_OOM_ACK_EVENT, res_str); + if(ret < 0){ + perror("Failed to send oom ack msg\n"); + return 1; + } + printf("send oom ack msg to plugin \n"); + } + }else if (g_wait_ack_event_id == ALARM_PANIC_EVENT){ + if(ack_result !=2){ + char res_str[URMA_SEND_DATA_MAX_LEN]; + snprintf(res_str, URMA_SEND_DATA_MAX_LEN, "%s_%d", msg->pucParas, ack_result); + if (delay_ack_time <=0){ + time_start_flag =false; + ret = xalarm_report_event(ALARM_PANIC_ACK_EVENT, res_str); + if(ret < 0) { + printf("Failed to send panic ack msg %s\n", res_str); + return 1; + + } + printf("send panic ack msg to plugin %s\n", res_str); + continue; + } + time(¤t_time); + elapsed_seconds = difftime(current_time, start_time); + + printf("pass: %.0fs | remain:%ds", + elapsed_seconds, delay_ack_time - (int)elapsed_seconds); + fflush(stdout); + if(elapsed_seconds >= delay_ack_time){ + time_start_flag = false; + ret = xalarm_report_event(ALARM_PANIC_ACK_EVENT, res_str); + if(ret < 0){ + printf("Failed to send panic ack msg %s\n", res_str); + return 1; + } + printf("send panic ack msg to plugin %s\n", res_str); + } + + } + }else if (g_wait_ack_event_id == ALARM_KERNEL_REBOOT_EVENT){ + if(ack_result !=2){ + char res_str[URMA_SEND_DATA_MAX_LEN]; + snprintf(res_str, URMA_SEND_DATA_MAX_LEN, "%s_%d", msg->pucParas, ack_result); + if(delay_ack_time <=0){ + time_start_flag=false; + ret = xalarm_report_event(ALARM_KERNEL_REBOOT_ACK_EVENT, res_str); + if(ret < 0){ + printf("Failed to send kernel reboot ack msg %s\n", res_str); + return 1; + } + printf("send kernel reboot ack msg to plugin %s\n", res_str); + continue; + } + time(¤t_time); + elapsed_seconds = difftime(current_time, start_time); + printf("pass: %.0fs | remain:%ds", + elapsed_seconds, delay_ack_time - (int)elapsed_seconds); + fflush(stdout); + if (elapsed_seconds >=delay_ack_time){ + time_start_flag =false; + ret = xalarm_report_event(ALARM_KERNEL_REBOOT_ACK_EVENT, res_str); + if(ret < 0){ + printf("Failed to send kernel reboot ack msg %s\n", res_str); + return 1; + } + printf("send kernel reboot ack msg to plugin %s\n", res_str); + } + } + } + } + xalarm_unregister_event(register_info); + return 0; + +} \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/RA/RA_xalarmd.c b/testcases/smoke-test/smock-sysSentry/RA/RA_xalarmd.c new file mode 100644 index 0000000000000000000000000000000000000000..2b49e038180e15f856334d7569cd2a6d415b99fc --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/RA/RA_xalarmd.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include + +#define SLEEP_TIME 10 +#define ID_LIST_LENGTH 1 +#define TIME_UNIT_MILLISECONDS 1000 + +void process_alarm_info(struct alarm_msg *param) +{ + int alarmid; + long long alarmtime; + char *pucParas; + + alarmid = (param == NULL ? 0 : param->usAlarmId); + alarmtime = (param == NULL ? 0 : ((long long)(param->AlarmTime.tv_sec) * TIME_UNIT_MILLISECONDS + + (long long)(param->AlarmTime.tv_usec) / TIME_UNIT_MILLISECONDS)); + pucParas = (param == NULL ? NULL : (char *)param->pucParas); + + printf("plugin notified with [alarmid:%d] [alarmtime:%lld ms] [msg:%s]\n" , + alarmid, alarmtime,pucParas); + return; +} +int main(int argc, char **argv) +{ + int ret; + struct alarm_register *register_info; + struct alarm_subscription_info id_filter; + struct alarm_msg *msg = malloc(sizeof(struct alarm_msg)); + id_filter.id_list[0] = ALARM_REBOOT_EVENT; + id_filter.len = 1; + ret = xalarm_register_event(®ister_info, id_filter); + if(ret < 0){ + printf("%d\n", ret); + perror("Failed to register xalarm\n"); + return 1; + + } + printf("Waiting for plugin msg ... \n"); + ret = xalarm_get_event(msg, register_info); + if(ret < 0){ + perror("Failed to get msg\n"); + return 1; + } + + printf("Processing msg from plugin ... \n"); + + process_alarm_info(msg); + sleep(5); + xalarm_unregister_event(register_info); + printf("Reporting msg to plugin ... \n"); + + ret = xalarm_report_event(ALARM_REBOOT_ACK_EVENT, "ACK OK"); + + + if(ret < 0){ + perror("Failed to send msg\n"); + return 1; + } + return 0; + } \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/RA/smh_common_type.h b/testcases/smoke-test/smock-sysSentry/RA/smh_common_type.h new file mode 100644 index 0000000000000000000000000000000000000000..dffca147f95c14bb8fd937b6663dc5ea5a6bf7ff --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/RA/smh_common_type.h @@ -0,0 +1,85 @@ +#ifndef SMH_COMMON_TYPE_H +#define SMH_COMMON_TYPE_H + +#include + +#define SMH_TYPE ('}') +#define OOM_EVENT_MAX_NUMA_NODES 8 +#define EID_MAX_LEN 40 // eid str len 39 + '\0' + +enum { + SMH_CMD_MSG_ACK = 0x10, +}; + +#define SMH_MSG_ACK _IO(SMH_TYPE, SMH_CMD_MSG_ACK) + +enum ras_err_type { + UB_MEM_ATOMIC_DATA_ERR = 0, + UB_MEM_READ_DATA_ERR, + UB_MEM_FLOW_POISON, + UB_MEM_FLOW_READ_AUTH_POISON, + UB_MEM_FLOW_READ_AUTH_RESPERR, + UB_MEM_TIMEOUT_POISON, + UB_MEM_TIMEOUT_RESPERR, + UB_MEM_READ_DATA_POISON, + UB_MEM_READ_DATA_RESPERR, + MAR_NOPORT_VLD_INT_ERR, + MAR_FLUX_INT_ERR, + MAR_WITHOUT_CXT_ERR, + RSP_BKPRE_OVER_TIMEOUT_ERR, + MAR_NEAR_AUTH_FAIL_ERR, + MAR_FAR_AUTH_FAIL_ERR, + MAR_TIMEOUT_ERR, + MAR_ILLEGAL_ACCESS_ERR, + REMOTE_READ_DATA_ERR_OR_WRITE_RESPONSE_ERR, +}; + +enum sentry_ubus_mem_err_type { + SENTRY_MEM_ERR_ROUTE, + SENTRY_MEM_FLUX_INT, + SENTRY_MEM_ERR_OUTBOUND_TRANSLATION, + SENTRY_MEM_ERR_INBOUND_TRANSLATION, + SENTRY_MEM_ERR_TIMEOUT, + SENTRY_MEM_ERR_BUS, + SENTRY_MEM_ERR_UCE, + SENTRY_MEM_ERR_NO_REPORT = 1000, +}; + +enum sentry_msg_helper_msg_type { + SMH_MESSAGE_POWER_OFF, + SMH_MESSAGE_OOM, + SMH_MESSAGE_PANIC, + SMH_MESSAGE_KERNEL_REBOOT, + SMH_MESSAGE_UB_MEM_ERR, + SMH_MESSAGE_PANIC_ACK, + SMH_MESSAGE_KERNEL_REBOOT_ACK, +}; + +struct sentry_msg_helper_msg { + enum sentry_msg_helper_msg_type type; + uint64_t msgid; + uint64_t start_send_time; + uint64_t timeout_time; + // reboot_info is empty + union { + struct { + int nr_nid; + int nid[OOM_EVENT_MAX_NUMA_NODES]; + int sync; + int timeout; + int reason; + } oom_info; + struct { + uint32_t cna; + char eid[EID_MAX_LEN]; + } remote_info; + struct { + uint64_t pa; + enum ras_err_type raw_ubus_mem_err_type; + } ub_mem_info; + } helper_msg_info; + unsigned long res; +}; + +#endif + diff --git a/testcases/smoke-test/smock-sysSentry/comm/lib.sh b/testcases/smoke-test/smock-sysSentry/comm/lib.sh new file mode 100644 index 0000000000000000000000000000000000000000..967db76829f2bd9273b153e48191a6c8cb3a9561 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/comm/lib.sh @@ -0,0 +1,283 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091,SC2034,SC2154 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "$OET_PATH/libs/locallibs/common_lib.sh" + +TMP_DIR=/root/sysSentry_script +task_log_path=/var/log/sysSentry +run_alarm="/var/run/xalarm/alarm" +run_report="/var/run/xalarm/report" +xalarm_run_dir="/var/run/xalarm" +ra_path="$OET_PATH/testcases/smoke-test/smoke-sysSentry/RA" +mkdir -p "${TMP_DIR}" + +function pre_env(){ + local node_num="$1" + + DNF_INSTALL "sysSentry" 1 + DNF_INSTALL "sysSentry" 2 + [ -n "${node_num}" ] && DNF_INSTALL "sysSentry" 3 + start_sentry + + SSH_CMD " + yum -y install sentry_msg_monitor + systemctl start xalarmd + systemctl start sysSentry + modprobe sentry_msg_helper + modprobe sentry_reporter + sleep 5 + modprobe sentry_urma_comm + modprobe odf + modprobe cis + sleep 5 + modprobe sentry_remote_reporter + sentryctl start sentry_msg_monitor + sleep 5 + lsmod | grep sentry + " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + [ -n "${node_num}" ] && SSH_CMD " + yum -y install sentry_msg_monitor + systemctl start xalarmd + systemctl start sysSentry + modprobe sentry_msg_helper + modprobe sentry_reporter + sleep 5 + modprobe sentry_urma_comm + modprobe odf + modprobe cis + sleep 5 + modprobe sentry_remote_reporter + sentryctl start sentry_msg_monitor + sleep 5 + lsmod | grep sentry + " "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" + + get_eid + +} +function pre_oom_env(){ + yum -y install sentry_msg_monitor + modprobe sentry_msg_helper + modprobe sentry_reporter + systemctl start xalarmd + systemctl start sysSentry + sleep 5 + sentryctl list | grep sentry_msg_monitor + +} + +function pre_xalarm_env(){ + DNF_INSTALL "sysSentry" 1 + yum -y remove libxalarm pyxalarm sentry_msg_monitor sysSentry + yum -y install sentry_msg_monitor + systemctl start xalarmd + systemctl start sysSentry + sleep 5 + sentryctl list | grep sentry_msg_monitor +} + +function start_sentry(){ + yum -y install sentry_msg_monitor + systemctl start xalarmd + systemctl start sysSentry + modprobe sentry_msg_helper + modprobe sentry_reporter + sleep 5 + modprobe sentry_urma_comm + modprobe odf + modprobe cis + sleep 5 + modprobe sentry_remote_reporter + sentryctl start sentry_msg_monitor + sleep 5 + lsmod |grep sentry +} + +function get_eid(){ + node1_eid1=$(urma_admin show | awk '/udma2/ && /eid0/ {print $5}') + node1_eid2=$(urma_admin show | awk '/udma5/ && /eid0/ {print $5}') + + node2_eid1=$(SSH_CMD "urma_admin show | awk '/udma2/ && /eid0/ {print \$5}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" | grep -oE '([0-9a-fA-F]{4}:){7}[0-9a-fA-F]{4}') + node2_eid2=$(SSH_CMD "urma_admin show | awk '/udma5/ && /eid0/ {print \$5}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" | grep -oE '([0-9a-fA-F]{4}:){7}[0-9a-fA-F]{4}') + + node3_eid1=$(SSH_CMD "urma_admin show | awk '/udma2/ && /eid0/ {print \$5}'" "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" | grep -oE '([0-9a-fA-F]{4}:){7}[0-9a-fA-F]{4}') + node3_eid2=$(SSH_CMD "urma_admin show | awk '/udma5/ && /eid0/ {print \$5}'" "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" | grep -oE '([0-9a-fA-F]{4}:){7}[0-9a-fA-F]{4}') + + # node1_cna=1 + # node2_cna=2 + node1_cna=$(( $(cat /sys/devices/ub_bus_controller0/00001/primary_cna | tr -d '[:space:]') )) + raw_output=$(SSH_CMD "cat /sys/devices/ub_bus_controller0/00001/primary_cna 2>/dev/null" \ + "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}") + + hex_value=$(echo "$raw_output" | tr -d '[:space:]' | grep -oE '0x[0-9A-Fa-f]+') + node2_cna=$(( $hex_value )) + node3_cna=3 + test_jetty_id=$((RANDOM % 1021 + 3)) + +} +function gcc_ra(){ + local ra_type="$1" + [ -n "${ra_type}" ] && ra_type="_$ra_type" + yum -y install sentry_msg_monitor libxalarm-devel gcc + gcc "${ra_path}"/RA"${ra_type}".c -Wall -o3 -lxalarm -o "${ra_path}"/RA"${ra_type}" + chmod 777 "${ra_path}/RA${ra_type}" + + + +} +function start_RA(){ + local ra_type="${1}" + local ra_pare="${2:-}" + local delay_time="${3:-}" + case $ra_type in + panic | kernel_reboot) + [ -f "${ra_path}"/RA_reboot ] || gcc_ra reboot + stdbuf -oL "/root/mugen/testcases/smoke-test/smoke-sysSentry/RA/RA_reboot" "${ra_pare}" "${delay_time}" > "${TMP_DIR}/RA.log" 2>&1 & + ;; + oom) + [ -f "${ra_path}"/RA_oom ] || gcc_ra oom + stdbuf -oL "${ra_path}/RA_${ra_type}" > "${TMP_DIR}/RA.log" 2>&1 & + ;; + *) + [ -f "${ra_path}"/RA_"${ra_type}" ] || gcc_ra "${ra_type}" + stdbuf -oL "${ra_path}/RA_${ra_type}" > "${TMP_DIR}/RA_${ra_type}.log" 2>&1 & + ;; + + esac + return $? +} + +function check_RA_xalarmd(){ + local ra_log="${1-RA_xalarmd.log}" + SLEEP_WAIT 30 "grep -aw 'alarmid:1003' ${TMP_DIR}/${ra_log} | grep -w 'msg:hello'" 2 + CHECK_RESULT $? 0 0 +} +function check_RA_plugin(){ + local ra_log="${1-RA_plugin.log}" + SLEEP_WAIT 30 "grep -aw 'alarmid:1004' ${TMP_DIR}/${ra_log} | grep -w 'msg:ACK OK'" 2 + CHECK_RESULT $? 0 0 +} +function clean_sysSentry_message(){ + echo > /var/log/sysSentry/xalarm.log + echo > /var/log/sysSentry/sentry_msg_monitor.log +} + +function check_oom_dmesg(){ + local sync_value="${1}" + local reason_value="${2}" + SLEEP_WAIT 30 "dmesg | grep -aw \"got lowmem message\" | grep -a \"sync=${sync_value} reason=${reason_value}\"" 2 +} +function check_RA_oom(){ + local sync_value="${1}" + local reason_value="${2}" + for ((check_ra_oom_loop=0; check_ra_oom_loop<5; check_ra_oom_loop++)); do + grep -aw "\[alarmid:1005\]" ${TMP_DIR}/RA.log | grep -F "sync:${sync_value},timeout:30000,reason:${reason_value}" && break + sleep 2 + done + [ "${check_ra_oom_loop}" -lt 5 ] || return 1 + tmp_nid_info=$(grep -aw "\[alarmid:1005\]" ${TMP_DIR}/RA.log | tail -1 | grep "\[msg:.*\]" | awk -F'{' '{print $2}' | awk -F'}' '{print $1}' | awk -F']' '{print $1}') + echo "$tmp_nid_info" + check_oom_nid_info "${tmp_nid_info}" + CHECK_RESULT $? 0 0 +} +function check_alarmd(){ + local tmp_alarm_id="${1}" + local tmp_alarm_msg_len="${2}" + local is_reply="${3}" + local tmp_reply_msg_len="${4}" + tmp_reply_id=$((expr "$tmp_alarm_id" + 1)) + if [[ "${tmp_alarm_msg_len}" == "no" ]]; then + tmp_alarm_msg_len=".*" + else + tmp_alarm_msg_len="$(grep -aw 'Send msg success:' ${task_log_path}/sentry_msg_monitor.log | grep -w "${tmp_alarm_id}" | head -1 | awk -F'str:' '{print $2}' | sed 's/ //g' | wc -c)" + tmp_alarm_msg_len="$((expr "$tmp_alarm_msg_len" - 1))" + fi + + if [[ "${tmp_reply_msg_len}" == "no" ]]; then + tmp_reply_msg_len=".*" + else + tmp_reply_msg_len="$(grep -aw 'Get msg:' ${task_log_path}/sentry_msg_monitor.log | grep -w "${tmp_reply_id}" | head -1 | awk -F'str:' '{print $2}' | sed 's/ //g' | wc -c)" + tmp_reply_msg_len="$(expr "$tmp_reply_msg_len" - 1)" + fi + grep -aw "Broadcast msg success" ${task_log_path}/xalarm.log | grep "alarm msg is alarm_id: ${tmp_alarm_id}, alarm_level: MINOR_ALM, alarm_type: ALARM_TYPE_OCCUR" + CHECK_RESULT $? 0 0 + + grep "alarm_id: ${tmd_alarm_id}" ${task_log_path}/xalarm.log | grep "alarm_msg_len: ${tmp_alarm_msg_len}" + CHECK_RESULT $? 0 0 + +} +function check_oom_sentry_msg_monitor(){ + local sync_value="${1}" + local reason_value="${2}" + local is_reply="${3-true}" + grep -aw 'Send msg success:' ${task_log_path}/sentry_msg_monitor.log | grep -w "alarm_type: 1005, str: .*,sync:${sync_value},timeout:30000,reason:${reason_value}" + CHECK_RESULT $? 0 0 + tmp_nid_info=$(grep -aw "alarm_type: 1005" ${task_log_path}/sentry_msg_monitor.log | tail -1 | awk -F'str:' '{print $2}' | awk -F'{' '{print $2}' | awk -F'}' '{print $1}' | awk -F']' '{print $1}') + check_oom_nid_info "${tmp_nid_info}" + CHECK_RESULT $? 0 0 +} + +function check_oom_nid_info(){ + local tmp_nid_info="${1}" + # nr_nid=$(echo "$tmp_nid_info" | grep -oP '(?<=nr_nid:)\d+') + # tmp_nid_str=$(echo "$tmp_nid_info" | grep -oP '(?<=nid:\[)[^\]]+(?=)') + nid_str=($(echo "${tmp_nid_str[@]}" | tr ',' ' ')) + echo ${nid_str[@]:0:$(expr "$nr_nid")} | grep -v '\-1' + CHECK_RESULT $? 0 0 + echo ${nid_str[@]:"$nr_nid":$(expr ${#nid_str[@]} - 1)} | xargs -n 1 | grep '\-1' | wc -l | grep "$(expr ${#nid_str[@]} - "$nr_nid")" + CHECK_RESULT $? 0 0 +} +function check_log(){ + local reply_type="${1}" + local log_type="${2}" + local alarm_value="${3}" + local ack_value="${4}" + local alarm_count + local log_file + local grep_alarm + local grep_ack + + case "$log_type" in + "RA") + log_file="${TMP_DIR}/RA.log" + grep_alarm="\[alarmid:${alarm_value}\]" + ;; + "alarmd") + log_file="${task_log_path}/xalarm.log" + grep_alarm="alarm_id: ${alarm_value}," + grep_ack="alarm_id: ${ack_value}" + ;; + "monitor") + log_file="${task_log_path}/sentry_msg_monitor.log" + grep_alarm="alarm_type: ${alarm_value}" + grep_ack="alarm_type: ${ack_value}" + ;; + esac + + timeout=$([ "$reply_type" -eq 2 ] && echo 100 || echo 50) + sleep "$timeout" + cat "$log_file" + alarm_count=$(grep -a "$grep_alarm" "$log_file" | wc -l) + send_ack=$(grep -a "$grep_ack" "$log_file" | wc -l) + + test $alarm_count -ge 1 + CHECK_RESULT $? 0 0 + + if [ "$log_type" != "RA" -a "$reply_type" = "0" ]; then + test $send_ack -ge 1 + CHECK_RESULT $? 0 0 + fi +} diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_001.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_001.sh new file mode 100644 index 0000000000000000000000000000000000000000..5072fed2d5b33f7a0b22f7afabaff66e3ee0788c --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_001.sh @@ -0,0 +1,44 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091,SC2034,SC2004,SC2145 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid=${node2_eid1} --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_uvb_comm --server_cna="${node2_cna}" + SSH_CMD "sentryctl set sentry_uvb_comm --server_cna='${node1_cna}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA kernel_reboot 0 0 + SSH_CMD "reboot" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 0 RA 1009 1010 + check_log 0 alarmd 1009 1010 + check_log 0 monitor 1009 1010 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_002.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_002.sh new file mode 100644 index 0000000000000000000000000000000000000000..3d1de91dec99790baf59385581878f0b5863c441 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_002.sh @@ -0,0 +1,41 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1};${node1_eid2},${node2_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1};${node2_eid2},${node1_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA kernel_reboot 2 0 + SSH_CMD "reboot" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 2 RA 1009 1010 + check_log 2 alarmd 1009 1010 + check_log 2 monitor 1009 1010 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_003.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_003.sh new file mode 100644 index 0000000000000000000000000000000000000000..4f23695a4118a60d5eef7af9cbcc426126bdd69b --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_003.sh @@ -0,0 +1,44 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1};${node1_eid2},${node2_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1};${node2_eid2},${node1_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_uvb_comm --server_cna="${node2_cna}" + SSH_CMD "sentryctl set sentry_uvb_comm --server_cna='${node1_cna}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA kernel_reboot 0 20 + SSH_CMD "reboot" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 0 RA 1009 1010 + check_log 0 alarmd 1009 1010 + check_log 0 monitor 1009 1010 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_004.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_004.sh new file mode 100644 index 0000000000000000000000000000000000000000..f58ba2f29de40f9e4a85805290938f3f59e827fa --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_kernel_reboot_004.sh @@ -0,0 +1,44 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env 3 +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node3_cna} --eid='${node3_eid1};${node3_eid2}' --panic=on --kernel_reboot=on " "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1},${node3_eid1};${node1_eid2},${node2_eid2},${node3_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1},${node3_eid1};${node2_eid2},${node1_eid2},${node3_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node3_eid1},${node1_eid1},${node2_eid1};${node3_eid2},${node1_eid2},${node2_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" + + start_RA kernel_reboot 0 0 + SSH_CMD "reboot" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + SSH_CMD "reboot" "${NODE3_IPV4}" "${NODE3_PASSWORD}" "${NODE3_USER}" + + check_log 0 RA 1009 1010 + check_log 0 alarmd 1009 1010 + check_log 0 monitor 1009 1010 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_oom.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_oom.sh new file mode 100644 index 0000000000000000000000000000000000000000..91c92e3ae030e1f8d1deb2e14fc9e98b072f11c2 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_oom.sh @@ -0,0 +1,45 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_oom_env +} +function run_test(){ + start_RA oom + CHECK_RESULT $? 0 0 + echo 50000 | sudo tee /proc/sys/vm/nr_hugepages + + check_oom_dmesg 0 0 + CHECK_RESULT $? 0 0 + + check_RA_oom 1 1 + CHECK_RESULT $? 0 0 + + check_alarmd 1005 71 " " 3 + CHECK_RESULT $? 0 0 + + check_oom_sentry_msg_monitor 1 1 true + CHECK_RESULT $? 0 0 + +} +function post_test(){ + clean_sysSentry_message + echo 0 | sudo tee /proc/sys/vm/nr_hugepages +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_001.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_001.sh new file mode 100644 index 0000000000000000000000000000000000000000..c8b0f81dd2adc43a03a30752cbde234aae641052 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_001.sh @@ -0,0 +1,44 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid=${node2_eid1} --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_uvb_comm --server_cna="${node2_cna}" + SSH_CMD "sentryctl set sentry_uvb_comm --server_cna='${node1_cna}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA panic 0 0 + SSH_CMD "echo c > /proc/sysrq-trigger" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 0 RA 1007 1008 + check_log 0 alarmd 1007 1008 + check_log 0 monitor 1007 1008 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_002.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_002.sh new file mode 100644 index 0000000000000000000000000000000000000000..17b5873126adfc7b9a3bf743705336fd5ccf1b8a --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_002.sh @@ -0,0 +1,42 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1};${node1_eid2},${node2_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1};${node2_eid2},${node1_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA panic 2 0 + SSH_CMD "echo c > /proc/sysrq-trigger" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 2 RA 1007 1008 + check_log 2 alarmd 1007 1008 + check_log 2 monitor 1007 1008 + + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_003.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_003.sh new file mode 100644 index 0000000000000000000000000000000000000000..fe275e09da15d725bc18b8ac321903d1f54618c4 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_003.sh @@ -0,0 +1,44 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1};${node1_eid2},${node2_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1};${node2_eid2},${node1_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_uvb_comm --server_cna="${node2_cna}" + SSH_CMD "sentryctl set sentry_uvb_comm --server_cna='${node1_cna}'" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA panic 0 20 + SSH_CMD "echo c > /proc/sysrq-trigger" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 0 RA 1007 1008 + check_log 0 alarmd 1007 1008 + check_log 0 monitor 1007 1008 + +} +function post_test(){ + clean_sysSentry_message +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_004.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_004.sh new file mode 100644 index 0000000000000000000000000000000000000000..f53becdfafcd55b8ef1f4d449eed072f5ac5ef56 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_panic_004.sh @@ -0,0 +1,42 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x + +function pre_test(){ + pre_env 3 +} +function run_test(){ + sentryctl set sentry_remote_reporter --cna "${node1_cna}" --eid "${node1_eid1};${node1_eid2}" --panic=on --kernel_reboot=on + SSH_CMD "sentryctl set sentry_remote_reporter --cna=${node2_cna} --eid='${node2_eid1};${node2_eid2}' --panic=on --kernel_reboot=on " "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + sentryctl set sentry_urma_comm --server_eid="${node1_eid1},${node2_eid1},${node3_eid1};${node1_eid2},${node2_eid2},${node3_eid2}" --client_jetty_id="${test_jetty_id}" + SSH_CMD "sentryctl set sentry_urma_comm --server_eid='${node2_eid1},${node1_eid1},${node3_eid1};${node2_eid2},${node1_eid2},${node3_eid2}' --client_jetty_id=${test_jetty_id}" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + start_RA panic 0 0 + SSH_CMD "echo c > /proc/sysrq-trigger" "${NODE2_IPV4}" "${NODE2_PASSWORD}" "${NODE2_USER}" + + check_log 0 RA 1007 1008 + check_log 0 alarmd 1007 1008 + check_log 0 monitor 1007 1008 + +} +function post_test(){ + clean_sysSentry_message + +} + +main "$@" \ No newline at end of file diff --git a/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_xalarmd_recorver.sh b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_xalarmd_recorver.sh new file mode 100644 index 0000000000000000000000000000000000000000..c9ab679a64cabfb8758cc63560e6ce820bb2c237 --- /dev/null +++ b/testcases/smoke-test/smock-sysSentry/oe_test_sysSentry_xalarmd_recorver.sh @@ -0,0 +1,93 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 +# You can use it according to the terms and conditions of the Mulan PSL v2. +# http://license.coscl.org.cn/MulanPSL2 +# THIS PROGRAM 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 v2 for more details. + +# ################################## +# @Author : yangna +# @Date : 2025/12/12 +# ################################## + + +source "comm/lib.sh" +set -x +function check_RA_xalarmd_log() { + SLEEP_WAIT 30 "systemctl is-active xalarmd.service" 2 + CHECK_RESULT $? 0 0 + sleep 6 #等服务重启 + start_RA xalarmd + CHECK_RESULT $? 0 0 + + start_RA plugin + CHECK_RESULT $? 0 0 + + check_RA_xalarmd + check_RA_plugin +} + +function check_xalarmd_log() { + grep "${run_alarm} not found or socket file been replaced, recovering" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + grep "${run_report} not found or socket file been replaced, recovering" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + grep "${run_alarm} has been created" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + grep "${run_report} has been created" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + +} +function pre_test(){ + pre_xalarm_env +} +function run_test(){ + check_RA_xalarmd_log + clean_sysSentry_message + + rm -rf "${run_alarm}" + rm -rf "${run_report}" + check_RA_xalarmd_log + check_xalarmd_log + + clean_sysSentry_message + rm -rf "${run_alarm}" && touch "${run_alarm}" + rm -rf "${run_report}" && touch "${run_alarm}" + check_RA_xalarmd_log + check_xalarmd_log + + chmod 700 "${run_alarm}" + chmod 700 "${run_report}" + + check_RA_xalarmd_log + + grep "socket file ${run_alarm} permission .* set not properly, recover as default permission" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + grep "socket file ${run_report} permission .* set not properly, recover as default permission" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + + chmod 700 "${xalarm_run_dir}" + check_RA_xalarmd_log + grep "${xalarm_run_dir} permission set not properly, recover as default permission" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + + rm -rf "${xalarm_run_dir}" + check_RA_xalarmd_log + grep "xalarmd run dir not exists, create ${xalarm_run_dir}" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + + kill -9 "$(pgrep -f /usr/bin/xalarmd)" + check_RA_xalarmd_log + grep "xalarm daemon init success" "${task_log_path}"/xalarm.log + CHECK_RESULT $? 0 0 + +} +function post_test(){ + clean_sysSentry_message + systemctl stop xalarmd + # return 0 +} + +main "$@" \ No newline at end of file