mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-10 21:49:03 +08:00
chore: accept connection test lookback seconds as request param (#4650)
Also removes connectionStatus from integration details.
This commit is contained in:
parent
0c14145ef9
commit
7136ecc2fe
@ -2456,16 +2456,6 @@ func (ah *APIHandler) GetIntegration(
|
||||
return
|
||||
}
|
||||
|
||||
// Add connection status details.
|
||||
connectionStatus, apiErr := ah.calculateConnectionStatus(
|
||||
r.Context(), integration.ConnectionTests,
|
||||
)
|
||||
if apiErr != nil {
|
||||
RespondError(w, apiErr, "Failed to calculate integration connection status")
|
||||
return
|
||||
}
|
||||
integration.ConnectionStatus = connectionStatus
|
||||
|
||||
ah.Respond(w, integration)
|
||||
}
|
||||
|
||||
@ -2481,8 +2471,14 @@ func (ah *APIHandler) GetIntegrationConnectionStatus(
|
||||
return
|
||||
}
|
||||
|
||||
lookbackSecondsStr := r.URL.Query().Get("lookback_seconds")
|
||||
lookbackSeconds, err := strconv.ParseInt(lookbackSecondsStr, 10, 64)
|
||||
if err != nil {
|
||||
lookbackSeconds = 15 * 60
|
||||
}
|
||||
|
||||
connectionStatus, apiErr := ah.calculateConnectionStatus(
|
||||
r.Context(), connectionTests,
|
||||
r.Context(), connectionTests, lookbackSeconds,
|
||||
)
|
||||
if apiErr != nil {
|
||||
RespondError(w, apiErr, "Failed to calculate integration connection status")
|
||||
@ -2495,13 +2491,13 @@ func (ah *APIHandler) GetIntegrationConnectionStatus(
|
||||
func (ah *APIHandler) calculateConnectionStatus(
|
||||
ctx context.Context,
|
||||
connectionTests *integrations.IntegrationConnectionTests,
|
||||
lookbackSeconds int64,
|
||||
) (*integrations.IntegrationConnectionStatus, *model.ApiError) {
|
||||
result := &integrations.IntegrationConnectionStatus{}
|
||||
|
||||
if connectionTests.Logs != nil {
|
||||
qrParams := &v3.QueryRangeParamsV3{
|
||||
// Look back up to 7 days for integration logs
|
||||
Start: time.Now().UnixMilli() - (7 * 86400000),
|
||||
Start: time.Now().UnixMilli() - (lookbackSeconds * 1000),
|
||||
End: time.Now().UnixMilli(),
|
||||
CompositeQuery: &v3.CompositeQuery{
|
||||
PanelType: v3.PanelTypeList,
|
||||
|
@ -89,8 +89,6 @@ type IntegrationDetails struct {
|
||||
Assets IntegrationAssets `json:"assets"`
|
||||
|
||||
ConnectionTests *IntegrationConnectionTests `json:"connection_tests"`
|
||||
// ConnectionStatus gets derived using `ConnectionTests`
|
||||
ConnectionStatus *IntegrationConnectionStatus `json:"connection_status"`
|
||||
}
|
||||
|
||||
type IntegrationsListItem struct {
|
||||
|
@ -44,12 +44,9 @@ func TestSignozIntegrationLifeCycle(t *testing.T) {
|
||||
availableIntegrations[0].Id, map[string]interface{}{},
|
||||
)
|
||||
|
||||
testbed.mockLogQueryResponse([]model.SignozLog{})
|
||||
ii := testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
||||
require.Equal(ii.Id, availableIntegrations[0].Id)
|
||||
require.NotNil(ii.Installation)
|
||||
require.NotNil(ii.ConnectionStatus)
|
||||
require.Nil(ii.ConnectionStatus.Logs)
|
||||
|
||||
installedResp = testbed.GetInstalledIntegrationsFromQS()
|
||||
installedIntegrations := installedResp.Integrations
|
||||
@ -61,28 +58,26 @@ func TestSignozIntegrationLifeCycle(t *testing.T) {
|
||||
require.Greater(len(availableIntegrations), 0)
|
||||
|
||||
// Integration connection status should get updated after signal data has been received.
|
||||
testbed.mockLogQueryResponse([]model.SignozLog{})
|
||||
connectionStatus := testbed.GetIntegrationConnectionStatus(ii.Id)
|
||||
require.NotNil(connectionStatus)
|
||||
require.Nil(connectionStatus.Logs)
|
||||
|
||||
testLog := makeTestSignozLog("test log body", map[string]interface{}{
|
||||
"source": "nginx",
|
||||
})
|
||||
testbed.mockLogQueryResponse([]model.SignozLog{testLog})
|
||||
connectionStatus := testbed.GetIntegrationConnectionStatus(ii.Id)
|
||||
connectionStatus = testbed.GetIntegrationConnectionStatus(ii.Id)
|
||||
require.NotNil(connectionStatus)
|
||||
require.NotNil(connectionStatus.Logs)
|
||||
require.Equal(connectionStatus.Logs.LastReceivedTsMillis, int64(testLog.Timestamp/1000000))
|
||||
|
||||
testbed.mockLogQueryResponse([]model.SignozLog{testLog})
|
||||
ii = testbed.GetIntegrationDetailsFromQS(ii.Id)
|
||||
require.NotNil(ii.ConnectionStatus)
|
||||
require.NotNil(ii.ConnectionStatus.Logs)
|
||||
require.Equal(connectionStatus.Logs.LastReceivedTsMillis, int64(testLog.Timestamp/1000000))
|
||||
|
||||
// Should be able to uninstall integration
|
||||
require.True(availableIntegrations[0].IsInstalled)
|
||||
testbed.RequestQSToUninstallIntegration(
|
||||
availableIntegrations[0].Id,
|
||||
)
|
||||
|
||||
testbed.mockLogQueryResponse([]model.SignozLog{})
|
||||
ii = testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
||||
require.Equal(ii.Id, availableIntegrations[0].Id)
|
||||
require.Nil(ii.Installation)
|
||||
|
Loading…
x
Reference in New Issue
Block a user