SND@LHC Software
Loading...
Searching...
No Matches
generate_test_db.py
Go to the documentation of this file.
1""" This module generates a test database for MongoDB tests. """
2import datetime
3import yaml
4
5from ...databases.mongodb.models.detector import Detector
6from ...databases.mongodb.models.detectorWrapper import DetectorWrapper
7from ...databases.mongodb.models.condition import Condition
8from mongoengine import connect
9
10
11# Module metadata
12__author__ = "Yitian Kong"
13__copyright__ = "TU/e ST2019"
14__version__ = "1.0"
15__status__ = "Prototype"
16__description__ = "Delete test database > Create test database > Insert test data"
17
18
19# Delete database
20def delete_db(connection_dict):
21 """
22 Delete the database of which name is provided.
23 :param connection_dict: Dict containinig all the information to make a connection.
24 """
25 db_connect = connect(
26 db=connection_dict['db_name'],
27 username=connection_dict['user'],
28 password=connection_dict['password'],
29 host=connection_dict['host'],
30 port=connection_dict['port']
31 )
32
33 db_connect.drop_database(connection_dict['db_name'])
34
35
36# Fetch database details from config file
37# with open(r'test_mongodb_config.yml') as file: # local path
38with open(r'conditionsDatabase/tests/test_mongodb/test_mongodb_config.yml') as file: # CI path
39 # The FullLoader parameter handles the conversion from YAML
40 # scalar values to Python the dictionary format
41 con_dic = yaml.load(file, Loader=yaml.FullLoader)
42
43connection_dict = con_dic['mongo']
44
45# Everytime empty database before filling data
46delete_db(connection_dict)
47
48# Create a DB connection
49connect(
50 db=connection_dict['db_name'],
51 username=connection_dict['user'],
52 password=connection_dict['password'],
53 host=connection_dict['host'],
54 port=connection_dict['port']
55)
56
57# Create detector detector_id_exist
58detector_wrapper = DetectorWrapper(name="detector_id_exist")
59
60detector_id_exist = Detector(name="detector_id_exist")
61condition = Condition(name="condition_exist", tag="tag", type="type",
62 collected_at=datetime.datetime(2020, 3, 12, 11, 5, 27),
63 valid_since=datetime.datetime(2020, 3, 12, 11, 5, 27),
64 valid_until=datetime.datetime(2020, 4, 10, 11, 5, 27),
65 values={
66 "name": "name detector",
67 "value": "value detector"
68 })
69detector_id_exist.conditions.append(condition)
70
71# Create detector detector_id_exist/sub_detector_id_exist
72sub_detector = Detector(name="sub_detector_id_exist")
73sub_condition = Condition(name="sub_detector_id_exist", tag="sub_tag", type="sub_type",
74 collected_at=datetime.datetime(2020, 4, 12, 11, 5, 27),
75 valid_since=datetime.datetime(2020, 4, 12, 11, 5, 27),
76 valid_until=datetime.datetime(2020, 5, 12, 11, 5, 27),
77 values={
78 "name": "name sub detector",
79 "value": "value sub detector"
80 })
81sub_detector.conditions.append(sub_condition)
82detector_id_exist.subdetectors.append(sub_detector)
83
84# Create detector detector_id_exist/sub_detector_id_exist/sub_sub_detector_id_exist
85sub_sub_detector = Detector(name="sub_sub_detector_id_exist")
86sub_sub_condition = Condition(name="sub_sub_detector_id_exist", tag="sub_sub_tag", type="sub_sub_type",
87 collected_at=datetime.datetime(2020, 5, 12, 11, 5, 27),
88 valid_since=datetime.datetime(2020, 5, 12, 11, 5, 27),
89 valid_until=datetime.datetime(2020, 6, 12, 11, 5, 27),
90 values={
91 "name": "name sub sub detector",
92 "value": "value sub sub detector"
93 })
94sub_sub_detector.conditions.append(sub_sub_condition)
95sub_detector.subdetectors.append(sub_sub_detector)
96
97detector_wrapper.detector = detector_id_exist
98
99detector_wrapper.save()
100
101# Create another detector without condition
102detector_wrapper = DetectorWrapper(name="detector_without_condition")
103
104detector_2 = Detector(name="detector_without_condition")
105
106sub_detector_2 = Detector(name="sub_detector_2")
107
108sub_condition_2 = Condition(name="sub_condition_2", tag="sub_2", type="sub_type_2",
109 collected_at=datetime.datetime.now(),
110 valid_since=datetime.datetime.now(),
111 valid_until=datetime.datetime.now())
112
113sub_detector_2.conditions.append(sub_condition_2)
114detector_2.subdetectors.append(sub_detector_2)
115
116detector_wrapper.detector = detector_2
117detector_wrapper.save()