From 678907193255b5932fe6f70e8592eee42d5bf514 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 01:16:04 +0530 Subject: [PATCH 01/13] implement ping-gofr-server --- pkg/gofr/gofr.go | 24 ++++++++++++++++++++++++ pkg/gofr/gofr_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 20d7867db..2dc3f2d17 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -42,6 +42,9 @@ const ( gofrTraceExporter = "gofr" gofrTracerURL = "https://tracer.gofr.dev" checkPortTimeout = 2 * time.Second + gofrHost = "https://gofr.dev" + startServerPing = "/api/ping/up" + shutServerPing = "/api/ping/down" ) // App is the main application in the GoFr framework. @@ -173,9 +176,14 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() + pingGoFr(http.DefaultClient, "shutdown") + _ = a.Shutdown(shutdownCtx) + }() + pingGoFr(http.DefaultClient, "start") + wg := sync.WaitGroup{} // Start Metrics Server @@ -222,6 +230,22 @@ func (a *App) Run() { }() wg.Wait() + +} + +func pingGoFr(client *http.Client, s string) { + url := fmt.Sprint(gofrHost, shutServerPing) + + if s == "start" { + url = fmt.Sprint(gofrHost, startServerPing) + } + + resp, err := client.Get(url) + if err != nil { + return + } + + defer resp.Body.Close() } // Shutdown stops the service(s) and close the application. diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index 541e1e020..c8f532cba 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -71,6 +71,44 @@ func TestGoFr_isPortAvailable(t *testing.T) { } } +// mockRoundTripper is a mock implementation of http.RoundTripper +type mockRoundTripper struct { + mockResponse *http.Response + mockError error +} + +// RoundTrip mocks the HTTP request and returns the predefined response or error. +func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + return m.mockResponse, m.mockError +} + +func TestPingGoFr(t *testing.T) { + tests := []struct { + name string + input string + mockStatus int + }{ + {"Ping Start Server", "start", http.StatusOK}, + {"Ping Shut Server", "stop", http.StatusOK}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mockClient := &http.Client{ + Transport: &mockRoundTripper{ + mockResponse: &http.Response{ + StatusCode: tt.mockStatus, + Body: http.NoBody, + }, + mockError: nil, + }, + } + + pingGoFr(mockClient, tt.input) + }) + } +} + func TestGofr_ServerRoutes(t *testing.T) { _ = testutil.NewServerConfigs(t) From f666c204660da1ec8212aa1261f7642aa796e264 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 01:25:17 +0530 Subject: [PATCH 02/13] enhancing tests --- pkg/gofr/gofr_test.go | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index c8f532cba..8d72cad2f 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -73,38 +73,46 @@ func TestGoFr_isPortAvailable(t *testing.T) { // mockRoundTripper is a mock implementation of http.RoundTripper type mockRoundTripper struct { + lastRequest *http.Request // Store the last request for assertions mockResponse *http.Response mockError error } -// RoundTrip mocks the HTTP request and returns the predefined response or error. +// RoundTrip mocks the HTTP request and stores the request for verification. func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + m.lastRequest = req // Store the request for assertions return m.mockResponse, m.mockError } func TestPingGoFr(t *testing.T) { tests := []struct { - name string - input string - mockStatus int + name string + input string + expectedURL string + expectedMethod string + mockStatus int }{ - {"Ping Start Server", "start", http.StatusOK}, - {"Ping Shut Server", "stop", http.StatusOK}, + {"Ping Start Server", "start", gofrHost + startServerPing, http.MethodGet, http.StatusOK}, + {"Ping Shut Server", "stop", gofrHost + shutServerPing, http.MethodGet, http.StatusOK}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - mockClient := &http.Client{ - Transport: &mockRoundTripper{ - mockResponse: &http.Response{ - StatusCode: tt.mockStatus, - Body: http.NoBody, - }, - mockError: nil, + mockTransport := &mockRoundTripper{ + mockResponse: &http.Response{ + StatusCode: tt.mockStatus, + Body: http.NoBody, }, + mockError: nil, } + mockClient := &http.Client{Transport: mockTransport} + pingGoFr(mockClient, tt.input) + + assert.NotNil(t, mockTransport.lastRequest, "Request should not be nil") + assert.Equal(t, tt.expectedURL, mockTransport.lastRequest.URL.String(), "Unexpected request URL") + assert.Equal(t, tt.expectedMethod, mockTransport.lastRequest.Method, "Unexpected HTTP method") }) } } From 3053bf02eb884b39a15df18dd521c3de5538b109 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 01:33:27 +0530 Subject: [PATCH 03/13] fixing linters" --- pkg/gofr/gofr.go | 15 +++++++++++---- pkg/gofr/gofr_test.go | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 2dc3f2d17..58df7d41a 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -45,6 +45,7 @@ const ( gofrHost = "https://gofr.dev" startServerPing = "/api/ping/up" shutServerPing = "/api/ping/down" + pingTimeout = 5 * time.Second ) // App is the main application in the GoFr framework. @@ -179,7 +180,6 @@ func (a *App) Run() { pingGoFr(http.DefaultClient, "shutdown") _ = a.Shutdown(shutdownCtx) - }() pingGoFr(http.DefaultClient, "start") @@ -230,7 +230,6 @@ func (a *App) Run() { }() wg.Wait() - } func pingGoFr(client *http.Client, s string) { @@ -240,12 +239,20 @@ func pingGoFr(client *http.Client, s string) { url = fmt.Sprint(gofrHost, startServerPing) } - resp, err := client.Get(url) + ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) + defer cancel() + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, http.NoBody) + if err != nil { + return + } + + resp, err := client.Do(req) if err != nil { return } - defer resp.Body.Close() + resp.Body.Close() } // Shutdown stops the service(s) and close the application. diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index 8d72cad2f..0d2ea4a94 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -71,7 +71,7 @@ func TestGoFr_isPortAvailable(t *testing.T) { } } -// mockRoundTripper is a mock implementation of http.RoundTripper +// mockRoundTripper is a mock implementation of http.RoundTripper. type mockRoundTripper struct { lastRequest *http.Request // Store the last request for assertions mockResponse *http.Response From 285dcb5819dd89980015c6a9004a5ca4c393cea0 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 10:53:12 +0530 Subject: [PATCH 04/13] adde configs to diasable pings --- pkg/gofr/gofr.go | 11 ++++++++--- pkg/gofr/gofr_test.go | 8 ++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 58df7d41a..8101333ed 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -177,12 +177,16 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() - pingGoFr(http.DefaultClient, "shutdown") + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == "true" { + a.pingGoFr(http.DefaultClient, "shutdown") + } _ = a.Shutdown(shutdownCtx) }() - pingGoFr(http.DefaultClient, "start") + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == "true" { + a.pingGoFr(http.DefaultClient, "start") + } wg := sync.WaitGroup{} @@ -232,11 +236,12 @@ func (a *App) Run() { wg.Wait() } -func pingGoFr(client *http.Client, s string) { +func (a *App) pingGoFr(client *http.Client, s string) { url := fmt.Sprint(gofrHost, shutServerPing) if s == "start" { url = fmt.Sprint(gofrHost, startServerPing) + a.container.Info("GoFr tracks server count via telemetry. Use GOFR_TELEMETRY to disable it.") } ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index 0d2ea4a94..de2cfb980 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -62,7 +62,7 @@ func TestGoFr_isPortAvailable(t *testing.T) { g := New() go g.Run() - time.Sleep(100 * time.Millisecond) + time.Sleep(1000 * time.Millisecond) } isAvailable := isPortAvailable(configs.HTTPPort) @@ -108,7 +108,11 @@ func TestPingGoFr(t *testing.T) { mockClient := &http.Client{Transport: mockTransport} - pingGoFr(mockClient, tt.input) + _ = testutil.NewServerConfigs(t) + + a := New() + + a.pingGoFr(mockClient, tt.input) assert.NotNil(t, mockTransport.lastRequest, "Request should not be nil") assert.Equal(t, tt.expectedURL, mockTransport.lastRequest.URL.String(), "Unexpected request URL") From 0ea6cb1563eff8ea35a825e49922d7b23b0b3017 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 11:02:11 +0530 Subject: [PATCH 05/13] fixing linters --- pkg/gofr/gofr.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 8101333ed..908a01446 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -46,6 +46,7 @@ const ( startServerPing = "/api/ping/up" shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second + TelemetryTrue = "true" ) // App is the main application in the GoFr framework. @@ -177,14 +178,14 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == "true" { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == TelemetryTrue { a.pingGoFr(http.DefaultClient, "shutdown") } _ = a.Shutdown(shutdownCtx) }() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == "true" { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == TelemetryTrue { a.pingGoFr(http.DefaultClient, "start") } @@ -241,6 +242,7 @@ func (a *App) pingGoFr(client *http.Client, s string) { if s == "start" { url = fmt.Sprint(gofrHost, startServerPing) + a.container.Info("GoFr tracks server count via telemetry. Use GOFR_TELEMETRY to disable it.") } From 2d28593f1d8775a9d68c66fa490eec369190167e Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 11:29:05 +0530 Subject: [PATCH 06/13] fixing tests --- examples/grpc/grpc-server/main_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/grpc/grpc-server/main_test.go b/examples/grpc/grpc-server/main_test.go index 85fccdf1e..b715656f5 100644 --- a/examples/grpc/grpc-server/main_test.go +++ b/examples/grpc/grpc-server/main_test.go @@ -19,7 +19,7 @@ func TestGRPCServer(t *testing.T) { host := configs.GRPCHost go main() - time.Sleep(100 * time.Millisecond) + time.Sleep(1000 * time.Millisecond) client, conn := createGRPCClient(t, host) defer conn.Close() From f7331906878544f2bd15a128d840c65cb637c5a4 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 16:13:15 +0530 Subject: [PATCH 07/13] resolved review changes --- examples/grpc/grpc-server/main_test.go | 2 +- pkg/gofr/gofr.go | 8 ++++---- pkg/gofr/gofr_test.go | 18 ++++++++---------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/examples/grpc/grpc-server/main_test.go b/examples/grpc/grpc-server/main_test.go index b715656f5..85fccdf1e 100644 --- a/examples/grpc/grpc-server/main_test.go +++ b/examples/grpc/grpc-server/main_test.go @@ -19,7 +19,7 @@ func TestGRPCServer(t *testing.T) { host := configs.GRPCHost go main() - time.Sleep(1000 * time.Millisecond) + time.Sleep(100 * time.Millisecond) client, conn := createGRPCClient(t, host) defer conn.Close() diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 908a01446..91168adfa 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -46,7 +46,7 @@ const ( startServerPing = "/api/ping/up" shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second - TelemetryTrue = "true" + DefaultTelemetry = "true" ) // App is the main application in the GoFr framework. @@ -178,14 +178,14 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == TelemetryTrue { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == DefaultTelemetry { a.pingGoFr(http.DefaultClient, "shutdown") } _ = a.Shutdown(shutdownCtx) }() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == TelemetryTrue { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == DefaultTelemetry { a.pingGoFr(http.DefaultClient, "start") } @@ -249,7 +249,7 @@ func (a *App) pingGoFr(client *http.Client, s string) { ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) defer cancel() - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, http.NoBody) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, http.NoBody) if err != nil { return } diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index de2cfb980..a6d5e826e 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -62,7 +62,7 @@ func TestGoFr_isPortAvailable(t *testing.T) { g := New() go g.Run() - time.Sleep(1000 * time.Millisecond) + time.Sleep(100 * time.Millisecond) } isAvailable := isPortAvailable(configs.HTTPPort) @@ -86,21 +86,19 @@ func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) func TestPingGoFr(t *testing.T) { tests := []struct { - name string - input string - expectedURL string - expectedMethod string - mockStatus int + name string + input string + expectedURL string }{ - {"Ping Start Server", "start", gofrHost + startServerPing, http.MethodGet, http.StatusOK}, - {"Ping Shut Server", "stop", gofrHost + shutServerPing, http.MethodGet, http.StatusOK}, + {"Ping Start Server", "start", gofrHost + startServerPing}, + {"Ping Shut Server", "stop", gofrHost + shutServerPing}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockTransport := &mockRoundTripper{ mockResponse: &http.Response{ - StatusCode: tt.mockStatus, + StatusCode: http.StatusOK, Body: http.NoBody, }, mockError: nil, @@ -116,7 +114,7 @@ func TestPingGoFr(t *testing.T) { assert.NotNil(t, mockTransport.lastRequest, "Request should not be nil") assert.Equal(t, tt.expectedURL, mockTransport.lastRequest.URL.String(), "Unexpected request URL") - assert.Equal(t, tt.expectedMethod, mockTransport.lastRequest.Method, "Unexpected HTTP method") + assert.Equal(t, http.MethodPost, mockTransport.lastRequest.Method, "Unexpected HTTP method") }) } } From 28e6c91adef8f0aa036b33acbc4cdb1653d498c0 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 11 Feb 2025 16:16:04 +0530 Subject: [PATCH 08/13] minor fix --- pkg/gofr/gofr.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 91168adfa..0f4cb35a3 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -46,7 +46,7 @@ const ( startServerPing = "/api/ping/up" shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second - DefaultTelemetry = "true" + defaultTelemetry = "true" ) // App is the main application in the GoFr framework. @@ -178,14 +178,14 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == DefaultTelemetry { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry { a.pingGoFr(http.DefaultClient, "shutdown") } _ = a.Shutdown(shutdownCtx) }() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == DefaultTelemetry { + if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry { a.pingGoFr(http.DefaultClient, "start") } From a7f316fe364597bedbf953915da700747165b3cc Mon Sep 17 00:00:00 2001 From: Divya Date: Wed, 12 Feb 2025 13:52:12 +0530 Subject: [PATCH 09/13] making ping in a go routine --- pkg/gofr/gofr.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 0f4cb35a3..ba495657b 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -186,7 +186,7 @@ func (a *App) Run() { }() if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry { - a.pingGoFr(http.DefaultClient, "start") + go a.pingGoFr(http.DefaultClient, "start") } wg := sync.WaitGroup{} @@ -243,7 +243,7 @@ func (a *App) pingGoFr(client *http.Client, s string) { if s == "start" { url = fmt.Sprint(gofrHost, startServerPing) - a.container.Info("GoFr tracks server count via telemetry. Use GOFR_TELEMETRY to disable it.") + a.container.Info("GoFr tracks running servers via telemetry. Set GOFR_TELEMETRY=false in configs to disable it.") } ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) @@ -254,6 +254,8 @@ func (a *App) pingGoFr(client *http.Client, s string) { return } + req.Header.Set("Connection", "close") + resp, err := client.Do(req) if err != nil { return From 1037f32ec3caa2c12c23d5b4c5a08bb82d14589e Mon Sep 17 00:00:00 2001 From: Divya Date: Wed, 12 Feb 2025 16:35:01 +0530 Subject: [PATCH 10/13] resolved review suggestions --- pkg/gofr/gofr.go | 22 ++++++++++++++++------ pkg/gofr/gofr_test.go | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index ba495657b..081c03bbf 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -47,6 +47,8 @@ const ( shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second defaultTelemetry = "true" + telmetryStart = "start" + telemetryEnd = "shutdown" ) // App is the main application in the GoFr framework. @@ -178,15 +180,15 @@ func (a *App) Run() { shutdownCtx, done := context.WithTimeout(context.WithoutCancel(ctx), shutDownTimeout) defer done() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry { - a.pingGoFr(http.DefaultClient, "shutdown") + if a.hasTelemetry() { + a.sendTelemetry(http.DefaultClient, telemetryEnd) } _ = a.Shutdown(shutdownCtx) }() - if a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry { - go a.pingGoFr(http.DefaultClient, "start") + if a.hasTelemetry() { + go a.sendTelemetry(http.DefaultClient, telmetryStart) } wg := sync.WaitGroup{} @@ -237,7 +239,11 @@ func (a *App) Run() { wg.Wait() } -func (a *App) pingGoFr(client *http.Client, s string) { +func (a *App) hasTelemetry() bool { + return a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry +} + +func (a *App) sendTelemetry(client *http.Client, s string) { url := fmt.Sprint(gofrHost, shutServerPing) if s == "start" { @@ -258,10 +264,14 @@ func (a *App) pingGoFr(client *http.Client, s string) { resp, err := client.Do(req) if err != nil { + a.container.Errorf("Failed to send telemetry: %v", err) return } - resp.Body.Close() + err = resp.Body.Close() + if err != nil { + a.container.Errorf("Failed to close telemetry response: %v", err) + } } // Shutdown stops the service(s) and close the application. diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index a6d5e826e..c19e3b5a8 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -110,7 +110,7 @@ func TestPingGoFr(t *testing.T) { a := New() - a.pingGoFr(mockClient, tt.input) + a.sendTelemetry(mockClient, tt.input) assert.NotNil(t, mockTransport.lastRequest, "Request should not be nil") assert.Equal(t, tt.expectedURL, mockTransport.lastRequest.URL.String(), "Unexpected request URL") From 342195c134efc0e68f8f2937fafb5bbd3c26ceaf Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 18 Feb 2025 11:25:24 +0530 Subject: [PATCH 11/13] removing logged errors & minor review suggestions --- pkg/gofr/gofr.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 081c03bbf..e5e0acf75 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -240,7 +240,7 @@ func (a *App) Run() { } func (a *App) hasTelemetry() bool { - return a.Config.GetOrDefault("GOFR_TELEMETRY", "true") == defaultTelemetry + return a.Config.GetOrDefault("GOFR_TELEMETRY", defaultTelemetry) == "true" } func (a *App) sendTelemetry(client *http.Client, s string) { @@ -264,14 +264,10 @@ func (a *App) sendTelemetry(client *http.Client, s string) { resp, err := client.Do(req) if err != nil { - a.container.Errorf("Failed to send telemetry: %v", err) return } - err = resp.Body.Close() - if err != nil { - a.container.Errorf("Failed to close telemetry response: %v", err) - } + resp.Body.Close() } // Shutdown stops the service(s) and close the application. From 6d036b429c6d742a098df6be76b4572d6a3cba14 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 18 Feb 2025 16:16:06 +0530 Subject: [PATCH 12/13] review suggestions --- pkg/gofr/gofr.go | 10 +++++----- pkg/gofr/gofr_test.go | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index e5e0acf75..3fb0f07c9 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -47,8 +47,8 @@ const ( shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second defaultTelemetry = "true" - telmetryStart = "start" - telemetryEnd = "shutdown" + telmetryStart = true + telemetryEnd = false ) // App is the main application in the GoFr framework. @@ -243,13 +243,13 @@ func (a *App) hasTelemetry() bool { return a.Config.GetOrDefault("GOFR_TELEMETRY", defaultTelemetry) == "true" } -func (a *App) sendTelemetry(client *http.Client, s string) { +func (a *App) sendTelemetry(client *http.Client, status bool) { url := fmt.Sprint(gofrHost, shutServerPing) - if s == "start" { + if status == true { url = fmt.Sprint(gofrHost, startServerPing) - a.container.Info("GoFr tracks running servers via telemetry. Set GOFR_TELEMETRY=false in configs to disable it.") + a.container.Info("GoFr records the number of active servers. Set GOFR_TELEMETRY=false in configs to disable it.") } ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) diff --git a/pkg/gofr/gofr_test.go b/pkg/gofr/gofr_test.go index c19e3b5a8..d45cbe93d 100644 --- a/pkg/gofr/gofr_test.go +++ b/pkg/gofr/gofr_test.go @@ -87,11 +87,11 @@ func (m *mockRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) func TestPingGoFr(t *testing.T) { tests := []struct { name string - input string + input bool expectedURL string }{ - {"Ping Start Server", "start", gofrHost + startServerPing}, - {"Ping Shut Server", "stop", gofrHost + shutServerPing}, + {"Ping Start Server", true, gofrHost + startServerPing}, + {"Ping Shut Server", false, gofrHost + shutServerPing}, } for _, tt := range tests { From fc4e9eb5bb02657cc1572a5f6236e9af04be6939 Mon Sep 17 00:00:00 2001 From: Divya Date: Tue, 18 Feb 2025 16:56:33 +0530 Subject: [PATCH 13/13] review suggestions --- pkg/gofr/gofr.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/pkg/gofr/gofr.go b/pkg/gofr/gofr.go index 3fb0f07c9..5cfeb1923 100644 --- a/pkg/gofr/gofr.go +++ b/pkg/gofr/gofr.go @@ -47,8 +47,6 @@ const ( shutServerPing = "/api/ping/down" pingTimeout = 5 * time.Second defaultTelemetry = "true" - telmetryStart = true - telemetryEnd = false ) // App is the main application in the GoFr framework. @@ -181,14 +179,14 @@ func (a *App) Run() { defer done() if a.hasTelemetry() { - a.sendTelemetry(http.DefaultClient, telemetryEnd) + a.sendTelemetry(http.DefaultClient, false) } _ = a.Shutdown(shutdownCtx) }() if a.hasTelemetry() { - go a.sendTelemetry(http.DefaultClient, telmetryStart) + go a.sendTelemetry(http.DefaultClient, true) } wg := sync.WaitGroup{} @@ -243,10 +241,10 @@ func (a *App) hasTelemetry() bool { return a.Config.GetOrDefault("GOFR_TELEMETRY", defaultTelemetry) == "true" } -func (a *App) sendTelemetry(client *http.Client, status bool) { +func (a *App) sendTelemetry(client *http.Client, isStart bool) { url := fmt.Sprint(gofrHost, shutServerPing) - if status == true { + if isStart { url = fmt.Sprint(gofrHost, startServerPing) a.container.Info("GoFr records the number of active servers. Set GOFR_TELEMETRY=false in configs to disable it.")