aboutsummaryrefslogtreecommitdiffstats
path: root/moon_manager/tests/performance_tests_policies/meta_rules.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_manager/tests/performance_tests_policies/meta_rules.py')
-rw-r--r--moon_manager/tests/performance_tests_policies/meta_rules.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/moon_manager/tests/performance_tests_policies/meta_rules.py b/moon_manager/tests/performance_tests_policies/meta_rules.py
new file mode 100644
index 00000000..e9d85944
--- /dev/null
+++ b/moon_manager/tests/performance_tests_policies/meta_rules.py
@@ -0,0 +1,80 @@
+# Software Name: MOON
+
+# Version: 5.4
+
+# SPDX-FileCopyrightText: Copyright (c) 2018-2020 Orange and its contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# This software is distributed under the 'Apache License 2.0',
+# the text of which is available at 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+# or see the "LICENSE" file for more details.
+
+
+from locust import TaskSet, task
+import json
+from uuid import uuid4
+import utils
+
+
+class MetaRulesRequests(TaskSet):
+ token = ""
+
+ def on_start(self):
+ """ on_start is called when a Locust start before any task is scheduled """
+ utils.login(self)
+
+ def on_stop(self):
+ """ on_stop is called when the TaskSet is stopping """
+ utils.logout(self)
+
+ def create_category(self, otype="subject"):
+ self.client.get("/{}_categories".format(otype), headers={"X-Api-Key": self.token})
+ category_name = "test_category_" + str(uuid4())
+ req = self.client.post("/{}_categories".format(otype),
+ headers={"X-Api-Key": self.token},
+ data={
+ "name": category_name,
+ "description": "locust {} category tests".format(otype),
+ })
+ content = json.loads(req.content.decode("utf-8"))
+ for category_id, category_value in content.get("{}_categories".format(otype), {}).items():
+ if category_value.get("name") == category_name:
+ return category_id
+
+ def delete_category(self, category_id, otype="subject"):
+ self.client.delete("/{}_categories/{}".format(otype, category_id),
+ headers={"X-Api-Key": self.token})
+
+ @task(10)
+ def meta_rules(self):
+ self.client.get("/meta_rules", headers={"X-Api-Key": self.token})
+ subject_category_id = self.create_category("subject")
+ object_category_id = self.create_category("object")
+ action_category_id = self.create_category("action")
+ meta_rule_name = "meta_rule_" + str(uuid4())
+ data = {
+ "name": meta_rule_name,
+ "subject_categories": [subject_category_id],
+ "object_categories": [object_category_id],
+ "action_categories": [action_category_id]
+ }
+ req = self.client.post("/meta_rules",
+ headers={"X-Api-Key": self.token,
+ "Content-Type": "application/json"},
+ data=json.dumps(data)
+ )
+ content = json.loads(req.content.decode("utf-8"))
+ for meta_rule_id, meta_rule_value in content.get("meta_rules", {}).items():
+ if meta_rule_value.get("name") == meta_rule_name:
+ self.client.delete("/meta_rules/{}".format(meta_rule_id),
+ headers={"X-Api-Key": self.token})
+ break
+ self.delete_category(subject_category_id, "subject")
+ self.delete_category(object_category_id, "object")
+ self.delete_category(action_category_id, "action")
+
+ @task(1)
+ def status(self):
+ self.client.get("/status", headers={"X-Api-Key": self.token})
+
+