Пример #1
0
 def test_check_time_evolution_case1(self):
     parsed_data = [
         {'elink0': 0x03},
         {'elink0': 0x04},
         {'elink0': 0x05},
         {'elink0': 0x06},
         {'elink0': 0x07},
         {'elink0': 0x08},
         {'elink0': 0x09},
         {'elink0': 0x0A},
         {'elink0': 0x0B},
         {'elink0': 0x0C},
         {'elink0': 0x0D},
         {'elink0': 0x0E},
         {'elink0': 0x0F},
         {'elink0': 0x10},
         {'elink0': 0x11},
     ]
     ref_patterns = {
         'elink0': [i for i in range(0, 256)]
     }
     result = check_time_evolution(
         slice_ref_patterns(ref_patterns), parsed_data)
     self.assertEqual(result['elink0']['counting_direction'], 'up')
     self.assertEqual(result['elink0']['counting_length'], 13)
     self.assertEqual(result['elink0']['max_sequence'],
                      [0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
                       0x0C, 0x0D, 0x0E, 0x0F])
Пример #2
0
 def test_find_counting_direction_none(self):
     data = 0x01033C
     ref_patterns = {'elink0': [0xFD, 0xFE, 0xFF]}
     sliced = slice_ref_patterns(ref_patterns)['elink0']
     self.assertEqual(
         find_counting_direction(sliced, data, 24),
         (0, 9)
     )
Пример #3
0
 def test_find_counting_direction_down_case2(self):
     data = 0xFFFFFE
     ref_patterns = {'elink0': [0xFD, 0xFE, 0xFF]}
     sliced = slice_ref_patterns(ref_patterns)['elink0']
     self.assertEqual(
         find_counting_direction(sliced, data, 24),
         (-1, 0)
     )
Пример #4
0
 def test_find_counting_direction_up_case1(self):
     data = 0xFDFEFF
     ref_patterns = {'elink0': [0xFD, 0xFE, 0xFF]}
     sliced = slice_ref_patterns(ref_patterns)['elink0']
     self.assertEqual(
         find_counting_direction(sliced, data, 24),
         (1, 8)
     )
Пример #5
0
 def test_check_time_evolution_case6(self):
     parsed_data = [
         {'elink4': 0x03},
         {'elink4': 0x04},
         {'elink4': 0x05},
         {'elink4': 0x06},
         {'elink4': 0x07},
         {'elink4': 0x08},
         {'elink4': 0x09},
         {'elink4': 0x0A},
         {'elink4': 0x0B},
         {'elink4': 0x0C},
         {'elink4': 0x0D},
         {'elink4': 0x0E},
         {'elink4': 0x0F},
         {'elink4': 0x10},
         {'elink4': 0x11},
         {'elink4': 0x12},
         {'elink4': 0x13},
         {'elink4': 0x14},
         {'elink4': 0x15},
         {'elink4': 0x16},
         {'elink4': 0x17},
         {'elink4': 0x18},
         {'elink4': 0x19},
         {'elink4': 0x0A},
         {'elink4': 0x1B},
         {'elink4': 0x0C},
         {'elink4': 0x0C},
         {'elink4': 0x0E},
         {'elink4': 0x0F},
         {'elink4': 0x10},
         {'elink4': 0x10},
         {'elink4': 0x91},
         {'elink4': 0x11},
         {'elink4': 0x92},
         {'elink4': 0x12},
     ]
     ref_patterns = {
         'elink4': [i for i in range(0, 256)]
     }
     result = check_time_evolution(
         slice_ref_patterns(ref_patterns), parsed_data)
     self.assertEqual(result['elink4']['counting_direction'], 'up')
     self.assertEqual(result['elink4']['counting_length'], 22)
     self.assertEqual(result['elink4']['max_sequence'],
                      [i for i in range(3, 0x19)])
Пример #6
0
 def test_check_time_evolution_case4(self):
     parsed_data = [
         {'elink0': 0x1A},
         {'elink0': 0x2C},
         {'elink0': 0x3C},
         {'elink0': 0x01},
         {'elink0': 0x04},
         {'elink0': 0xFE},
         {'elink0': 0xAA},
         {'elink0': 0xD2},
         {'elink0': 0x2B},
     ]
     ref_patterns = {
         'elink0': [i for i in range(0, 256)]
     }
     result = check_time_evolution(
         slice_ref_patterns(ref_patterns), parsed_data)
     self.assertEqual(result['elink0']['counting_direction'], 'none')
     self.assertEqual(result['elink0']['counting_length'], 0)
     self.assertEqual(result['elink0']['max_sequence'], [])
Пример #7
0
 def test_check_time_evolution_case3(self):
     parsed_data = [
         {'elink0': 0x09},
         {'elink0': 0x08},
         {'elink0': 0x07},
         {'elink0': 0x01},
         {'elink0': 0x01},
         {'elink0': 0x01},
         {'elink0': 0x02},
         {'elink0': 0x03},
         {'elink0': 0x04},
     ]
     ref_patterns = {
         'elink0': [i for i in range(0, 256)]
     }
     result = check_time_evolution(
         slice_ref_patterns(ref_patterns), parsed_data)
     self.assertEqual(result['elink0']['counting_direction'], 'up')
     self.assertEqual(result['elink0']['counting_length'], 2)
     self.assertEqual(result['elink0']['max_sequence'],
                      [0x01, 0x02])
Пример #8
0
 def test_check_time_evolution_case5(self):
     parsed_data = [
         {'elink4': 0x1C},
         {'elink4': 0x2C},
         {'elink4': 0x3C},
         {'elink4': 0x4C},
         {'elink4': 0x5C},
         {'elink4': 0x6C},
         {'elink4': 0x7C},
         {'elink4': 0x8C},
         {'elink4': 0x9C},
     ]
     ref_patterns = {
         'elink4': [i for i in range(0, 256)]
     }
     result = check_time_evolution(
         slice_ref_patterns(ref_patterns), parsed_data)
     self.assertEqual(result['elink4']['counting_direction'], 'up')
     self.assertEqual(result['elink4']['counting_length'], 7)
     self.assertEqual(result['elink4']['max_sequence'],
                      [0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C])
     self.assertEqual(result['elink4']['badness'],
                      [4, 4, 4, 4, 4, 4, 4])
Пример #9
0
elink_names = ['elink' + str(i) for i in range(0, 12)]
comet_prefix = sys.argv[1]


##############
# Validation #
##############

comet_mem_files = generate_path_to_all_mem_files(comet_prefix)
parsed_data = {comet: {gbtx: parse_mem_file(f)
                       for gbtx, f in inner.items()}
               for comet, inner in comet_mem_files.items()}

ref_patterns = ref_cyclic_pattern(elink_names, [1]*12)
sliced_patterns = slice_ref_patterns(ref_patterns, slice_size=slice_size)
test_result = {comet: {
    gbtx: check_time_evolution(sliced_patterns, data,
                               data_slice_size=data_slice_size,
                               slice_size=slice_size)
    for gbtx, data in inner.items()}
    for comet, inner in parsed_data.items()}

# Determine the COMET variant of each elink on each GBTx
final_result = {gbtx: {elink: {
    'from': 'none', 'direction': 'none', 'length': 0}
    for elink in elink_names} for gbtx in range(1, 7)}

for gbtx in range(1, 7):
    for comet in ['a', 'b']:
        row = ['GBTx-{}'.format(gbtx)]