Best Python code snippet using localstack_python
test_mach.py
Source:test_mach.py  
1from pykdebugparser.kevent import Kevent2from pykdebugparser.trace_handlers.mach import AsynchronousSystemTrapsReason, ThreadState, ProcessState, \3    DbgVmFaultType, VmProtection4def test_kernel_data_abort_same_el_exc_arm(traces_parser):5    events = [6        Kevent(timestamp=4188336568757,7               data=(b'K\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00HH\x13\x07\xf0'8                     b'\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00'),9               values=(2516582475, 0, 18446744005108779080, 0), tid=690, debugid=16973973, eventid=16973972,10               func_qualifier=1),11        Kevent(timestamp=4188336568849,12               data=(b'K\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00HH\x13\x07\xf0'13                     b'\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00'),14               values=(2516582475, 0, 18446744005108779080, 0), tid=690,15               debugid=16973974, eventid=16973972, func_qualifier=2)16    ]17    ret = list(traces_parser.feed_generator(events))18    abort = ret[0]19    assert abort.esr == 251658247520    assert abort.far == 021    assert abort.pc == 1844674400510877908022def test_interrupt(traces_parser):23    events = [24        Kevent(timestamp=9999124593098,25               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x07p\x94\x01\x00\x00\x00\x01\x00\x00'26                     b'\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'),27               values=(0, 6785337264, 1, 3), tid=825504, debugid=17104897, eventid=17104896, func_qualifier=1),28        Kevent(timestamp=9999124593219,29               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'30                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),31               values=(0, 0, 0, 0), tid=825504, debugid=17104898, eventid=17104896, func_qualifier=2)32    ]33    ret = list(traces_parser.feed_generator(events))34    interrupt = ret[0]35    assert interrupt.pc == 0x1947007b036    assert interrupt.is_user37    assert interrupt.type == 338def test_user_data_abort_lower_el_exc_arm(traces_parser):39    events = [40        Kevent(timestamp=10170262586161,41               data=(b'K\x00\x00\x92\x00\x00\x00\x00\xc0bEm\x01\x00\x00\x00$]\x14\x93\x01'42                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),43               values=(2449473611, 6128231104, 6762552612, 0), tid=840790, debugid=16974993, eventid=16974992,44               func_qualifier=1),45        Kevent(timestamp=10170262586221,46               data=(b'K\x00\x00\x92\x00\x00\x00\x00\xc0bEm\x01\x00\x00\x00$]\x14\x93\x01'47                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),48               values=(2449473611, 6128231104, 6762552612, 0), tid=840790, debugid=16974994,49               eventid=16974992, func_qualifier=2)50    ]51    ret = list(traces_parser.feed_generator(events))52    abort = ret[0]53    assert abort.esr == 244947361154    assert abort.far == 612823110455    assert abort.pc == 676255261256def test_decr_trap(traces_parser):57    events = [58        Kevent(timestamp=5453855881172,59               data=(b'\xe3\xff\xff\xff\xff\xff\xff\xff\xc4\x9dt\xac\x01\x00\x00\x00\x01\x00\x00\x00'60                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),61               values=(18446744073709551587, 7188291012, 1, 0), tid=941745, debugid=17367040, eventid=17367040,62               func_qualifier=0)63    ]64    ret = list(traces_parser.feed_generator(events))65    trace = ret[0]66    assert trace.latency == -2967    assert trace.pc == 0x1ac749dc468    assert trace.user_mode69def test_decr_set(traces_parser):70    events = [71        Kevent(timestamp=10041923525014,72               data=(b'\xb7\xa8\x03\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'73                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),74               values=(239799, 2, 0, 0), tid=267, debugid=17367044, eventid=17367044, func_qualifier=0)75    ]76    ret = list(traces_parser.feed_generator(events))77    decr_set = ret[0]78    assert decr_set.decr == 23979979    assert decr_set.deadline == 080    assert decr_set.queue_count == 081def test_msc_mach_vm_allocate_trap(traces_parser):82    events = [83        Kevent(timestamp=7476363431,84               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00\x08#\xc0k\x01\x00\x00\x00\xa0o\n\x00\x00\x00'85                     b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'),86               values=(515, 6102721288, 683936, 1), tid=6740, debugid=17563689, eventid=17563688,87               func_qualifier=1),88        Kevent(timestamp=7476363521,89               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'90                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),91               values=(0, 0, 0, 0), tid=6740, debugid=17563690, eventid=17563688,92               func_qualifier=2)93    ]94    ret = list(traces_parser.feed_generator(events))95    vm_allocate_trap = ret[0]96    assert vm_allocate_trap.target == 51597    assert vm_allocate_trap.address == 0x16bc0230898    assert vm_allocate_trap.size == 0xa6fa099    assert vm_allocate_trap.flags == 1100def test_msc_kern_mach_vm_purgable_control_trap(traces_parser):101    events = [102        Kevent(timestamp=7498028542,103               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00\x00@d\x02\x01\x00\x00\x00\x00\x00'104                     b'\x00\x00\x00\x00\x00\x00\xa4\xd9\x9do\x01\x00\x00\x00'),105               values=(515, 4335091712, 0, 6167583140), tid=7649, debugid=17563693, eventid=17563692, func_qualifier=1),106        Kevent(timestamp=7498028620,107               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'108                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),109               values=(0, 0, 0, 0), tid=7649, debugid=17563694, eventid=17563692, func_qualifier=2)110    ]111    ret = list(traces_parser.feed_generator(events))112    mach = ret[0]113    assert mach.target == 515114    assert mach.address == 0x102644000115    assert mach.control == 0116    assert mach.state == 0x16f9dd9a4117def test_msc_mach_vm_protect_trap(traces_parser):118    events = [119        Kevent(timestamp=319993982901,120               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00\x00\xc0@k\x01\x00\x00\x00\x00@\x00\x00'121                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),122               values=(515, 6094372864, 16384, 0), tid=57703, debugid=17563705, eventid=17563704, func_qualifier=1),123        Kevent(timestamp=319993982995,124               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'125                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),126               values=(0, 0, 0, 0), tid=57703, debugid=17563706, eventid=17563704, func_qualifier=2)127    ]128    ret = list(traces_parser.feed_generator(events))129    mach = ret[0]130    assert mach.target == 515131    assert mach.address == 0x16b40c000132    assert mach.size == 0x4000133    assert not mach.set_maximum134def test_msc_mach_vm_map_trap(traces_parser):135    events = [136        Kevent(timestamp=319987780136,137               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00hf\xdbm\x01\x00\x00\x00\x00\x80\x00\x00'138                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),139               values=(515, 6138062440, 32768, 0), tid=57808, debugid=17563709, eventid=17563708, func_qualifier=1),140        Kevent(timestamp=319987780148,141               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'142                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),143               values=(0, 0, 0, 0), tid=57808, debugid=17563710, eventid=17563708, func_qualifier=2)144    ]145    ret = list(traces_parser.feed_generator(events))146    mach = ret[0]147    assert mach.target == 515148    assert mach.address == 0x16ddb6668149    assert mach.size == 0x8000150    assert mach.mask == 0151def test_msc_mach_reply_port(traces_parser):152    events = [153        Kevent(timestamp=5453890497755,154               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'155                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),156               values=(0, 0, 0, 0), tid=941818, debugid=17563753, eventid=17563752, func_qualifier=1),157        Kevent(timestamp=5453890497771,158               data=(b'\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'159                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),160               values=(771, 0, 0, 0), tid=941818, debugid=17563754, eventid=17563752, func_qualifier=2)161    ]162    ret = list(traces_parser.feed_generator(events))163    mach = ret[0]164    assert mach.result == 0x303165def test_msc_thread_self_trap(traces_parser):166    events = [167        Kevent(timestamp=5453890560892,168               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'169                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),170               values=(0, 0, 0, 0), tid=941536, debugid=17563757, eventid=17563756, func_qualifier=1),171        Kevent(timestamp=5453890560912,172               data=(b'\x0b\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'173                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),174               values=(42507, 0, 0, 0), tid=941536, debugid=17563758, eventid=17563756, func_qualifier=2)175    ]176    ret = list(traces_parser.feed_generator(events))177    mach = ret[0]178    assert mach.result == 0xa60b179def test_msc_task_self_trap(traces_parser):180    events = [181        Kevent(timestamp=5453890600244,182               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'183                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),184               values=(0, 0, 0, 0), tid=941827, debugid=17563761, eventid=17563760, func_qualifier=1),185        Kevent(timestamp=5453890600265,186               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'187                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),188               values=(515, 0, 0, 0), tid=941827, debugid=17563762, eventid=17563760, func_qualifier=2)189    ]190    ret = list(traces_parser.feed_generator(events))191    mach = ret[0]192    assert mach.result == 515193def test_msc_mach_port_unguard_trap(traces_parser):194    events = [195        Kevent(timestamp=5453890742696,196               data=(b'\x03\x02\x00\x00\x00\x00\x00\x00\x03\x8e\n\x00\x00\x00\x00\x000j\xd2G\x01\x00\x00'197                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00'),198               values=(515, 691715, 5499939376, 0), tid=941734, debugid=17563817, eventid=17563816, func_qualifier=1),199        Kevent(timestamp=5453890742704,200               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'201                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),202               values=(0, 0, 0, 0), tid=941734, debugid=17563818, eventid=17563816, func_qualifier=2)203    ]204    ret = list(traces_parser.feed_generator(events))205    mach = ret[0]206    assert mach.target == 515207    assert mach.name == 0xa8e03208    assert mach.guard == 0x147d26a30209def test_msc_mach_timebase_info(traces_parser):210    events = [211        Kevent(timestamp=5453890643526,212               data=(b'\xc4F\n\x0e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'213                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),214               values=(8825489092, 0, 0, 0), tid=941827, debugid=17564005, eventid=17564004, func_qualifier=1),215        Kevent(timestamp=5453890643529,216               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'217                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),218               values=(0, 0, 0, 0), tid=941827, debugid=17564006, eventid=17564004, func_qualifier=2)219    ]220    ret = list(traces_parser.feed_generator(events))221    mach = ret[0]222    assert mach.info == 0x20e0a46c4223def test_mach_vmfault(traces_parser):224    events = [225        Kevent(timestamp=10533581994269,226               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x99k\x01\x00\x00\x00\x00\x00\x00\x00'227                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),228               values=(1, 6100205568, 0, 0), tid=876421, debugid=19922953, eventid=19922952, func_qualifier=1),229        Kevent(timestamp=10533581994584,230               data=(b'\x00\xc0\x99k\x01\x00\x00\x00\x01\x03\x1e\x00\x00\x00\x00\x00\x00\x00\x08\x00'231                     b'\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00'),232               values=(6100205568, 1966849, 524288, 95), tid=876421, debugid=20054024, eventid=20054024,233               func_qualifier=0),234        Kevent(timestamp=10533581994616,235               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x99k\x01\x00\x00\x00\x00\x00\x00\x00'236                     b'\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'),237               values=(1, 6100205568, 0, 1), tid=876421, debugid=19922954, eventid=19922952,238               func_qualifier=2)239    ]240    ret = list(traces_parser.feed_generator(events))241    fault = ret[1]242    assert fault.addr == 0x16b99c000243    assert not fault.is_kernel244    assert fault.result == 0245    assert fault.fault_type == DbgVmFaultType.DBG_ZERO_FILL_FAULT246    assert fault.pid == 95247    assert fault.caller_prot == [VmProtection.VM_PROT_READ, VmProtection.VM_PROT_WRITE]248def test_mach_vmfault_no_real_address(traces_parser):249    events = [250        Kevent(timestamp=10533581994269,251               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x99k\x01\x00\x00\x00\x00\x00\x00\x00'252                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),253               values=(1, 6100205568, 0, 0), tid=876421, debugid=19922953, eventid=19922952, func_qualifier=1),254        Kevent(timestamp=10533581994616,255               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x99k\x01\x00\x00\x00\x00\x00\x00\x00'256                     b'\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'),257               values=(1, 6100205568, 0, 1), tid=876421, debugid=19922954, eventid=19922952,258               func_qualifier=2)259    ]260    ret = list(traces_parser.feed_generator(events))261    fault = ret[0]262    assert fault.addr == 0x16b99c000263    assert not fault.is_kernel264    assert fault.result == 0265    assert fault.fault_type == DbgVmFaultType.DBG_ZERO_FILL_FAULT266    assert fault.pid is None267    assert fault.caller_prot is None268def test_mach_sched(traces_parser):269    events = [270        Kevent(timestamp=4580000449861,271               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00\x04'272                     b'\x00\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00'),273               values=(1, 623, 4, 81), tid=387391, debugid=20971520, eventid=20971520, func_qualifier=0)274    ]275    ret = list(traces_parser.feed_generator(events))276    sched = ret[0]277    assert sched.reason == [AsynchronousSystemTrapsReason.AST_PREEMPT]278    assert sched.to == 623279    assert sched.from_sched_pri == 4280    assert sched.to_sched_pri == 81281def test_mach_stkhandoff(traces_parser):282    events = [283        Kevent(timestamp=3897242679331,284               data=(b'\x05\x00\x00\x00\x00\x00\x00\x00w\xf5\x04\x00\x00\x00\x00\x007\x00'285                     b'\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00'),286               values=(5, 324983, 55, 63), tid=2761, debugid=20971528, eventid=20971528, func_qualifier=0)287    ]288    ret = list(traces_parser.feed_generator(events))289    handoff = ret[0]290    assert handoff.from_ == 2761291    assert handoff.to == 324983292    assert handoff.reason == [AsynchronousSystemTrapsReason.AST_PREEMPT, AsynchronousSystemTrapsReason.AST_URGENT]293    assert handoff.from_sched_pri == 55294    assert handoff.to_sched_pri == 63295def test_mach_mkrunnable(traces_parser):296    events = [297        Kevent(timestamp=9982171649633,298               data=(b'\xb7\x01\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\x00'299                     b'\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00'),300               values=(439, 81, 0, 8), tid=261, debugid=20971544, eventid=20971544, func_qualifier=0)301    ]302    ret = list(traces_parser.feed_generator(events))303    mkrunnable = ret[0]304    assert mkrunnable.tid == 439305    assert mkrunnable.sched_pri == 81306    assert mkrunnable.wait_result == 0307    assert mkrunnable.runnable_threads == 8308def test_mach_idle(traces_parser):309    events = [310        Kevent(timestamp=10071358928388,311               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'312                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),313               values=(0, 0, 0, 0), tid=332, debugid=20971557, eventid=20971556, func_qualifier=1),314        Kevent(timestamp=10071358928416,315               data=(b'\xa4\xb1\x0c\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00'316                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),317               values=(831908, 241, 3, 0), tid=332, debugid=27852808, eventid=27852808, func_qualifier=0),318        Kevent(timestamp=10071358928432,319               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xa4\xb1\x0c'320                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),321               values=(0, 6, 831908, 0), tid=332, debugid=20971558, eventid=20971556, func_qualifier=2)322    ]323    ret = list(traces_parser.feed_generator(events))324    idle = ret[1]325    assert idle.from_ == 0326    assert idle.process_state == ProcessState.PROCESSOR_RUNNING327    assert idle.to == 831908328    assert idle.reason == [AsynchronousSystemTrapsReason.AST_NONE]329def test_mach_block(traces_parser):330    events = [331        Kevent(timestamp=4643561352579,332               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x98\x92n\x07\xf0\xff\xff\xff\x00\x00\x00\x00\x00'333                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),334               values=(0, 18446744005114761880, 0, 0), tid=883, debugid=20971580, eventid=20971580, func_qualifier=0)335    ]336    ret = list(traces_parser.feed_generator(events))337    block = ret[0]338    assert block.reason == [AsynchronousSystemTrapsReason.AST_NONE]339    assert block.continuation == 0xfffffff0076e9298340def test_mach_wait(traces_parser):341    events = [342        Kevent(timestamp=4365975502717,343               data=(b'\x19\x99\xe5<\xfb\xd5\xa0u\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'344                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),345               values=(8476009773746460953, 0, 0, 0), tid=884, debugid=20971584, eventid=20971584, func_qualifier=0)346    ]347    ret = list(traces_parser.feed_generator(events))348    wait = ret[0]349    assert wait.event == 8476009773746460953350def test_mach_dispatch(traces_parser):351    events = [352        Kevent(timestamp=4440978834382,353               data=(b'L\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00'354                     b'\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'),355               values=(332, 0, 132, 3), tid=261, debugid=20971648, eventid=20971648, func_qualifier=0)356    ]357    ret = list(traces_parser.feed_generator(events))358    dispatch = ret[0]359    assert dispatch.tid == 332360    assert dispatch.reason == [AsynchronousSystemTrapsReason.AST_NONE]361    assert dispatch.state == [ThreadState.TH_RUN, ThreadState.TH_IDLE]362    assert dispatch.runnable_threads == 3363def test_thread_group_set(traces_parser):364    events = [365        Kevent(timestamp=10566859835989,366               data=(b'\xff\xff\xff\xff\xff\xff\xff\xff>\x00\x00\x00\x00\x00\x00\x00\xf6l\r\x00\x00\x00'367                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),368               values=(18446744073709551615, 62, 879862, 0), tid=879802, debugid=27656200, eventid=27656200,369               func_qualifier=0)]370    ret = list(traces_parser.feed_generator(events))371    group_set = ret[0]372    assert group_set.current_tgid == -1373    assert group_set.target_tgid == 62374    assert group_set.tid == 879862375    assert group_set.home_tgid == 0376def test_sched_clutch_cpu_thread_select(traces_parser):377    events = [378        Kevent(timestamp=4387224443080,379               data=(b'\xa7\xa7\x05\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x01'380                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),381               values=(370599, 241, 1, 0), tid=597, debugid=27852808, eventid=27852808, func_qualifier=0)382    ]383    ret = list(traces_parser.feed_generator(events))384    select = ret[0]385    assert select.tid == 370599386    assert select.tgid == 241387    assert select.scb_bucket == 1388def test_sched_clutch_tg_bucket_pri(traces_parser):389    events = [390        Kevent(timestamp=4517075147289,391               data=(b'/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00'392                     b'\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00'),393               values=(47, 0, 67, 16), tid=261, debugid=27852816, eventid=27852816, func_qualifier=0)394    ]395    ret = list(traces_parser.feed_generator(events))396    pri = ret[0]397    assert pri.tgid == 47398    assert pri.scb_bucket == 0399    assert pri.priority == 67...test_dyld.py
Source:test_dyld.py  
1from uuid import UUID2from pykdebugparser.kevent import Kevent3from pykdebugparser.trace_handlers.dyld import RtldFlag4def test_uuid_map_a(traces_parser):5    events = [6        Kevent(timestamp=2087564153638,7               data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'8                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),9               values=(10894735564102884633, 11556785676805719205, 7154774016, 0), tid=200651, debugid=520421376,10               eventid=520421376, func_qualifier=0)11    ]12    ret = list(traces_parser.feed_generator(events))13    assert ret[0].uuid == UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0')14    assert ret[0].load_addr == 0x1aa75300015    assert ret[0].fsid == 016def test_uuid_map_b(traces_parser):17    events = [18        Kevent(timestamp=2086624121103,19               data=(b'\xe9@\x02\x00\xff\xff\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'20                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),21               values=(1152921500312027369, 0, 0, 0), tid=200063, debugid=520421380, eventid=520421380,22               func_qualifier=0)23    ]24    ret = list(traces_parser.feed_generator(events))25    assert ret[0].fid_objno == 14768926    assert ret[0].fid_generation == 0xfffffff27def test_uuid_shared_cache_a(traces_parser):28    events = [29        Kevent(timestamp=2086625169813,30               data=(b'\n\x01x\x91Y\xfd>"\xb8\x9e\x148K0\xb5\n\x00\x80e\x8a\x01'31                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),32               values=(2467688206980088074, 771576010785463992, 6616875008, 0), tid=200065, debugid=520421416,33               eventid=520421416, func_qualifier=0)34    ]35    ret = list(traces_parser.feed_generator(events))36    assert ret[0].uuid == UUID('0a017891-59fd-3e22-b89e-14384b30b50a')37    assert ret[0].load_addr == 0x18a65800038    assert ret[0].fsid == 039def test_uuid_shared_cache_b(traces_parser):40    events = [41        Kevent(timestamp=2086625169822,42               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'43                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),44               values=(0, 0, 0, 0), tid=200065, debugid=520421420, eventid=520421420, func_qualifier=0)45    ]46    ret = list(traces_parser.feed_generator(events))47    assert ret[0].fid_objno == 048    assert ret[0].fid_generation == 049def test_timing_launch_executable(traces_parser):50    events = [51        Kevent(timestamp=2375523588323,52               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x01\x00\x00\x00\x00\x00\x00'53                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),54               values=(1, 4304863232, 0, 0), tid=227140, debugid=520552453, eventid=520552452, func_qualifier=1),55        Kevent(timestamp=2087564153638,56               data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'57                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),58               values=(10894735564102884633, 11556785676805719205, 7154774016, 0), tid=227140, debugid=520421376,59               eventid=520421376, func_qualifier=0),60        Kevent(timestamp=2375524298242,61               data=(b'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'62                     b'\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'),63               values=(1, 0, 0, 3), tid=227140, debugid=520552454, eventid=520552452, func_qualifier=2),64    ]65    ret = list(traces_parser.feed_generator(events))66    assert ret[1].main_executable_mh == 0x10097000067    assert ret[1].uuid_map_a[0].uuid == UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0')68    assert ret[1].uuid_map_a[0].load_addr == 0x1aa75300069def test_timing_func_for_add_image(traces_parser):70    events = [71        Kevent(timestamp=2375525615541,72               data=(b'\xd1\x06\x00\x00\x00\x00\x00\x80\x00\xa0\xa1\xb9\x01\x00\x00\x00\xbcOD\x9c\x01'73                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),74               values=(9223372036854777553, 7409344512, 6916689852, 0), tid=227140, debugid=520552473,75               eventid=520552472, func_qualifier=1),76        Kevent(timestamp=2375525615595,77               data=(b'\xd1\x06\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'78                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),79               values=(9223372036854777553, 0, 0, 0), tid=227140,80               debugid=520552474, eventid=520552472, func_qualifier=2),81    ]82    ret = list(traces_parser.feed_generator(events))83    assert ret[0].addr == 0x1b9a1a00084    assert ret[0].func == 0x19c444fbc85def test_timing_bootstrap_start(traces_parser):86    events = [87        Kevent(timestamp=2375523577973,88               data=(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'89                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),90               values=(0, 0, 0, 0), tid=227140, debugid=520552500, eventid=520552500, func_qualifier=0),91    ]92    ret = list(traces_parser.feed_generator(events))93    assert str(ret[0]) == 'DBG_DYLD_TIMING_BOOTSTRAP_START'94def test_timing_dlopen(traces_parser):95    events = [96        Kevent(timestamp=2375526922507,97               data=b'\x00\x00\x08\x1f\x00\x00\x00\x00\x0f\xda\x00\x00\x00\x00\xacp/System/Library/',98               values=(520617984, 8118864228242217487, 3417499243072017199, 3420891154821048652), tid=227157,99               debugid=117506049, eventid=117506048, func_qualifier=1),100        Kevent(timestamp=2375526922509, data=b'PrivateFrameworks/AppleFSCompres',101               values=(5072588517250003536, 7742373267996762482, 5072579785478188915, 8315178114207400787), tid=227157,102               debugid=117506048, eventid=117506048, func_qualifier=0),103        Kevent(timestamp=2375526922512, data=b'sion.framework/AppleFSCompressio',104               values=(7021787118631348595, 4697091075611256173, 8017343323464036464, 8028074750225051757), tid=227157,105               debugid=117506048, eventid=117506048, func_qualifier=0),106        Kevent(timestamp=2375526922515,107               data=(b'n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'108                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),109               values=(110, 0, 0, 0), tid=227157,110               debugid=117506050, eventid=117506048,111               func_qualifier=2),112        Kevent(timestamp=2375526922532,113               data=(b'(\x08\x00\x00\x00\x00\x00\x80\x0f\xda\x00\x00\x00\x00\xacp\x00\x01\x00\x00\x00'114                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),115               values=(9223372036854777896, 8118864228242217487, 256, 0), tid=227157, debugid=520617985,116               eventid=520617984, func_qualifier=1),117        Kevent(timestamp=2375526922543,118               data=(b'\x00\x00\x08\x1f\x00\x00\x00\x00\x0f\xda\x00\x00\x00\x00\xacp\x00\x00\x00\x00'119                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),120               values=(520617984, 8118864228242217487, 0, 0), tid=227157, debugid=117506051, eventid=117506048,121               func_qualifier=3),122        Kevent(timestamp=2375526922709,123               data=(b'(\x08\x00\x00\x00\x00\x00\x80\x81\xfd\xfa\r\x00\x00\x00\x00\x00\x00\x00\x00'124                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),125               values=(9223372036854777896, 234552705, 0, 0), tid=227157, debugid=520617986, eventid=520617984,126               func_qualifier=2),127    ]128    ret = list(traces_parser.feed_generator(events))129    dlopen = ret[-1]130    assert dlopen.path == '/System/Library/PrivateFrameworks/AppleFSCompression.framework/AppleFSCompression'131    assert dlopen.flags == [RtldFlag.RTLD_FIRST]132    assert dlopen.handle == 0xdfafd81133def test_timing_dlopen_preflight(traces_parser):134    events = [135        Kevent(timestamp=2375540021590,136               data=b'\x04\x00\x08\x1f\x00\x00\x00\x00]\xdb\x00\x00\x00\x00\xacp/System/Library/',137               values=(520617988, 8118864228242217821, 3417499243072017199, 3420891154821048652), tid=227191,138               debugid=117506049, eventid=117506048, func_qualifier=1),139        Kevent(timestamp=2375540021596, data=b'Frameworks/AVFoundation.framewor',140               values=(8245940720249172550, 8462059561127211883, 3345734071897646190, 8245940720249172582), tid=227191,141               debugid=117506048, eventid=117506048, func_qualifier=0),142        Kevent(timestamp=2375540021598,143               data=b'k/AVFoundation\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',144               values=(7959390264332726123, 121424789660004, 0, 0), tid=227191, debugid=117506050,145               eventid=117506048, func_qualifier=2),146        Kevent(timestamp=2375540021616,147               data=(b'\xb4\x04\x00\x00\x00\x00\x00\x80]\xdb\x00\x00\x00\x00\xacp\x00\x00\x00\x00\x00'148                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),149               values=(9223372036854777012, 8118864228242217821, 0, 0), tid=227191, debugid=520617989,150               eventid=520617988, func_qualifier=1),151        Kevent(timestamp=2375540021631,152               data=(b'\x04\x00\x08\x1f\x00\x00\x00\x00]\xdb\x00\x00\x00\x00\xacp\x00\x00\x00\x00\x00'153                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),154               values=(520617988, 8118864228242217821, 0, 0), tid=227191, debugid=117506051, eventid=117506048,155               func_qualifier=3),156        Kevent(timestamp=2375540021742,157               data=(b'\xb4\x04\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'158                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),159               values=(9223372036854777012, 1, 0, 0), tid=227191, debugid=520617990, eventid=520617988,160               func_qualifier=2),161    ]162    ret = list(traces_parser.feed_generator(events))163    preflight = ret[-1]164    assert preflight.path == '/System/Library/Frameworks/AVFoundation.framework/AVFoundation'165    assert preflight.compatible166def test_timing_dlclose(traces_parser):167    events = [168        Kevent(timestamp=2375542917792,169               data=(b'k\x07\x00\x00\x00\x00\x00\x80\x80O\x1d\x0e\x00\x00\x00\x00\x00\x00\x00\x00'170                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),171               values=(9223372036854777707, 236801920, 0, 0), tid=227240, debugid=520617993, eventid=520617992,172               func_qualifier=1),173        Kevent(timestamp=2375542919124,174               data=(b'k\x07\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'175                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),176               values=(9223372036854777707, 0, 0, 0), tid=227240, debugid=520617994,177               eventid=520617992, func_qualifier=2),178    ]179    ret = list(traces_parser.feed_generator(events))180    assert ret[0].handle == 0xe1d4f80181def test_timing_dlsym(traces_parser):182    events = [183        Kevent(timestamp=2375529754749,184               data=b'\x0c\x00\x08\x1f\x00\x00\x00\x00\xcc\xda\x00\x00\x00\x00\xacpUIApplicationDid',185               values=(520617996, 8118864228242217676, 7163375912484948309, 7235389517453685857), tid=227140,186               debugid=117506049, eventid=117506048, func_qualifier=1),187        Kevent(timestamp=2375529754752, data=b'EnterBackgroundNotification\x00\x00\x00\x00\x00',188               values=(7161077941591633477, 5648761283289442155, 8386093285481477231, 7237481), tid=227140,189               debugid=117506050, eventid=117506048, func_qualifier=2),190        Kevent(timestamp=2375529754762,191               data=(b'\xf3\x08\x00\x00\x00\x00\x00\x80\x80\xf0\xe0\r\x00\x00\x00\x00\xcc\xda\x00'192                     b'\x00\x00\x00\xacp\x00\x00\x00\x00\x00\x00\x00\x00'),193               values=(9223372036854778099, 232845440, 8118864228242217676, 0), tid=227140, debugid=520617997,194               eventid=520617996, func_qualifier=1),195        Kevent(timestamp=2375529754772,196               data=(b'\x0c\x00\x08\x1f\x00\x00\x00\x00\xcc\xda\x00\x00\x00\x00\xacp\x00\x00\x00'197                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),198               values=(520617996, 8118864228242217676, 0, 0), tid=227140, debugid=117506051, eventid=117506048,199               func_qualifier=3),200        Kevent(timestamp=2375529754963,201               data=(b'\xf3\x08\x00\x00\x00\x00\x00\x80P!\x9e\xd9\x01\x00\x00\x00\x00\x00\x00\x00'202                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),203               values=(9223372036854778099, 7945986384, 0, 0), tid=227140, debugid=520617998, eventid=520617996,204               func_qualifier=2),205    ]206    ret = list(traces_parser.feed_generator(events))207    dlsym = ret[-1]208    assert dlsym.handle == 0xde0f080209    assert dlsym.symbol == 'UIApplicationDidEnterBackgroundNotification'210    assert dlsym.address == 0x1d99e2150211def test_timing_dladdr(traces_parser):212    events = [213        Kevent(timestamp=2375525034640,214               data=(b'\x86\x04\x00\x00\x00\x00\x00\x80(}\xe9\x8d\x01\x00\x00\x00\x00\x00\x00\x00'215                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),216               values=(9223372036854776966, 6675856680, 0, 0), tid=227161, debugid=520618001, eventid=520618000,217               func_qualifier=1),218        Kevent(timestamp=2375525034950,219               data=(b'\x86\x04\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00`\xe5'220                     b'\x8d\x01\x00\x00\x00\x0c|\xe9\x8d\x01\x00\x00\x00'),221               values=(9223372036854776966, 1, 6675587072, 6675856396), tid=227161,222               debugid=520618002, eventid=520618000, func_qualifier=2),223    ]224    ret = list(traces_parser.feed_generator(events))225    assert ret[0].addr == 0x18de97d28...test_callstacks_parser.py
Source:test_callstacks_parser.py  
1from uuid import UUID2from pykdebugparser.callstacks_parser import Frame3from pykdebugparser.kevent import Kevent4def test_parsing_perf_event(traces_parser, callstacks_parser):5    events = [6        Kevent(timestamp=7006023115068,7               data=(b'\t\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'8                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),9               values=(9, 32, 0, 0), tid=1957, debugid=620756993, eventid=620756992, func_qualifier=1),10        Kevent(timestamp=7006023115085,11               data=(b'E\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'12                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),13               values=(69, 5, 0, 0), tid=1957, debugid=620888088, eventid=620888088, func_qualifier=0),14        Kevent(timestamp=7006023115105,15               data=(b'\xf0[\xc0\xb5\x01\x00\x00\x00\xd4\xe4v\x93\x01\x00\x00\x000\x99\\\x02\x01\x00'16                     b'\x00\x00<\x0b\x16\xd1\x01\x00\x00\x00'),17               values=(7344249840, 6769009876, 4334590256, 7802850108), tid=1957, debugid=620888080, eventid=620888080,18               func_qualifier=0),19        Kevent(timestamp=7006023115123,20               data=(b'\xd4\xe6v\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'21                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),22               values=(6769010388, 0, 0, 0), tid=1957, debugid=620888080, eventid=620888080, func_qualifier=0),23        Kevent(timestamp=7006023115140,24               data=(b'\x95\x00\x00\x00\x00\x00\x00\x00\xa5\x07\x00\x00\x00\x00\x00\x00\x80\xb1\x94m\x01'25                     b'\x00\x00\x00\x03\x00\xfc\xff\x00\x00\x00\x00'),26               values=(149, 1957, 6133428608, 4294705155), tid=1957, debugid=620822532, eventid=620822532,27               func_qualifier=0),28        Kevent(timestamp=7006023115153,29               data=(b'\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'30                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),31               values=(9, 0, 0, 0), tid=1957, debugid=620756994, eventid=620756992, func_qualifier=2)32    ]33    ret = list(callstacks_parser.feed_generator(traces_parser.feed_generator(events)))34    assert ret[0].timestamp == 700602311506835    assert ret[0].tid == 195736    assert ret[0].frames == [37        Frame(0x1b5c05bf0, None, None),38        Frame(0x19376e4d4, None, None),39        Frame(0x1025c9930, None, None),40        Frame(0x1d1160b3c, None, None),41        Frame(0x19376e6d4, None, None),42    ]43def test_parsing_with_images(traces_parser, callstacks_parser):44    events = [45        Kevent(timestamp=2087564153638,46               data=(b'\x19\xdd*\xd4E\xe01\x97\xa5\xc4S\xb3W\xf3a\xa0\x000u\xaa\x01'47                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),48               values=(10894735564102884633, 11556785676805719205, 0x1aa753000, 0), tid=200651, debugid=520421376,49               eventid=520421376, func_qualifier=0),50        Kevent(timestamp=7006023115068,51               data=(b'\t\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'52                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),53               values=(9, 32, 0, 0), tid=1957, debugid=620756993, eventid=620756992, func_qualifier=1),54        Kevent(timestamp=7006023115085,55               data=(b'E\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'56                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),57               values=(69, 5, 0, 0), tid=1957, debugid=620888088, eventid=620888088, func_qualifier=0),58        Kevent(timestamp=7006023115105,59               data=(b'\xf0[\xc0\xb5\x01\x00\x00\x00\xd4\xe4v\x93\x01\x00\x00\x000\x99\\\x02\x01\x00'60                     b'\x00\x00<\x0b\x16\xd1\x01\x00\x00\x00'),61               values=(7344249840, 6769009876, 4334590256, 7802850108), tid=1957, debugid=620888080, eventid=620888080,62               func_qualifier=0),63        Kevent(timestamp=7006023115123,64               data=(b'\xd4\xe6v\x93\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'65                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),66               values=(6769010388, 0, 0, 0), tid=1957, debugid=620888080, eventid=620888080, func_qualifier=0),67        Kevent(timestamp=7006023115140,68               data=(b'\x95\x00\x00\x00\x00\x00\x00\x00\xa5\x07\x00\x00\x00\x00\x00\x00\x80\xb1\x94m\x01'69                     b'\x00\x00\x00\x03\x00\xfc\xff\x00\x00\x00\x00'),70               values=(149, 1957, 6133428608, 4294705155), tid=1957, debugid=620822532, eventid=620822532,71               func_qualifier=0),72        Kevent(timestamp=7006023115153,73               data=(b'\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'74                     b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'),75               values=(9, 0, 0, 0), tid=1957, debugid=620756994, eventid=620756992, func_qualifier=2)76    ]77    ret = list(callstacks_parser.feed_generator(traces_parser.feed_generator(events)))78    assert ret[0].timestamp == 700602311506879    assert ret[0].tid == 195780    assert ret[0].frames == [81        Frame(0x1b5c05bf0, UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0'), 0xb4b2bf0),82        Frame(0x19376e4d4, None, None),83        Frame(0x1025c9930, None, None),84        Frame(0x1d1160b3c, UUID('19dd2ad4-45e0-3197-a5c4-53b357f361a0'), 0x26a0db3c),85        Frame(0x19376e6d4, None, None),...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
