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])
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) )
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) )
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) )
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)])
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'], [])
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])
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])
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)]