summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryang liu <[email protected]>2024-03-29 17:52:53 +0800
committeryang liu <[email protected]>2024-03-29 17:52:53 +0800
commitcbad385a35425ea61173ffe8a1dae89d8545d160 (patch)
tree18352711d6c2dfa358c580b9845247b6a1d5e8c2
parent12dde021c69c3baec9b7dcd24586acc34323117b (diff)
parenta792d6e7898926b57c900816fa5834afd18a26bf (diff)
Merge branch 'develop' of https://git.mesalab.cn/zhaokun/tsg_policy_api into develop
-rw-r--r--createObject.py2
-rw-r--r--createProfile.py4
-rw-r--r--data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_common_name.json31
-rw-r--r--data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_organization_name.json31
-rw-r--r--data/case_data/statistics_rule/statistics_latency.json14
-rw-r--r--getLog.py20
6 files changed, 83 insertions, 19 deletions
diff --git a/createObject.py b/createObject.py
index b484707..62c9c41 100644
--- a/createObject.py
+++ b/createObject.py
@@ -217,6 +217,7 @@ class CreateObject():
response = requests.post(url, data=data, headers=headers, files= files)
print('已经请求了1次了')
print('本次请求返回的code号是'+ str(response.status_code))
+ time.sleep(20)
time2 = datetime.utcnow()
time_difference = time2 - time1
seconds_difference = time_difference.total_seconds()
@@ -271,6 +272,7 @@ class CreateObject():
# 从返回数据中获取object_type,方便后续判断将id添加到哪个全局变量里边
if is_repeat == 1:
print(response_dict)
+ time.sleep(20)
obj_type = response_dict['data']['object']['type']
object_ids = self.get_object_ids(response_dict)
# 为了每次清空需要反复创建的object的组合使用,否则会反复删除已经存在的object
diff --git a/createProfile.py b/createProfile.py
index e1efd1c..bf0d4ff 100644
--- a/createProfile.py
+++ b/createProfile.py
@@ -46,7 +46,7 @@ class CreateProfile():
metrics_dict["source_columns"][0] = post_statistics_data["chart_list"][chart_idex]["metrics"][metric_index]["source_columns"]
metrics_dict["function"]["name"] = post_statistics_data["chart_list"][chart_idex]["metrics"][metric_index]["function"]
metrics_dict["alias"] = post_statistics_data["chart_list"][chart_idex]["metrics"][metric_index]["source_columns"].title()
- metrics_dict["alias"] = "".join(metrics_dict["alias"].split("_")) # 取消中间空格
+ metrics_dict["alias"] = " ".join(metrics_dict["alias"].split("_")) # 将_连接改为空格连接
# 根据metric和function判断unit是什么
metrics = metrics_dict["source_columns"][0]
fun_name = metrics_dict["function"]["name"]
@@ -95,7 +95,7 @@ class CreateProfile():
dimensions_dict["alias"] = "Time"
else:
dimensions_dict["alias"] = dimensions_dict["source_columns"][0].lower()
- dimensions_dict["alias"] = "".join(dimensions_dict["alias"].split("_")) # 取消中间空格
+ dimensions_dict["alias"] = " ".join(dimensions_dict["alias"].split("_")) # 将_连接改为空格连接
f_template_dict["statistics_template"]["dataview"]["charts"][chart_idex]["query"]["dimensions"].append(copy.deepcopy(dimensions_dict))
chart_after_name = dimensions_dict["source_columns"][0] + " "
# 重组order by
diff --git a/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_common_name.json b/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_common_name.json
new file mode 100644
index 0000000..29bef17
--- /dev/null
+++ b/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_common_name.json
@@ -0,0 +1,31 @@
+{
+ "isMultiPriority": false,
+ "ruleNum": 1,
+ "policyType": "security",
+ "rule_action_1": "deny",
+ "method_1": "default",
+ "do_log_1": 2,
+ "send_tcp_reset_1": 1,
+ "obj_condition_1": [
+ {
+ "attribute_name": "ATTR_SOURCE_IP",
+ "objectType": "ip",
+ "objectSubType": "ip",
+ "objectList": [
+ {
+ "addItemList": [
+ {
+ "ip_address": "default",
+ "port_range": "0-65535"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "app_name_1": ["ssl_handshake_certificate_issuer_common_name"],
+ "hope_return": "timed out",
+ "counters_1": {"hits": 1},
+ "log_query_param_1": [],
+ "command": "curl --connect-timeout 5 -m 5 -kv https://froala.com/wysiwyg-editor/"
+} \ No newline at end of file
diff --git a/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_organization_name.json b/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_organization_name.json
new file mode 100644
index 0000000..e49d507
--- /dev/null
+++ b/data/case_data/signature/security_deny_default_siguature_ssl_handshake_certificate_issuer_organization_name.json
@@ -0,0 +1,31 @@
+{
+ "isMultiPriority": false,
+ "ruleNum": 1,
+ "policyType": "security",
+ "rule_action_1": "deny",
+ "method_1": "default",
+ "do_log_1": 2,
+ "send_tcp_reset_1": 1,
+ "obj_condition_1": [
+ {
+ "attribute_name": "ATTR_SOURCE_IP",
+ "objectType": "ip",
+ "objectSubType": "ip",
+ "objectList": [
+ {
+ "addItemList": [
+ {
+ "ip_address": "default",
+ "port_range": "0-65535"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "app_name_1": ["ssl_handshake_certificate_issuer_organization_name"],
+ "hope_return": "timed out",
+ "counters_1": {"hits": 1},
+ "log_query_param_1": [],
+ "command": "curl --connect-timeout 5 -m 5 -kv https://www.bilibili.com/"
+} \ No newline at end of file
diff --git a/data/case_data/statistics_rule/statistics_latency.json b/data/case_data/statistics_rule/statistics_latency.json
index 3321052..a11c916 100644
--- a/data/case_data/statistics_rule/statistics_latency.json
+++ b/data/case_data/statistics_rule/statistics_latency.json
@@ -5,8 +5,8 @@
"rule_action_1": "statistics",
"do_log_1": 2,
"trex": {
- "m": 1,
- "d": 1,
+ "m": 10,
+ "d": 60,
"yaml_name": "http_50.yaml",
"pcap_name": "http_get_347pkts.pcap"
},
@@ -56,19 +56,13 @@
}
],
"dimensions": [
- {
- "source_columns": [
- "__time"
- ],
- "is_drilldown": 0
- }
],
"order_by": null,
"limit": 1000,
"drilldown_limit": null,
"threshold": {
- "in_bytes": "10",
- "out_bytes": "10"
+ "in_bytes": "0",
+ "out_bytes": "0"
}
}
]
diff --git a/getLog.py b/getLog.py
index 2724d02..76591a9 100644
--- a/getLog.py
+++ b/getLog.py
@@ -202,8 +202,13 @@ class GetLog():
result_list_source = r_dict["data"]["result"]
#print(result_list_source)
result_list = []
- for _ in copy.deepcopy(result_list_source): # 将key转成小写
- result_list.append({k.lower():v for k, v in _.items()})
+ for _ in copy.deepcopy(result_list_source): # 将key转成小写, ***且将key中空格替换为下划线****
+ #result_list.append({k.lower():v for k, v in _.items()})
+ tmp_dict = {}
+ for k, v in _.items():
+ k_0 = "_".join(k.lower().split()) # 将key变为小写且使用下划线连接
+ tmp_dict[k_0] = v
+ result_list.append(tmp_dict)
#print(result_list)
statistics_value = 0
if statistics_info["chart_type"] == "line" or statistics_info["chart_type"] == "table" or statistics_info["chart_type"] == "bar":
@@ -214,12 +219,12 @@ class GetLog():
for k, v in statistics_value.items():
if isinstance(v, int):
statistics_value[k] = 0
- # 遍历result结果,将metric值累加并存储到statistics_value
+ # 遍历result结果,将metric值累加并存储到statistics_value;因为流量单一,只能统计第一个计算值
for result_index in range(len(result_list)):
for k, v in result_list[result_index].items():
if isinstance(v, int):
statistics_value[k] += v
- if "Client IP Matched Objects".lower() in result_list[0].keys() or "Server IP Matched Objects".lower() in result_list[0].keys() or "websketch categories".lower() in result_list[0].keys():
+ if "client_ip_matched_objects".lower() in result_list[0].keys() or "server_ip_matched_objects".lower() in result_list[0].keys() or "websketch_categories".lower() in result_list[0].keys():
break
print("TSG实际查询到的结果数据:\n{}".format(statistics_value))
# 重组需要断言使用的key列表
@@ -236,7 +241,7 @@ class GetLog():
break
elif statistics_info["chart_type"] == "histogram":
print("histogram图表暂不统计结果")
- pass
+ metric_results = [True, ""]
return metric_results
def assert_livechart_statistics(self, chart_type, assert_key, statistics_value, statistics_metircs_except, trex_ip_info):
@@ -304,7 +309,7 @@ class GetLog():
print(f"遗漏断言的key:{assert_key}")
metric_result = False
elif chart_type == "histogram":
- pass
+ metric_result = True
else: # table bar等二维图表
print(f"流量回放结果总数:\n{statistics_metircs_except}")
failure_info_1 = f"Total expected results for traffic playback:{statistics_metircs_except}"
@@ -335,7 +340,8 @@ class GetLog():
metric_result = False
if metric_result == False:
print(failure_reason)
- failure_reason_info = "{}{}{}".format(failure_info_1, failure_info_2, failure_info_3)
+ actual_result = "Total actual results:{statistics_value}"
+ failure_reason_info = "{}{}{}.{}".format(failure_info_1, failure_info_2, failure_info_3, actual_result)
return metric_result, failure_reason_info
def get_sc_metric(self, token, start_time, end_time, sc_info, sc_expected_metric, active_dest_ips_list, host_api,vsys_id):