@@ -3,9 +3,9 @@ const builtin = @import("builtin");
33
44const Allocator = std .mem .Allocator ;
55
6+ const App = @import ("../app.zig" ).App ;
67const Loop = @import ("jsruntime" ).Loop ;
78const uuidv4 = @import ("../id.zig" ).uuidv4 ;
8- const RunMode = @import ("../app.zig" ).RunMode ;
99
1010const log = std .log .scoped (.telemetry );
1111const IID_FILE = "iid" ;
@@ -25,11 +25,11 @@ fn TelemetryT(comptime P: type) type {
2525
2626 disabled : bool ,
2727
28- run_mode : RunMode ,
28+ run_mode : App. RunMode ,
2929
3030 const Self = @This ();
3131
32- pub fn init (allocator : Allocator , run_mode : RunMode , app_dir_path : ? [] const u8 ) Self {
32+ pub fn init (app : * App , run_mode : App. RunMode ) Self {
3333 const disabled = std .process .hasEnvVarConstant ("LIGHTPANDA_DISABLE_TELEMETRY" );
3434 if (builtin .mode != .Debug and builtin .is_test == false ) {
3535 log .info ("telemetry {s}" , .{if (disabled ) "disabled" else "enabled" });
@@ -38,8 +38,8 @@ fn TelemetryT(comptime P: type) type {
3838 return .{
3939 .disabled = disabled ,
4040 .run_mode = run_mode ,
41- .provider = try P .init (allocator ),
42- .iid = if (disabled ) null else getOrCreateId (app_dir_path ),
41+ .provider = try P .init (app ),
42+ .iid = if (disabled ) null else getOrCreateId (app . app_dir_path ),
4343 };
4444 }
4545
@@ -104,32 +104,32 @@ pub const Event = union(enum) {
104104};
105105
106106const NoopProvider = struct {
107- fn init (_ : Allocator ) ! NoopProvider {
107+ fn init (_ : * App ) ! NoopProvider {
108108 return .{};
109109 }
110110 fn deinit (_ : NoopProvider ) void {}
111- pub fn send (_ : NoopProvider , _ : ? []const u8 , _ : RunMode , _ : Event ) ! void {}
111+ pub fn send (_ : NoopProvider , _ : ? []const u8 , _ : App. RunMode , _ : Event ) ! void {}
112112};
113113
114114extern fn setenv (name : [* :0 ]u8 , value : [* :0 ]u8 , override : c_int ) c_int ;
115115extern fn unsetenv (name : [* :0 ]u8 ) c_int ;
116116
117- const testing = std . testing ;
117+ const testing = @import ( "../ testing.zig" ) ;
118118test "telemetry: disabled by environment" {
119119 _ = setenv (@constCast ("LIGHTPANDA_DISABLE_TELEMETRY" ), @constCast ("" ), 0 );
120120 defer _ = unsetenv (@constCast ("LIGHTPANDA_DISABLE_TELEMETRY" ));
121121
122122 const FailingProvider = struct {
123- fn init (_ : Allocator ) ! @This () {
123+ fn init (_ : * App ) ! @This () {
124124 return .{};
125125 }
126126 fn deinit (_ : @This ()) void {}
127- pub fn send (_ : @This (), _ : ? []const u8 , _ : RunMode , _ : Event ) ! void {
127+ pub fn send (_ : @This (), _ : ? []const u8 , _ : App . RunMode , _ : Event ) ! void {
128128 unreachable ;
129129 }
130130 };
131131
132- var telemetry = TelemetryT (FailingProvider ).init (testing . allocator , .serve , null );
132+ var telemetry = TelemetryT (FailingProvider ).init (undefined , .serve );
133133 defer telemetry .deinit ();
134134 telemetry .record (.{ .run = {} });
135135}
@@ -141,15 +141,18 @@ test "telemetry: getOrCreateId" {
141141
142142 const id1 = getOrCreateId ("/tmp/" ).? ;
143143 const id2 = getOrCreateId ("/tmp/" ).? ;
144- try testing .expectEqualStrings (& id1 , & id2 );
144+ try testing .expectEqual (& id1 , & id2 );
145145
146146 std .fs .cwd ().deleteFile ("/tmp/" ++ IID_FILE ) catch {};
147147 const id3 = getOrCreateId ("/tmp/" ).? ;
148148 try testing .expectEqual (false , std .mem .eql (u8 , & id1 , & id3 ));
149149}
150150
151151test "telemetry: sends event to provider" {
152- var telemetry = TelemetryT (MockProvider ).init (testing .allocator , .serve , "/tmp/" );
152+ var app = testing .app (.{});
153+ defer app .deinit ();
154+
155+ var telemetry = TelemetryT (MockProvider ).init (app , .serve );
153156 defer telemetry .deinit ();
154157 const mock = & telemetry .provider ;
155158
@@ -165,28 +168,28 @@ test "telemetry: sends event to provider" {
165168
166169const MockProvider = struct {
167170 iid : ? []const u8 ,
168- run_mode : ? RunMode ,
171+ run_mode : ? App. RunMode ,
169172 allocator : Allocator ,
170173 events : std .ArrayListUnmanaged (Event ),
171174
172- fn init (allocator : Allocator ) ! @This () {
175+ fn init (app : * App ) ! @This () {
173176 return .{
174177 .iid = null ,
175178 .run_mode = null ,
176179 .events = .{},
177- .allocator = allocator ,
180+ .allocator = app . allocator ,
178181 };
179182 }
180183 fn deinit (self : * MockProvider ) void {
181184 self .events .deinit (self .allocator );
182185 }
183- pub fn send (self : * MockProvider , iid : ? []const u8 , run_mode : RunMode , events : Event ) ! void {
186+ pub fn send (self : * MockProvider , iid : ? []const u8 , run_mode : App. RunMode , events : Event ) ! void {
184187 if (self .iid == null ) {
185188 try testing .expectEqual (null , self .run_mode );
186189 self .iid = iid .? ;
187190 self .run_mode = run_mode ;
188191 } else {
189- try testing .expectEqualStrings (self .iid .? , iid .? );
192+ try testing .expectEqual (self .iid .? , iid .? );
190193 try testing .expectEqual (self .run_mode .? , run_mode );
191194 }
192195 try self .events .append (self .allocator , events );
0 commit comments