|
11 | 11 |
|
12 | 12 | events_data = get_rails_events
|
13 | 13 |
|
14 |
| - expect(events_data["event_count"]).to be > 0 |
| 14 | + expect(events_data[:event_count]).to be > 0 |
15 | 15 |
|
16 |
| - error_events = events_data["events"].select { |event| event["exception"] } |
| 16 | + error_events = events_data[:events].select { |event| event["exception"] } |
17 | 17 | expect(error_events).not_to be_empty
|
18 | 18 |
|
19 | 19 | error_event = error_events.first
|
20 | 20 | exception_values = error_event.dig("exception", "values")
|
21 | 21 | expect(exception_values).not_to be_empty
|
22 | 22 | expect(exception_values.first["type"]).to eq("ZeroDivisionError")
|
23 | 23 |
|
24 |
| - transaction_events = events_data["events"].select { |event| event["type"] == "transaction" } |
| 24 | + transaction_events = events_data[:events].select { |event| event["type"] == "transaction" } |
25 | 25 |
|
26 | 26 | expect(error_event.dig("contexts", "trace")).not_to be_nil
|
27 | 27 | error_trace_id = error_event.dig("contexts", "trace", "trace_id")
|
|
47 | 47 | end
|
48 | 48 | end
|
49 | 49 |
|
50 |
| - events_data["envelopes"].each do |envelope| |
| 50 | + events_data[:envelopes].each do |envelope| |
51 | 51 | envelope["items"].each do |item|
|
52 | 52 | if item["payload"] && item["payload"]["_meta"] && item["payload"]["_meta"]["dsc"]
|
53 | 53 | dsc = item["payload"]["_meta"]["dsc"]
|
|
59 | 59 | end
|
60 | 60 | end
|
61 | 61 | end
|
62 |
| - |
63 |
| - private |
64 |
| - |
65 |
| - def get_rails_events |
66 |
| - log_file_path = File.join(Dir.pwd, "log", "sentry_debug_events.log") |
67 |
| - |
68 |
| - return { "events" => [], "envelopes" => [], "event_count" => 0, "envelope_count" => 0 } unless File.exist?(log_file_path) |
69 |
| - |
70 |
| - events = [] |
71 |
| - File.readlines(log_file_path).each do |line| |
72 |
| - line = line.strip |
73 |
| - next if line.empty? |
74 |
| - |
75 |
| - begin |
76 |
| - events << JSON.parse(line) |
77 |
| - rescue JSON::ParserError => e |
78 |
| - puts "Failed to parse line: #{line}, error: #{e.message}" |
79 |
| - end |
80 |
| - end |
81 |
| - |
82 |
| - extracted_events = [] |
83 |
| - envelopes = [] |
84 |
| - |
85 |
| - events.each do |event_data| |
86 |
| - envelopes << { |
87 |
| - "headers" => event_data["envelope_headers"], |
88 |
| - "items" => event_data["items"] |
89 |
| - } |
90 |
| - |
91 |
| - # Extract actual events from envelope items |
92 |
| - event_data["items"].each do |item| |
93 |
| - if item["headers"]["type"] == "event" |
94 |
| - extracted_events << item["payload"] |
95 |
| - end |
96 |
| - end |
97 |
| - end |
98 |
| - |
99 |
| - { |
100 |
| - "events" => extracted_events, |
101 |
| - "envelopes" => envelopes, |
102 |
| - "event_count" => extracted_events.length, |
103 |
| - "envelope_count" => envelopes.length, |
104 |
| - "raw_events" => events |
105 |
| - } |
106 |
| - end |
107 |
| - |
108 |
| - def clear_rails_events |
109 |
| - log_file_path = File.join(Dir.pwd, "log", "sentry_debug_events.log") |
110 |
| - File.write(log_file_path, "") if File.exist?(log_file_path) |
111 |
| - end |
112 | 62 | end
|
0 commit comments