Skip to content

pytest の test_tmgr_utl_cmd 実行時に稀にエラーとなる #469

@hender14

Description

@hender14

詳細

c2a_core を用いた別の FSW を開発している際、examples 以下にある pytest (test_time_manager.py) でたまに Failing になる

エラー例

src_core/system/time_manager/test_time_manager.py:185: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

utl_unixtime_epoch = 1761656586.556032, cycle_correction = 1.2520956949697104

    def check_utl_cmd_with(utl_unixtime_epoch, cycle_correction):
        # utl_unixtime_epoch, cycle_correction を設定する
        assert "SUC" == wings.util.send_rt_cmd_and_confirm(
            ope,
            c2a_enum.Cmd_CODE_TMGR_SET_UTL_UNIXTIME_EPOCH,
            (utl_unixtime_epoch,),
            c2a_enum.Tlm_CODE_HK,
        )
        assert "SUC" == wings.util.send_rt_cmd_and_confirm(
            ope, c2a_enum.Cmd_CODE_TMGR_SET_CYCLE_CORRECTION, (cycle_correction,), c2a_enum.Tlm_CODE_HK
        )
    
        # unixtime_info を現在の unixtime と ti で同期する
        # 必ず Cmd_CODE_TMGR_SET_CYCLE_CORRECTION のあとに送ること
        unixtime_now = time.time()
        tlm_HK = ope.get_latest_tlm(c2a_enum.Tlm_CODE_HK)[0]
        ti_now = tlm_HK["HK.SH.TI"]
        assert "SUC" == wings.util.send_rt_cmd_and_confirm(
            ope,
            c2a_enum.Cmd_CODE_TMGR_UPDATE_UNIXTIME,
            (unixtime_now, ti_now, 0),
            c2a_enum.Tlm_CODE_HK,
        )
        unixtime_at_ti0 = unixtime_now - ti_now / (OBCT_CYCLES_PER_SEC * cycle_correction)
    
        # 最初にTL_gsをクリアしておく
        assert "SUC" == wings.util.send_rt_cmd_and_confirm(
            ope,
            c2a_enum.Cmd_CODE_TLCD_CLEAR_ALL_TIMELINE,
            (c2a_enum.TLCD_ID_FROM_GS,),
            c2a_enum.Tlm_CODE_HK,
        )
    
        # NOP を10個, 未来のランダムな unixtime で登録する
        unixtime_of_cmds = generate_random_unixtime(10)
        send_utl_nops(unixtime_of_cmds)
    
        # TL_gs に正しく登録されているか確認
        tlm_TL = wings.util.generate_and_receive_tlm(
            ope, c2a_enum.Cmd_CODE_TG_GENERATE_RT_TLM, c2a_enum.Tlm_CODE_TL
        )
        assert tlm_TL["TL.LINE_NO"] == c2a_enum.TLCD_ID_FROM_GS
        assert tlm_TL["TL.PAGE_NO"] == 0
    
        for i, unixtime in enumerate(unixtime_of_cmds):
            tlm_name = "TL.CMD" + str(i) + "_TI"
            ti = calc_ti_from_unixtime(unixtime, unixtime_at_ti0, utl_unixtime_epoch, cycle_correction)
    
>           assert tlm_TL[tlm_name] > ti - 1, {"registered_unixtime": unixtime, "tlm_name": tlm_name}
E           AssertionError: {'registered_unixtime': 1764249592.4, 'tlm_name': 'TL.CMD0_TI'}
E           assert 2147483648 > (2301613474.8590145 - 1)

src_core/system/time_manager/test_time_manager.py:256: AssertionError

close条件

対応したら

備考

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions