@@ -290,11 +290,15 @@ def get_token_extractions_count(self, token):
290290 token (str): Token name
291291 """
292292 tokens_in_extractions = 0
293- if (
294- self .requirement_test_data is not None
295- and "cim_fields " in self .requirement_test_data .keys ()
293+ if self . requirement_test_data is not None and (
294+ "cim_fields" in self .requirement_test_data . keys ()
295+ or "other_fields " in self .requirement_test_data .keys ()
296296 ):
297- for extracted_field in self .requirement_test_data ["cim_fields" ].values ():
297+ field_values = [
298+ * self .requirement_test_data .get ("cim_fields" , {}).values (),
299+ * self .requirement_test_data .get ("other_fields" , {}).values (),
300+ ]
301+ for extracted_field in field_values :
298302 if isinstance (extracted_field , str ):
299303 tokens_in_extractions += len (re .findall (token , extracted_field ))
300304 elif isinstance (extracted_field , list ):
@@ -315,21 +319,24 @@ def replace_token(self, token, token_values):
315319 sample_tokens = re .finditer (token , self .event , flags = re .MULTILINE )
316320
317321 for _ , token_value in enumerate (token_values ):
318- token_value = token_value .value
319- match_object = next (sample_tokens )
320- match_str = (
321- match_object .group (0 )
322- if len (match_object .groups ()) == 0
323- else match_object .group (1 )
324- )
325- match_str = re .escape (match_str )
326- self .event = re .sub (
327- match_str ,
328- lambda x : str (token_value ),
329- self .event ,
330- 1 ,
331- flags = re .MULTILINE ,
332- )
322+ try :
323+ token_value = token_value .value
324+ match_object = next (sample_tokens )
325+ match_str = (
326+ match_object .group (0 )
327+ if len (match_object .groups ()) == 0
328+ else match_object .group (1 )
329+ )
330+ match_str = re .escape (match_str )
331+ self .event = re .sub (
332+ match_str ,
333+ lambda x : str (token_value ),
334+ self .event ,
335+ 1 ,
336+ flags = re .MULTILINE ,
337+ )
338+ except StopIteration :
339+ break
333340 else :
334341 self .event = re .sub (
335342 token , lambda x : str (token_values ), self .event , flags = re .MULTILINE
@@ -365,28 +372,30 @@ def update_requirement_test_field(self, field, token, token_values):
365372 token_values (list/str): Token value(s) which are replaced in the key fields
366373 """
367374 if field != "_time" :
368- if (
369- self .requirement_test_data is not None
370- and "cim_fields " in self .requirement_test_data .keys ()
375+ if self . requirement_test_data is not None and (
376+ "cim_fields" in self .requirement_test_data . keys ()
377+ or "other_fields " in self .requirement_test_data .keys ()
371378 ):
372- for cim_field , value in self .requirement_test_data [
373- "cim_fields"
374- ].items ():
375- if token in value :
376- if isinstance (token_values , list ):
377- if len (token_values ) == 1 :
378- self .requirement_test_data ["cim_fields" ][
379- cim_field
380- ] = value .replace (token , str (token_values [0 ].key ))
379+ fields_key = ["cim_fields" , "other_fields" ]
380+ for key in fields_key :
381+ for field_name , value in self .requirement_test_data .get (
382+ key , {}
383+ ).items ():
384+ if token in value :
385+ if isinstance (token_values , list ):
386+ if len (token_values ) == 1 :
387+ self .requirement_test_data [key ][
388+ field_name
389+ ] = value .replace (token , str (token_values [0 ].key ))
390+ else :
391+ self .requirement_test_data [key ][field_name ] = [
392+ value .replace (token , str (token_value .key ))
393+ for token_value in token_values
394+ ]
381395 else :
382- self .requirement_test_data ["cim_fields" ][cim_field ] = [
383- value .replace (token , str (token_value .key ))
384- for token_value in token_values
385- ]
386- else :
387- self .requirement_test_data ["cim_fields" ][
388- cim_field
389- ] = value .replace (token , str (token_values .key ))
396+ self .requirement_test_data [key ][
397+ field_name
398+ ] = value .replace (token , str (token_values .key ))
390399
391400 def get_key_fields (self ):
392401 """
0 commit comments