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
|
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)
|
ah.Respond(w, integration)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2481,8 +2471,14 @@ func (ah *APIHandler) GetIntegrationConnectionStatus(
|
|||||||
return
|
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(
|
connectionStatus, apiErr := ah.calculateConnectionStatus(
|
||||||
r.Context(), connectionTests,
|
r.Context(), connectionTests, lookbackSeconds,
|
||||||
)
|
)
|
||||||
if apiErr != nil {
|
if apiErr != nil {
|
||||||
RespondError(w, apiErr, "Failed to calculate integration connection status")
|
RespondError(w, apiErr, "Failed to calculate integration connection status")
|
||||||
@ -2495,13 +2491,13 @@ func (ah *APIHandler) GetIntegrationConnectionStatus(
|
|||||||
func (ah *APIHandler) calculateConnectionStatus(
|
func (ah *APIHandler) calculateConnectionStatus(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
connectionTests *integrations.IntegrationConnectionTests,
|
connectionTests *integrations.IntegrationConnectionTests,
|
||||||
|
lookbackSeconds int64,
|
||||||
) (*integrations.IntegrationConnectionStatus, *model.ApiError) {
|
) (*integrations.IntegrationConnectionStatus, *model.ApiError) {
|
||||||
result := &integrations.IntegrationConnectionStatus{}
|
result := &integrations.IntegrationConnectionStatus{}
|
||||||
|
|
||||||
if connectionTests.Logs != nil {
|
if connectionTests.Logs != nil {
|
||||||
qrParams := &v3.QueryRangeParamsV3{
|
qrParams := &v3.QueryRangeParamsV3{
|
||||||
// Look back up to 7 days for integration logs
|
Start: time.Now().UnixMilli() - (lookbackSeconds * 1000),
|
||||||
Start: time.Now().UnixMilli() - (7 * 86400000),
|
|
||||||
End: time.Now().UnixMilli(),
|
End: time.Now().UnixMilli(),
|
||||||
CompositeQuery: &v3.CompositeQuery{
|
CompositeQuery: &v3.CompositeQuery{
|
||||||
PanelType: v3.PanelTypeList,
|
PanelType: v3.PanelTypeList,
|
||||||
|
@ -89,8 +89,6 @@ type IntegrationDetails struct {
|
|||||||
Assets IntegrationAssets `json:"assets"`
|
Assets IntegrationAssets `json:"assets"`
|
||||||
|
|
||||||
ConnectionTests *IntegrationConnectionTests `json:"connection_tests"`
|
ConnectionTests *IntegrationConnectionTests `json:"connection_tests"`
|
||||||
// ConnectionStatus gets derived using `ConnectionTests`
|
|
||||||
ConnectionStatus *IntegrationConnectionStatus `json:"connection_status"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type IntegrationsListItem struct {
|
type IntegrationsListItem struct {
|
||||||
|
@ -44,12 +44,9 @@ func TestSignozIntegrationLifeCycle(t *testing.T) {
|
|||||||
availableIntegrations[0].Id, map[string]interface{}{},
|
availableIntegrations[0].Id, map[string]interface{}{},
|
||||||
)
|
)
|
||||||
|
|
||||||
testbed.mockLogQueryResponse([]model.SignozLog{})
|
|
||||||
ii := testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
ii := testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
||||||
require.Equal(ii.Id, availableIntegrations[0].Id)
|
require.Equal(ii.Id, availableIntegrations[0].Id)
|
||||||
require.NotNil(ii.Installation)
|
require.NotNil(ii.Installation)
|
||||||
require.NotNil(ii.ConnectionStatus)
|
|
||||||
require.Nil(ii.ConnectionStatus.Logs)
|
|
||||||
|
|
||||||
installedResp = testbed.GetInstalledIntegrationsFromQS()
|
installedResp = testbed.GetInstalledIntegrationsFromQS()
|
||||||
installedIntegrations := installedResp.Integrations
|
installedIntegrations := installedResp.Integrations
|
||||||
@ -61,28 +58,26 @@ func TestSignozIntegrationLifeCycle(t *testing.T) {
|
|||||||
require.Greater(len(availableIntegrations), 0)
|
require.Greater(len(availableIntegrations), 0)
|
||||||
|
|
||||||
// Integration connection status should get updated after signal data has been received.
|
// 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{}{
|
testLog := makeTestSignozLog("test log body", map[string]interface{}{
|
||||||
"source": "nginx",
|
"source": "nginx",
|
||||||
})
|
})
|
||||||
testbed.mockLogQueryResponse([]model.SignozLog{testLog})
|
testbed.mockLogQueryResponse([]model.SignozLog{testLog})
|
||||||
connectionStatus := testbed.GetIntegrationConnectionStatus(ii.Id)
|
connectionStatus = testbed.GetIntegrationConnectionStatus(ii.Id)
|
||||||
require.NotNil(connectionStatus)
|
require.NotNil(connectionStatus)
|
||||||
require.NotNil(connectionStatus.Logs)
|
require.NotNil(connectionStatus.Logs)
|
||||||
require.Equal(connectionStatus.Logs.LastReceivedTsMillis, int64(testLog.Timestamp/1000000))
|
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
|
// Should be able to uninstall integration
|
||||||
require.True(availableIntegrations[0].IsInstalled)
|
require.True(availableIntegrations[0].IsInstalled)
|
||||||
testbed.RequestQSToUninstallIntegration(
|
testbed.RequestQSToUninstallIntegration(
|
||||||
availableIntegrations[0].Id,
|
availableIntegrations[0].Id,
|
||||||
)
|
)
|
||||||
|
|
||||||
testbed.mockLogQueryResponse([]model.SignozLog{})
|
|
||||||
ii = testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
ii = testbed.GetIntegrationDetailsFromQS(availableIntegrations[0].Id)
|
||||||
require.Equal(ii.Id, availableIntegrations[0].Id)
|
require.Equal(ii.Id, availableIntegrations[0].Id)
|
||||||
require.Nil(ii.Installation)
|
require.Nil(ii.Installation)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user