77from hypernets_processor .context import Context
88from hypernets_processor .utils .config import read_config_file
99from hypernets_processor .utils .logging import configure_logging
10+ from hypernets_processor .utils .config import (
11+ PROCESSOR_CONFIG_PATH ,
12+ JOB_CONFIG_TEMPLATE_PATH ,
13+ )
1014from hypernets_processor .utils .paths import relative_path
1115import datetime
1216import os
2327__email__ = "sam.hunt@npl.co.uk"
2428__status__ = "Development"
2529
26- this_directory = os .path .dirname (__file__ )
27- TEMPLATE_PROCESSOR_CONFIG_PATH = relative_path (
28- "../etc/processor.config" , this_directory
29- )
30- TEMPLATE_JOB_CONFIG_PATH = relative_path (
31- "../etc/job_template.config" , this_directory
32- )
3330
3431TEST_DS_DIM_SIZES_W = {"wavelength" : 271 , "series" : 3 , "scan" : 10 , "sequence" : 1 }
3532
@@ -68,7 +65,48 @@ def setup_test_anomoly_db(url):
6865 del db
6966
7067
71- def setup_test_processor_config (archive_directory = None , metadata_db_url = None ):
68+ def setup_test_archive_db (url ):
69+ """
70+ Creates archive_db for testing, populated with test data
71+
72+ :type url: str
73+ :param url: database url
74+ """
75+
76+ db = HypernetsDBBuilder .create_db_template (url , "archive" )
77+
78+ db ["products" ].insert (
79+ dict (
80+ product_name = "new_product1" ,
81+ raw_product_name = "SEQ20200311T112230" ,
82+ site = "site" ,
83+ )
84+ )
85+ db ["products" ].insert (
86+ dict (
87+ product_name = "new_product2" ,
88+ raw_product_name = "SEQ20200311T112330" ,
89+ site = "site" ,
90+ )
91+ )
92+ db ["products" ].insert (
93+ dict (
94+ product_name = "new_product3" ,
95+ raw_product_name = "SEQ20200311T112430" ,
96+ site = "site" ,
97+ )
98+ )
99+
100+ db .commit ()
101+ del db
102+
103+
104+ def setup_test_processor_config (
105+ archive_directory = None ,
106+ metadata_db_url = None ,
107+ archive_db_url = None ,
108+ anomoly_db_url = None ,
109+ ):
72110 """
73111 Creates processor_config for testing
74112
@@ -78,18 +116,32 @@ def setup_test_processor_config(archive_directory=None, metadata_db_url=None):
78116 :type metadata_db_url: str
79117 :param metadata_db_url: (optional) metadata db url, set if provided else default value used
80118
119+ :type archive_db_url: str
120+ :param archive_db_url: (optional) archive db url, set if provided else default value used
121+
122+ :type anomoly_db_url: str
123+ :param anomoly_db_url: (optional) anomoly db url, set if provided else default value used
124+
81125 :return: test processor configuration information
82126 :rtype: configparser.RawConfigParser
83127 """
84128
85- processor_config = read_config_file (TEMPLATE_PROCESSOR_CONFIG_PATH )
129+ processor_config = read_config_file (PROCESSOR_CONFIG_PATH )
86130
87131 processor_config ["Processor" ]["version" ] = "0.0"
88132
89- processor_config ["Input " ]["metadata_db_url" ] = (
133+ processor_config ["Databases " ]["metadata_db_url" ] = (
90134 metadata_db_url if metadata_db_url is not None else "sqlite:///metadata.db"
91135 )
92136
137+ processor_config ["Databases" ]["anomoly_db_url" ] = (
138+ anomoly_db_url if anomoly_db_url is not None else "sqlite:///anomoly.db"
139+ )
140+
141+ processor_config ["Databases" ]["archive_db_url" ] = (
142+ archive_db_url if archive_db_url is not None else "sqlite:///archive.db"
143+ )
144+
93145 processor_config ["Output" ]["archive_directory" ] = (
94146 archive_directory if archive_directory is not None else "out"
95147 )
@@ -99,36 +151,24 @@ def setup_test_processor_config(archive_directory=None, metadata_db_url=None):
99151 return processor_config
100152
101153
102- def setup_test_job_config (raw_data_directory = None , anomoly_db_url = None ):
154+ def setup_test_job_config (raw_data_directory = None ):
103155 """
104156 Creates processor_config for testing
105157
106158 :type raw_data_directory: str
107159 :param raw_data_directory: (optional) raw data directory, set if provided else default value used
108160
109- :type anomoly_db_url: str
110- :param anomoly_db_url: (opitional) anomoly db url, set if provided
111-
112161 :return: test job configuration information
113162 :rtype: configparser.RawConfigParser
114163 """
115- job_config = read_config_file (TEMPLATE_JOB_CONFIG_PATH )
164+ job_config = read_config_file (JOB_CONFIG_TEMPLATE_PATH )
116165
117- job_config ["Info " ]["network" ] = "land"
118- job_config ["Info " ]["site" ] = "site"
166+ job_config ["Job " ]["network" ] = "land"
167+ job_config ["Job " ]["site" ] = "site"
119168
120169 job_config ["Input" ]["raw_data_directory" ] = (
121170 raw_data_directory if raw_data_directory is not None else "data"
122171 )
123- job_config ["Output" ]["anomoly_db_url" ] = (
124- anomoly_db_url if anomoly_db_url is not None else "sqlite:///anomoly.db"
125- )
126-
127- job_config ["Processing Options" ][
128- "measurement_function_name"
129- ] = "standard_measurement_function"
130- job_config ["Processing Options" ]["reflectance_protocol_name" ] = "standard_protocol"
131- job_config ["Processing Options" ]["write_l1a" ] = "True"
132172
133173 return job_config
134174
@@ -149,23 +189,27 @@ def setup_test_context(
149189 archive_directory = None ,
150190 anomoly_db_url = None ,
151191 metadata_db_url = None ,
192+ archive_db_url = None ,
152193 create_directories = False ,
153194 create_dbs = False ,
154195):
155196 """
156197 Creates context for testing
157198
199+ :type raw_data_directory: str
200+ :param raw_data_directory: (optional) raw data directory, set if provided else default value used
201+
158202 :type archive_directory: str
159203 :param archive_directory: (optional) data archive directory, set if provided else default value used
160204
205+ :type anomoly_db_url: str
206+ :param anomoly_db_url: (opitional) anomoly db url, set if provided
207+
161208 :type metadata_db_url: str
162209 :param metadata_db_url: (optional) metadata db url, set if provided else default value used
163210
164- :type raw_data_directory: str
165- :param raw_data_directory: (optional) raw data directory, set if provided else default value used
166-
167- :type anomoly_db_url: str
168- :param anomoly_db_url: (opitional) anomoly db url, set if provided
211+ :type archive_db_url: str
212+ :param archive_db_url: (opitional) archive db url, set if provided
169213
170214 :type create_directories: bool
171215 :param create_directories: option to create test directories at specified paths (default: False)
@@ -178,32 +222,48 @@ def setup_test_context(
178222 """
179223
180224 processor_config = setup_test_processor_config (
181- archive_directory = archive_directory , metadata_db_url = metadata_db_url
182- )
183- job_config = setup_test_job_config (
184- raw_data_directory = raw_data_directory , anomoly_db_url = anomoly_db_url
225+ archive_directory = archive_directory ,
226+ metadata_db_url = metadata_db_url ,
227+ anomoly_db_url = anomoly_db_url ,
228+ archive_db_url = archive_db_url ,
185229 )
230+ job_config = setup_test_job_config (raw_data_directory = raw_data_directory )
231+
186232 logger = setup_test_logger ()
187233
188234 if create_directories :
189235 os .makedirs (processor_config ["Output" ]["archive_directory" ])
190236 os .makedirs (job_config ["Input" ]["raw_data_directory" ])
237+ os .makedirs (
238+ os .path .join (
239+ job_config ["Input" ]["raw_data_directory" ], "SEQ20200311T112330"
240+ )
241+ )
242+ os .makedirs (
243+ os .path .join (
244+ job_config ["Input" ]["raw_data_directory" ], "SEQ20200311T112430"
245+ )
246+ )
247+ os .makedirs (
248+ os .path .join (
249+ job_config ["Input" ]["raw_data_directory" ], "SEQ20200311T112530"
250+ )
251+ )
191252
192253 if create_dbs :
193- setup_test_metadata_db (processor_config ["Input" ]["metadata_db_url" ])
194- setup_test_anomoly_db (job_config ["Output" ]["anomoly_db_url" ])
254+ setup_test_metadata_db (processor_config ["Databases" ]["metadata_db_url" ])
255+ setup_test_anomoly_db (processor_config ["Databases" ]["anomoly_db_url" ])
256+ setup_test_archive_db (processor_config ["Databases" ]["archive_db_url" ])
257+
258+ if not create_dbs :
259+ processor_config ["Databases" ]["metadata_db_url" ] = None
260+ processor_config ["Databases" ]["anomoly_db_url" ] = None
261+ processor_config ["Databases" ]["archive_db_url" ] = None
195262
196263 context = Context (
197264 processor_config = processor_config , job_config = job_config , logger = logger
198265 )
199266
200- if not create_dbs :
201- del context .metadata_db
202- context .metadata_db = None
203-
204- del context .anomoly_db
205- context .anomoly_db = None
206-
207267 context .set_config_value ("time" , datetime .datetime (2021 , 4 , 3 , 11 , 21 , 15 ))
208268
209269 return context
@@ -232,9 +292,13 @@ def teardown_test_context(context, remove_directories=False, remove_dbs=False):
232292 del context .anomoly_db
233293 os .remove (anomoly_db_path )
234294
295+ archive_db_path = context .archive_db .engine .url .database
296+ del context .archive_db
297+ os .remove (archive_db_path )
298+
235299 if remove_directories :
236- shutil .rmtree (context .archive_directory )
237- shutil .rmtree (context .raw_data_directory )
300+ shutil .rmtree (context .get_config_value ( " archive_directory" ) )
301+ shutil .rmtree (context .get_config_value ( " raw_data_directory" ) )
238302
239303
240304def create_test_ds (ds_format ):
0 commit comments