How to use func_qualifier method in localstack

Best Python code snippet using localstack_python

test_mach.py

Source:test_mach.py Github

copy

Full Screen

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...

Full Screen

Full Screen

test_dyld.py

Source:test_dyld.py Github

copy

Full Screen

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...

Full Screen

Full Screen

test_callstacks_parser.py

Source:test_callstacks_parser.py Github

copy

Full Screen

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),...

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run localstack automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful