diff --git a/e2e/src/main.rs b/e2e/src/main.rs index e79e90a..119c394 100644 --- a/e2e/src/main.rs +++ b/e2e/src/main.rs @@ -11,7 +11,7 @@ use clap::Parser; use datafusion::{ arrow::{ array::{Array, AsArray, ListArray, RecordBatch}, - datatypes::{Int32Type, Int64Type}, + datatypes::{UInt32Type, UInt64Type}, }, common::{FileType, GetExt}, datasource::{file_format::parquet::ParquetFormat, listing::ListingOptions}, @@ -194,15 +194,15 @@ struct OffcpuDataFrame(Vec); impl OffcpuDataFrame { fn iter(&self) -> impl Iterator + '_ { self.0.iter().flat_map(|batch| { - let tgid = batch.column(0).as_primitive::(); - let pid = batch.column(1).as_primitive::(); - let offcpu = batch.column(2).as_primitive::(); + let tgid = batch.column(0).as_primitive::(); + let pid = batch.column(1).as_primitive::(); + let offcpu = batch.column(2).as_primitive::(); let kstacks = batch.column(3).as_any().downcast_ref::().unwrap(); multizip((tgid.iter(), pid.iter(), offcpu.iter(), kstacks.iter())).map(|(tgid, pid, offcpu, kstacks)| { OffcpuData { - tgid: tgid.unwrap_or(0) as u32, - pid: pid.unwrap_or(0) as u32, - offcpu: Duration::from_nanos(offcpu.unwrap_or(0) as u64), + tgid: tgid.unwrap_or(0), + pid: pid.unwrap_or(0), + offcpu: Duration::from_nanos(offcpu.unwrap_or(0)), kstack: kstacks, } }) diff --git a/past/proptest-regressions/tests.txt b/past/proptest-regressions/tests.txt index 6ea4b22..3375634 100644 --- a/past/proptest-regressions/tests.txt +++ b/past/proptest-regressions/tests.txt @@ -3,8 +3,5 @@ # novel cases are generated. # # It is recommended to check this file in to source control so that -# everyone who runs the test benefits from these saved cases. -cc 0d91533da03c635f23f60c1a2de7046dc03dd666fc9a46959e340879c97e6e09 # shrinks to (initial_state, transitions, seen_counter) = (RefState { row_group_size: 10, threads: [Thread { tgid: 1100, pid: 1122, comm: "comm1122" }, Thread { tgid: 1100, pid: 1178, comm: "comm1178" }, Thread { tgid: 1100, pid: 1162, comm: "comm1162" }, Thread { tgid: 1100, pid: 1195, comm: "comm1195" }, Thread { tgid: 1100, pid: 1102, comm: "comm1102" }, Thread { tgid: 1100, pid: 1111, comm: "comm1111" }, Thread { tgid: 1100, pid: 1103, comm: "comm1103" }, Thread { tgid: 1100, pid: 1104, comm: "comm1104" }, Thread { tgid: 1100, pid: 1121, comm: "comm1121" }, Thread { tgid: 1100, pid: 1158, comm: "comm1158" }, Thread { tgid: 1100, pid: 1196, comm: "comm1196" }, Thread { tgid: 1100, pid: 1110, comm: "comm1110" }, Thread { tgid: 1100, pid: 1191, comm: "comm1191" }, Thread { tgid: 1100, pid: 1125, comm: "comm1125" }, Thread { tgid: 1100, pid: 1140, comm: "comm1140" }, Thread { tgid: 1100, pid: 1155, comm: "comm1155" }, Thread { tgid: 1100, pid: 1101, comm: "comm1101" }, Thread { tgid: 1100, pid: 1150, comm: "comm1150" }, Thread { tgid: 1100, pid: 1105, comm: "comm1105" }, Thread { tgid: 1100, pid: 1179, comm: "comm1179" }, Thread { tgid: 1100, pid: 1104, comm: "comm1104" }, Thread { tgid: 1100, pid: 1166, comm: "comm1166" }, Thread { tgid: 1100, pid: 1134, comm: "comm1134" }, Thread { tgid: 1100, pid: 1118, comm: "comm1118" }, Thread { tgid: 1100, pid: 1155, comm: "comm1155" }, Thread { tgid: 1100, pid: 1138, comm: "comm1138" }, Thread { tgid: 1100, pid: 1176, comm: "comm1176" }, Thread { tgid: 1100, pid: 1159, comm: "comm1159" }, Thread { tgid: 1100, pid: 1124, comm: "comm1124" }, Thread { tgid: 1100, pid: 1172, comm: "comm1172" }, Thread { tgid: 1100, pid: 1112, comm: "comm1112" }, Thread { tgid: 1100, pid: 1123, comm: "comm1123" }, Thread { tgid: 1100, pid: 1196, comm: "comm1196" }, Thread { tgid: 1100, pid: 1129, comm: "comm1129" }, Thread { tgid: 1100, pid: 1157, comm: "comm1157" }, Thread { tgid: 1100, pid: 1103, comm: "comm1103" }, Thread { tgid: 1100, pid: 1195, comm: "comm1195" }, Thread { tgid: 1100, pid: 1136, comm: "comm1136" }, Thread { tgid: 1100, pid: 1105, comm: "comm1105" }, Thread { tgid: 1100, pid: 1144, comm: "comm1144" }, Thread { tgid: 1100, pid: 1174, comm: "comm1174" }, Thread { tgid: 1100, pid: 1101, comm: "comm1101" }], frames: HashMapFrames({2: [2, 1, 8, 2, 8, 1, 3, 1, 4, 1]}), timestamp_per_cpu: [10000], traces: [], stacks: [] }, [Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 3400, pid: 3407, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 51, 52, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] })], None) -cc 5de00cada23a5f4a1579940bfc34b865c097c4803d2234a0b445ef3b6ef3b949 # shrinks to (initial_state, transitions, seen_counter) = (RefState { row_group_size: 39, threads: [Thread { tgid: 9900, pid: 9929, comm: "comm9929" }, Thread { tgid: 9900, pid: 9966, comm: "comm9966" }, Thread { tgid: 9900, pid: 9908, comm: "comm9908" }, Thread { tgid: 9900, pid: 9927, comm: "comm9927" }, Thread { tgid: 9900, pid: 9938, comm: "comm9938" }, Thread { tgid: 9900, pid: 9966, comm: "comm9966" }, Thread { tgid: 9900, pid: 9996, comm: "comm9996" }, Thread { tgid: 9900, pid: 9918, comm: "comm9918" }, Thread { tgid: 9900, pid: 9992, comm: "comm9992" }, Thread { tgid: 9900, pid: 9950, comm: "comm9950" }, Thread { tgid: 9900, pid: 9924, comm: "comm9924" }, Thread { tgid: 9900, pid: 9999, comm: "comm9999" }, Thread { tgid: 9900, pid: 9940, comm: "comm9940" }, Thread { tgid: 9900, pid: 9981, comm: "comm9981" }, Thread { tgid: 9900, pid: 9985, comm: "comm9985" }, Thread { tgid: 9900, pid: 9983, comm: "comm9983" }, Thread { tgid: 9900, pid: 9963, comm: "comm9963" }, Thread { tgid: 9900, pid: 9903, comm: "comm9903" }, Thread { tgid: 9900, pid: 9939, comm: "comm9939" }, Thread { tgid: 9900, pid: 9993, comm: "comm9993" }, Thread { tgid: 9900, pid: 9982, comm: "comm9982" }, Thread { tgid: 9900, pid: 9909, comm: "comm9909" }, Thread { tgid: 9900, pid: 9922, comm: "comm9922" }, Thread { tgid: 9900, pid: 9921, comm: "comm9921" }, Thread { tgid: 9900, pid: 9914, comm: "comm9914" }], frames: HashMapFrames({4: [3, 6, 5, 4, 8]}), timestamp_per_cpu: [10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000], traces: [], stacks: [] }, [Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10903, tgid: 9900, pid: 9909, cpu_id: 0, ustack: 2, kstack: 6, comm: [99, 111, 109, 109, 57, 57, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 11535, tgid: 9900, pid: 9966, cpu_id: 0, ustack: 4, kstack: 2, comm: [99, 111, 109, 109, 57, 57, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10138, tgid: 9900, pid: 9927, cpu_id: 8, ustack: 7, kstack: 8, comm: [99, 111, 109, 109, 57, 57, 50, 55, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10075, tgid: 9900, pid: 9996, cpu_id: 7, ustack: 9, kstack: 5, comm: [99, 111, 109, 109, 57, 57, 57, 54, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10336, tgid: 9900, pid: 9982, cpu_id: 6, ustack: -1, kstack: 9, comm: [99, 111, 109, 109, 57, 57, 56, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10068, tgid: 9900, pid: 9914, cpu_id: 4, ustack: 1, kstack: 4, comm: [99, 111, 109, 109, 57, 57, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10309, tgid: 9900, pid: 9981, cpu_id: 1, ustack: 4, kstack: 1, comm: [99, 111, 109, 109, 57, 57, 56, 49, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10309, end: 10710, tgid: 9900, pid: 9938, cpu_id: 1, ustack: 0, kstack: 10, comm: [99, 111, 109, 109, 57, 57, 51, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10418, tgid: 9900, pid: 9966, cpu_id: 5, ustack: -1, kstack: 13, comm: [99, 111, 109, 109, 57, 57, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10406, tgid: 9900, pid: 9993, cpu_id: 3, ustack: 8, kstack: -1, comm: [99, 111, 109, 109, 57, 57, 57, 51, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10606, tgid: 9900, pid: 9966, cpu_id: 5, ustack: 7, kstack: 5, comm: [99, 111, 109, 109, 57, 57, 54, 54, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] })], None) -cc 4b8ee19c1113bc3bd33c2a30a2a8deff388f7795a4877a84c275d3d59486506b # shrinks to (initial_state, transitions, seen_counter) = (RefState { row_group_size: 25, threads: [Thread { tgid: 8900, pid: 8908, comm: "comm8908" }, Thread { tgid: 8900, pid: 8910, comm: "comm8910" }, Thread { tgid: 8900, pid: 8957, comm: "comm8957" }, Thread { tgid: 8900, pid: 8911, comm: "comm8911" }, Thread { tgid: 8900, pid: 8952, comm: "comm8952" }, Thread { tgid: 8900, pid: 8956, comm: "comm8956" }, Thread { tgid: 8900, pid: 8973, comm: "comm8973" }, Thread { tgid: 8900, pid: 8974, comm: "comm8974" }, Thread { tgid: 8900, pid: 8969, comm: "comm8969" }, Thread { tgid: 8900, pid: 8983, comm: "comm8983" }, Thread { tgid: 8900, pid: 8990, comm: "comm8990" }, Thread { tgid: 8900, pid: 8954, comm: "comm8954" }, Thread { tgid: 8900, pid: 8945, comm: "comm8945" }, Thread { tgid: 8900, pid: 8976, comm: "comm8976" }, Thread { tgid: 8900, pid: 8947, comm: "comm8947" }, Thread { tgid: 8900, pid: 8987, comm: "comm8987" }, Thread { tgid: 8900, pid: 8943, comm: "comm8943" }, Thread { tgid: 8900, pid: 8900, comm: "comm8900" }, Thread { tgid: 8900, pid: 8942, comm: "comm8942" }, Thread { tgid: 8900, pid: 8999, comm: "comm8999" }, Thread { tgid: 8900, pid: 8904, comm: "comm8904" }, Thread { tgid: 8900, pid: 8948, comm: "comm8948" }, Thread { tgid: 8900, pid: 8908, comm: "comm8908" }, Thread { tgid: 8900, pid: 8921, comm: "comm8921" }, Thread { tgid: 8900, pid: 8973, comm: "comm8973" }, Thread { tgid: 8900, pid: 8984, comm: "comm8984" }, Thread { tgid: 8900, pid: 8963, comm: "comm8963" }, Thread { tgid: 8900, pid: 8992, comm: "comm8992" }, Thread { tgid: 8900, pid: 8923, comm: "comm8923" }, Thread { tgid: 8900, pid: 8921, comm: "comm8921" }, Thread { tgid: 8900, pid: 8999, comm: "comm8999" }, Thread { tgid: 8900, pid: 8963, comm: "comm8963" }, Thread { tgid: 8900, pid: 8999, comm: "comm8999" }, Thread { tgid: 8900, pid: 8940, comm: "comm8940" }, Thread { tgid: 8900, pid: 8913, comm: "comm8913" }, Thread { tgid: 8900, pid: 8941, comm: "comm8941" }, Thread { tgid: 8900, pid: 8950, comm: "comm8950" }, Thread { tgid: 8900, pid: 8933, comm: "comm8933" }, Thread { tgid: 8900, pid: 8987, comm: "comm8987" }, Thread { tgid: 8900, pid: 8931, comm: "comm8931" }, Thread { tgid: 8900, pid: 8922, comm: "comm8922" }, Thread { tgid: 8900, pid: 8917, comm: "comm8917" }, Thread { tgid: 8900, pid: 8901, comm: "comm8901" }, Thread { tgid: 8900, pid: 8950, comm: "comm8950" }], frames: HashMapFrames({8: [8, 7, 6, 8, 4]}), symbolizer: TestSymbolizer { symbols: {3: "exnoinline::my_function3", 1: "exnoinline::my_function1", 2: "exnoinline::my_function2", 4: "exnoinline::my_function4"} }, timestamp_per_cpu: [10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000], traces: [], stacks: [] }, [Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10907, end: 10910, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10907, end: 10910, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 11522, end: 11525, tgid: 8900, pid: 8908, cpu_id: 0, ustack: 8, kstack: 8, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10926, tgid: 8900, pid: 8908, cpu_id: 8, ustack: 12, kstack: 2, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 12946, tgid: 8900, pid: 8911, cpu_id: 0, ustack: -1, kstack: 2, comm: [99, 111, 109, 109, 56, 57, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10552, tgid: 8900, pid: 8908, cpu_id: 7, ustack: 11, kstack: 10, comm: [99, 111, 109, 109, 56, 57, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10620, tgid: 8900, pid: 8950, cpu_id: 4, ustack: 8, kstack: 3, comm: [99, 111, 109, 109, 56, 57, 53, 48, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10751, tgid: 8900, pid: 8923, cpu_id: 4, ustack: 14, kstack: 2, comm: [99, 111, 109, 109, 56, 57, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 11185, tgid: 8900, pid: 8987, cpu_id: 8, ustack: 3, kstack: 14, comm: [99, 111, 109, 109, 56, 57, 56, 55, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 11074, tgid: 8900, pid: 8963, cpu_id: 7, ustack: 8, kstack: 11, comm: [99, 111, 109, 109, 56, 57, 54, 51, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10328, tgid: 8900, pid: 8999, cpu_id: 5, ustack: 3, kstack: 2, comm: [99, 111, 109, 109, 56, 57, 57, 57, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10666, end: 11664, tgid: 8900, pid: 8940, cpu_id: 2, ustack: 6, kstack: 12, comm: [99, 111, 109, 109, 56, 57, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10882, tgid: 8900, pid: 8952, cpu_id: 12, ustack: 12, kstack: 9, comm: [99, 111, 109, 109, 56, 57, 53, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10022, end: 10597, tgid: 8900, pid: 8973, cpu_id: 3, ustack: 13, kstack: 6, comm: [99, 111, 109, 109, 56, 57, 55, 51, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10882, end: 11135, tgid: 8900, pid: 8948, cpu_id: 12, ustack: 13, kstack: 2, comm: [99, 111, 109, 109, 56, 57, 52, 56, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10426, end: 11234, tgid: 8900, pid: 8983, cpu_id: 11, ustack: 5, kstack: 3, comm: [99, 111, 109, 109, 56, 57, 56, 51, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] })], None) -cc 36d4ab13ab46996b9e861f2ebb869c4fe7d34723fb497a234f541c27554d71ba # shrinks to (initial_state, transitions, seen_counter) = (RefState { row_group_size: 16, threads: [Thread { tgid: 8000, pid: 8042, comm: "comm8042" }, Thread { tgid: 8000, pid: 8010, comm: "comm8010" }, Thread { tgid: 8000, pid: 8062, comm: "comm8062" }, Thread { tgid: 8000, pid: 8080, comm: "comm8080" }, Thread { tgid: 8000, pid: 8062, comm: "comm8062" }, Thread { tgid: 8000, pid: 8040, comm: "comm8040" }, Thread { tgid: 8000, pid: 8091, comm: "comm8091" }, Thread { tgid: 8000, pid: 8062, comm: "comm8062" }, Thread { tgid: 8000, pid: 8083, comm: "comm8083" }, Thread { tgid: 8000, pid: 8077, comm: "comm8077" }], frames: HashMapFrames({1: [8, 8, 1, 2, 9, 2, 4, 3, 4, 2, 1, 1]}), symbolizer: TestSymbolizer { symbols: {1: "exnoinline::my_function1", 4: "exnoinline::my_function4", 2: "exnoinline::my_function2", 3: "exnoinline::my_function3"} }, timestamp_per_cpu: [10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000], traces: [], stacks: [], persisted_traces: [], persisted_stacks: [] }, [Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10742, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10444, tgid: 8000, pid: 8042, cpu_id: 3, ustack: 1, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10741, end: 10744, tgid: 8000, pid: 8042, cpu_id: 0, ustack: 0, kstack: 0, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10810, end: 10837, tgid: 8000, pid: 8080, cpu_id: 0, ustack: 8, kstack: 2, comm: [99, 111, 109, 109, 56, 48, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0], __pad_60: [0, 0, 0, 0] }), Perf(perf_cpu_event { type: 1, __pad_1: [0, 0, 0, 0, 0, 0, 0], timestamp: 10443, tgid: 8000, pid: 8042, cpu_id: 2, ustack: 7, kstack: 14, comm: [99, 111, 109, 109, 56, 48, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0], __pad_52: [0, 0, 0, 0] })], None) +# everyone who runs the test benefits from these saved cases.cc 8ea6b556cf1b51c0410a06a8f3740cfa327821660b8cda54e9c7759e0b68bed4 # shrinks to (initial_state, transitions, seen_counter) = (RefState { rows_in_file: 0, row_group_size: 10, threads: [Thread { tgid: 1000, pid: 1000, comm: "comm1000" }], frames: HashMapFrames({1: []}), symbolizer: TestSymbolizer { symbols: {1: "exnoinline::my_function1", 2: "exnoinline::my_function2", 3: "exnoinline::my_function3", 4: "exnoinline::my_function4"} }, timestamp_per_cpu: [10000], traces: [], stacks: [], persisted_traces: [], persisted_stacks: [] }, [Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 1000, pid: 1046, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] })], None) +cc 8ea6b556cf1b51c0410a06a8f3740cfa327821660b8cda54e9c7759e0b68bed4cc 34478006b81034f89054ec73e4241e047f09780b48e0ba3c79f76f3444101aa1 # shrinks to (initial_state, transitions, seen_counter) = (RefState { rows_in_file: 0, row_group_size: 13, threads: [Thread { tgid: 4100, pid: 4183, comm: "comm4183" }, Thread { tgid: 4100, pid: 4110, comm: "comm4110" }, Thread { tgid: 4100, pid: 4158, comm: "comm4158" }, Thread { tgid: 4100, pid: 4150, comm: "comm4150" }, Thread { tgid: 4100, pid: 4120, comm: "comm4120" }, Thread { tgid: 4100, pid: 4173, comm: "comm4173" }, Thread { tgid: 4100, pid: 4156, comm: "comm4156" }, Thread { tgid: 4100, pid: 4126, comm: "comm4126" }, Thread { tgid: 4100, pid: 4105, comm: "comm4105" }, Thread { tgid: 4100, pid: 4148, comm: "comm4148" }, Thread { tgid: 4100, pid: 4194, comm: "comm4194" }, Thread { tgid: 4100, pid: 4161, comm: "comm4161" }, Thread { tgid: 4100, pid: 4193, comm: "comm4193" }, Thread { tgid: 4100, pid: 4138, comm: "comm4138" }], frames: HashMapFrames({7: [3, 2, 9, 3, 2, 2]}), symbolizer: TestSymbolizer { symbols: {3: "exnoinline::my_function3", 1: "exnoinline::my_function1", 2: "exnoinline::my_function2", 4: "exnoinline::my_function4"} }, timestamp_per_cpu: [10000, 10000, 10000, 10000, 10000, 10000, 10000], traces: [], stacks: [], persisted_traces: [], persisted_stacks: [] }, [Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10000, end: 10003, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10054, end: 10057, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10054, end: 10057, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10054, end: 10057, tgid: 4100, pid: 4183, cpu_id: 0, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 12267, end: 12270, tgid: 4100, pid: 4183, cpu_id: 1, ustack: 0, kstack: 0, __pad_44: [0, 0, 0, 0] }), Switch(switch_event { type: 0, __pad_1: [0, 0, 0, 0, 0, 0, 0], start: 10076, end: 10100, tgid: 4100, pid: 4120, cpu_id: 5, ustack: 3, kstack: 4, __pad_44: [0, 0, 0, 0] })], None) diff --git a/past/src/bpf/past.skel.rs b/past/src/bpf/past.skel.rs index 6cc2155..6c0e9dd 100644 --- a/past/src/bpf/past.skel.rs +++ b/past/src/bpf/past.skel.rs @@ -2297,7 +2297,7 @@ mod imp { 110, 97, 108, 95, 115, 116, 114, 117, 99, 116, 0, 116, 97, 115, 107, 95, 100, 101, 108, 97, 121, 95, 105, 110, 102, 111, 0, 116, 97, 115, 107, 95, 103, 114, 111, 117, 112, 0, 116, 114, 97, 99, 101, 95, 101, 118, 101, 110, 116, 95, 99, 97, 108, 108, 0, 117, 112, 114, 111, 98, 101, 95, 116, 97, 115, 107, 0, 118, 109, 95, 115, 116, - 114, 117, 99, 116, 0, 47, 116, 109, 112, 47, 46, 116, 109, 112, 101, 68, 107, 103, 76, 71, 47, 98, 112, 102, + 114, 117, 99, 116, 0, 47, 116, 109, 112, 47, 46, 116, 109, 112, 115, 116, 89, 77, 104, 82, 47, 98, 112, 102, 47, 115, 114, 99, 47, 98, 112, 102, 47, 117, 115, 100, 116, 46, 98, 112, 102, 46, 104, 0, 9, 105, 102, 32, 40, 33, 76, 73, 78, 85, 88, 95, 72, 65, 83, 95, 66, 80, 70, 95, 67, 79, 79, 75, 73, 69, 41, 32, 123, 0, 9, 9, 108, 111, 110, 103, 32, 105, 112, 32, 61, 32, 80, 84, 95, 82, 69, 71, 83, 95, 73, 80, 40, 99, 116, 120, 41, 59, 0, diff --git a/past/src/collector.rs b/past/src/collector.rs index 6ceafe1..ca735ff 100644 --- a/past/src/collector.rs +++ b/past/src/collector.rs @@ -89,6 +89,7 @@ impl Collector { // all integers are cast to a signed form because of the API provided by rust parquet lib // arithmetic operations will be correctly performed on unsigned integers, configured in schema // TODO maybe i should move cast closer to the schema definition + match event { Received::Switch(event) => { let command = match self.tgid_to_command.get(&event.tgid) { @@ -102,7 +103,7 @@ impl Collector { duration: (event.end - event.start) as i64, cpu: event.cpu_id as i32, tgid: event.tgid as i32, - pid: event.tgid as i32, + pid: event.pid as i32, command: command.clone(), ustack: event.ustack, kstack: event.kstack, diff --git a/past/src/program.rs b/past/src/program.rs index 7cbb9e1..e8c02ff 100644 --- a/past/src/program.rs +++ b/past/src/program.rs @@ -65,8 +65,15 @@ impl Program { } pub fn on_event(&mut self, event: Received) -> Result<()> { - self.stats.total_rows += 1; - self.stats.rows_in_current_file += 1; + // TODO i need to adjust stats based on response from on_event + // this is hotfix for ci + match event { + Received::TraceEnter(_) | Received::ProcessExec(_) | Received::ProcessExit(_) | Received::Unknown(_) => {} + Received::Switch(_) | Received::TraceExit(_) | Received::PerfStack(_) | Received::TraceClose(_) => { + self.stats.total_rows += 1; + self.stats.rows_in_current_file += 1; + } + } on_event( self.writer.as_mut().expect("writer should be present"), &self.frames, diff --git a/past/src/tests.rs b/past/src/tests.rs index bcb4d17..29417b8 100644 --- a/past/src/tests.rs +++ b/past/src/tests.rs @@ -5,7 +5,7 @@ use blazesym::symbolize::{Reason, Sym, Symbolized}; use datafusion::{ arrow::{ array::{AsArray, ListArray, RecordBatch}, - datatypes::{Int32Type, Int64Type}, + datatypes::{UInt16Type, UInt32Type, UInt64Type}, }, common::{FileType, GetExt}, datasource::{file_format::parquet::ParquetFormat, listing::ListingOptions}, @@ -471,10 +471,10 @@ struct StoredPerf { impl Batch { fn iter_perf(&self) -> impl Iterator + '_ { self.0.iter().flat_map(|batch| { - let timestamp = batch.column(0).as_primitive::(); - let cpu = batch.column(1).as_primitive::(); - let tgid = batch.column(2).as_primitive::(); - let pid = batch.column(3).as_primitive::(); + let timestamp = batch.column(0).as_primitive::(); + let cpu = batch.column(1).as_primitive::(); + let tgid = batch.column(2).as_primitive::(); + let pid = batch.column(3).as_primitive::(); let command = batch.column(4).as_string::(); let ustack = batch.column(5); @@ -492,7 +492,7 @@ impl Batch { kstack_array.iter(), )) .map(|(timestamp, cpu, tgid, pid, command, ustack, kstack)| StoredPerf { - timestamp: *timestamp as u64, + timestamp: *timestamp, cpu: *cpu as u64, tgid: *tgid as u64, pid: *pid as u64, @@ -528,11 +528,11 @@ impl Batch { fn iter_switch(&self) -> impl Iterator + '_ { self.0.iter().flat_map(|batch| { - let timestamp = batch.column(0).as_primitive::(); - let duration = batch.column(1).as_primitive::(); - let cpu = batch.column(2).as_primitive::(); - let tgid = batch.column(3).as_primitive::(); - let pid = batch.column(4).as_primitive::(); + let timestamp = batch.column(0).as_primitive::(); + let duration = batch.column(1).as_primitive::(); + let cpu = batch.column(2).as_primitive::(); + let tgid = batch.column(3).as_primitive::(); + let pid = batch.column(4).as_primitive::(); let command = batch.column(5).as_string::(); let ustack = batch.column(6); @@ -553,8 +553,8 @@ impl Batch { )) .map( |(timestamp, duration, cpu, tgid, pid, command, ustack, kstack)| StoredSwitch { - timestamp: *timestamp as u64, - duration: *duration as u64, + timestamp: *timestamp, + duration: *duration, cpu: *cpu as u64, tgid: *tgid as u64, pid: *pid as u64, diff --git a/past/src/util.rs b/past/src/util.rs index f125f33..aa93945 100644 --- a/past/src/util.rs +++ b/past/src/util.rs @@ -56,12 +56,12 @@ impl Deref for Comm { } #[derive(Debug)] -pub(crate) struct Proc{ +pub(crate) struct Proc { pub(crate) tgid: i32, - pub(crate) comm: Comm, + pub(crate) comm: Comm, } -pub fn scan_proc(comms: HashSet<&str>,) -> anyhow::Result> { +pub fn scan_proc(comms: HashSet<&str>) -> anyhow::Result> { let mut rst = vec![]; for entry in fs::read_dir("/proc")? { let entry = entry?; @@ -74,10 +74,10 @@ pub fn scan_proc(comms: HashSet<&str>,) -> anyhow::Result> { if let Ok(tgid) = name.parse::() { let comm = fs::read_to_string(path.join("comm"))?; if comms.contains(comm.trim()) { - rst.push(Proc{ + rst.push(Proc { tgid: tgid as i32, comm: Comm::from(&comm), - }); + }); debug!("discovered tgid = {} for command = {}", tgid, comm); } } diff --git a/pastconv/src/main.rs b/pastconv/src/main.rs index 3e270b9..b59dbbb 100644 --- a/pastconv/src/main.rs +++ b/pastconv/src/main.rs @@ -15,7 +15,7 @@ struct Opt { cmd: Command, #[clap(short, long, global = true, default_value = "/tmp/past/STACKS-*.parquet")] register: String, - #[clap(short, long, global = true, help="print version and exit")] + #[clap(short, long, global = true, help = "print version and exit")] version: bool, }