feat(BRIDGE-122): Observability service implementation

This commit is contained in:
Atanas Janeshliev
2024-08-27 15:21:41 +02:00
parent 1ea06a95b7
commit d12928b31c
8 changed files with 419 additions and 1 deletions

View File

@ -31,6 +31,7 @@ import (
"github.com/ProtonMail/proton-bridge/v3/internal/events"
"github.com/ProtonMail/proton-bridge/v3/internal/safe"
"github.com/ProtonMail/proton-bridge/v3/internal/services/imapservice"
"github.com/ProtonMail/proton-bridge/v3/internal/services/observability"
"github.com/ProtonMail/proton-bridge/v3/internal/services/orderedtasks"
"github.com/ProtonMail/proton-bridge/v3/internal/services/sendrecorder"
"github.com/ProtonMail/proton-bridge/v3/internal/services/smtp"
@ -86,6 +87,8 @@ type User struct {
imapService *imapservice.Service
telemetryService *telemetryservice.Service
observabilityService *observability.Service
serviceGroup *orderedtasks.OrderedCancelGroup
}
@ -104,6 +107,7 @@ func New(
smtpServerManager smtp.ServerManager,
eventSubscription events.Subscription,
syncService syncservice.Regulator,
observabilityService *observability.Service,
syncConfigDir string,
isNew bool,
) (*User, error) {
@ -122,6 +126,7 @@ func New(
smtpServerManager,
eventSubscription,
syncService,
observabilityService,
syncConfigDir,
isNew,
)
@ -153,6 +158,7 @@ func newImpl(
smtpServerManager smtp.ServerManager,
eventSubscription events.Subscription,
syncService syncservice.Regulator,
observabilityService *observability.Service,
syncConfigDir string,
isNew bool,
) (*User, error) {
@ -215,6 +221,8 @@ func newImpl(
serviceGroup: orderedtasks.NewOrderedCancelGroup(crashHandler),
smtpService: nil,
observabilityService: observabilityService,
}
user.eventService = userevents.NewService(
@ -318,6 +326,9 @@ func newImpl(
// Start Identity Service
user.identityService.Start(ctx, user.serviceGroup)
// Add user client to observability service
observabilityService.RegisterUserClient(user.id, client, user.telemetryService)
// Start SMTP Service
if err := user.smtpService.Start(ctx, user.serviceGroup); err != nil {
return user, fmt.Errorf("failed to start smtp service: %w", err)
@ -586,6 +597,9 @@ func (user *User) Logout(ctx context.Context, withAPI bool) error {
user.tasks.CancelAndWait()
// Close user observability service.
user.observabilityService.DeregisterUserClient(user.id)
// Stop Services
user.serviceGroup.CancelAndWait()
@ -619,6 +633,9 @@ func (user *User) Close() {
// Stop any ongoing background tasks.
user.tasks.CancelAndWait()
// Close user observability service.
user.observabilityService.DeregisterUserClient(user.id)
// Stop Services
user.serviceGroup.CancelAndWait()

View File

@ -29,6 +29,7 @@ import (
"github.com/ProtonMail/proton-bridge/v3/internal/certs"
"github.com/ProtonMail/proton-bridge/v3/internal/events"
"github.com/ProtonMail/proton-bridge/v3/internal/services/imapservice"
"github.com/ProtonMail/proton-bridge/v3/internal/services/observability"
"github.com/ProtonMail/proton-bridge/v3/internal/services/smtp"
"github.com/ProtonMail/proton-bridge/v3/internal/telemetry/mocks"
"github.com/ProtonMail/proton-bridge/v3/internal/vault"
@ -164,6 +165,7 @@ func withUser(tb testing.TB, ctx context.Context, _ *server.Server, m *proton.Ma
nullSMTPServerManager,
nullEventSubscription,
nil,
observability.NewService(context.Background(), nil),
"",
true,
)