diff --git a/backend/cmd/db/main.go b/backend/cmd/db/main.go index 104e9e67c..046862154 100644 --- a/backend/cmd/db/main.go +++ b/backend/cmd/db/main.go @@ -2,11 +2,11 @@ package main import ( "log" - "openreplay/backend/internal/builder" "openreplay/backend/internal/config/db" - "openreplay/backend/internal/datasaver" - "openreplay/backend/internal/handlers" - "openreplay/backend/internal/handlers/custom" + "openreplay/backend/internal/db/datasaver" + "openreplay/backend/pkg/handlers" + custom2 "openreplay/backend/pkg/handlers/custom" + "openreplay/backend/pkg/sessions" "time" "os" @@ -33,14 +33,14 @@ func main() { // HandlersFabric returns the list of message handlers we want to be applied to each incoming message. handlersFabric := func() []handlers.MessageProcessor { return []handlers.MessageProcessor{ - &custom.EventMapper{}, - custom.NewInputEventBuilder(), - custom.NewPageEventBuilder(), + &custom2.EventMapper{}, + custom2.NewInputEventBuilder(), + custom2.NewPageEventBuilder(), } } // Create handler's aggregator - builderMap := builder.NewBuilderMap(handlersFabric) + builderMap := sessions.NewBuilderMap(handlersFabric) // Init modules saver := datasaver.New(pg) diff --git a/backend/cmd/heuristics/main.go b/backend/cmd/heuristics/main.go index d163c26c4..9f5b38141 100644 --- a/backend/cmd/heuristics/main.go +++ b/backend/cmd/heuristics/main.go @@ -2,17 +2,17 @@ package main import ( "log" - "openreplay/backend/internal/builder" "openreplay/backend/internal/config/heuristics" - "openreplay/backend/internal/handlers" - "openreplay/backend/internal/handlers/custom" - "openreplay/backend/internal/handlers/ios" - "openreplay/backend/internal/handlers/web" + "openreplay/backend/pkg/handlers" + "openreplay/backend/pkg/handlers/custom" + ios2 "openreplay/backend/pkg/handlers/ios" + web2 "openreplay/backend/pkg/handlers/web" "openreplay/backend/pkg/intervals" logger "openreplay/backend/pkg/log" "openreplay/backend/pkg/messages" "openreplay/backend/pkg/queue" "openreplay/backend/pkg/queue/types" + "openreplay/backend/pkg/sessions" "os" "os/signal" "syscall" @@ -29,23 +29,23 @@ func main() { handlersFabric := func() []handlers.MessageProcessor { return []handlers.MessageProcessor{ // web handlers - &web.ClickRageDetector{}, - &web.CpuIssueDetector{}, - &web.DeadClickDetector{}, - &web.MemoryIssueDetector{}, - &web.NetworkIssueDetector{}, - &web.PerformanceAggregator{}, + &web2.ClickRageDetector{}, + &web2.CpuIssueDetector{}, + &web2.DeadClickDetector{}, + &web2.MemoryIssueDetector{}, + &web2.NetworkIssueDetector{}, + &web2.PerformanceAggregator{}, // iOS handlers - &ios.AppNotResponding{}, - &ios.ClickRageDetector{}, - &ios.PerformanceAggregator{}, + &ios2.AppNotResponding{}, + &ios2.ClickRageDetector{}, + &ios2.PerformanceAggregator{}, // Other handlers (you can add your custom handlers here) &custom.CustomHandler{}, } } // Create handler's aggregator - builderMap := builder.NewBuilderMap(handlersFabric) + builderMap := sessions.NewBuilderMap(handlersFabric) // Init logger statsLogger := logger.NewQueueStats(cfg.LoggerTimeout) diff --git a/backend/cmd/http/main.go b/backend/cmd/http/main.go index 3fdd8d34a..9901c8e32 100644 --- a/backend/cmd/http/main.go +++ b/backend/cmd/http/main.go @@ -2,14 +2,14 @@ package main import ( "log" + "openreplay/backend/internal/config/http" + "openreplay/backend/internal/http/router" + "openreplay/backend/internal/http/server" + "openreplay/backend/internal/http/services" "os" "os/signal" "syscall" - "openreplay/backend/internal/config" - "openreplay/backend/internal/router" - "openreplay/backend/internal/server" - "openreplay/backend/internal/services" "openreplay/backend/pkg/db/cache" "openreplay/backend/pkg/db/postgres" "openreplay/backend/pkg/pprof" @@ -21,7 +21,7 @@ func main() { pprof.StartProfilingServer() // Load configuration - cfg := config.New() + cfg := http.New() // Connect to queue producer := queue.NewProducer() diff --git a/backend/cmd/sink/main.go b/backend/cmd/sink/main.go index f97cc802b..a4356b65e 100644 --- a/backend/cmd/sink/main.go +++ b/backend/cmd/sink/main.go @@ -3,6 +3,8 @@ package main import ( "encoding/binary" "log" + "openreplay/backend/internal/sink/assetscache" + "openreplay/backend/internal/sink/oswriter" "openreplay/backend/internal/storage" "time" @@ -10,9 +12,7 @@ import ( "os/signal" "syscall" - "openreplay/backend/internal/assetscache" "openreplay/backend/internal/config/sink" - "openreplay/backend/internal/oswriter" . "openreplay/backend/pkg/messages" "openreplay/backend/pkg/queue" "openreplay/backend/pkg/queue/types" diff --git a/backend/internal/config/config.go b/backend/internal/config/http/config.go similarity index 98% rename from backend/internal/config/config.go rename to backend/internal/config/http/config.go index b98f910c2..c671e3eb3 100644 --- a/backend/internal/config/config.go +++ b/backend/internal/config/http/config.go @@ -1,4 +1,4 @@ -package config +package http import ( "openreplay/backend/pkg/env" diff --git a/backend/internal/datasaver/messages.go b/backend/internal/db/datasaver/messages.go similarity index 100% rename from backend/internal/datasaver/messages.go rename to backend/internal/db/datasaver/messages.go diff --git a/backend/internal/datasaver/saver.go b/backend/internal/db/datasaver/saver.go similarity index 100% rename from backend/internal/datasaver/saver.go rename to backend/internal/db/datasaver/saver.go diff --git a/backend/internal/datasaver/stats.go b/backend/internal/db/datasaver/stats.go similarity index 100% rename from backend/internal/datasaver/stats.go rename to backend/internal/db/datasaver/stats.go diff --git a/backend/internal/geoip/geoip.go b/backend/internal/http/geoip/geoip.go similarity index 100% rename from backend/internal/geoip/geoip.go rename to backend/internal/http/geoip/geoip.go diff --git a/backend/internal/geoip/http.go b/backend/internal/http/geoip/http.go similarity index 100% rename from backend/internal/geoip/http.go rename to backend/internal/http/geoip/http.go diff --git a/backend/internal/ios/ios-device.go b/backend/internal/http/ios/ios-device.go similarity index 100% rename from backend/internal/ios/ios-device.go rename to backend/internal/http/ios/ios-device.go diff --git a/backend/internal/router/handlers-ios.go b/backend/internal/http/router/handlers-ios.go similarity index 98% rename from backend/internal/router/handlers-ios.go rename to backend/internal/http/router/handlers-ios.go index 50f92a6ad..b295da1e7 100644 --- a/backend/internal/router/handlers-ios.go +++ b/backend/internal/http/router/handlers-ios.go @@ -6,8 +6,8 @@ import ( "log" "math/rand" "net/http" - "openreplay/backend/internal/ios" - "openreplay/backend/internal/uuid" + "openreplay/backend/internal/http/ios" + "openreplay/backend/internal/http/uuid" "strconv" "time" diff --git a/backend/internal/router/handlers-web.go b/backend/internal/http/router/handlers-web.go similarity index 99% rename from backend/internal/router/handlers-web.go rename to backend/internal/http/router/handlers-web.go index 13301d97e..cc6043c2d 100644 --- a/backend/internal/router/handlers-web.go +++ b/backend/internal/http/router/handlers-web.go @@ -7,7 +7,7 @@ import ( "log" "math/rand" "net/http" - "openreplay/backend/internal/uuid" + "openreplay/backend/internal/http/uuid" "strconv" "time" diff --git a/backend/internal/router/handlers.go b/backend/internal/http/router/handlers.go similarity index 100% rename from backend/internal/router/handlers.go rename to backend/internal/http/router/handlers.go diff --git a/backend/internal/router/model.go b/backend/internal/http/router/model.go similarity index 100% rename from backend/internal/router/model.go rename to backend/internal/http/router/model.go diff --git a/backend/internal/router/response.go b/backend/internal/http/router/response.go similarity index 100% rename from backend/internal/router/response.go rename to backend/internal/http/router/response.go diff --git a/backend/internal/router/router.go b/backend/internal/http/router/router.go similarity index 89% rename from backend/internal/router/router.go rename to backend/internal/http/router/router.go index 6bdc8b5d4..a0b6c9c03 100644 --- a/backend/internal/router/router.go +++ b/backend/internal/http/router/router.go @@ -4,17 +4,17 @@ import ( "github.com/gorilla/mux" "log" "net/http" - "openreplay/backend/internal/config" - http2 "openreplay/backend/internal/services" + http3 "openreplay/backend/internal/config/http" + http2 "openreplay/backend/internal/http/services" ) type Router struct { router *mux.Router - cfg *config.Config + cfg *http3.Config services *http2.ServicesBuilder } -func NewRouter(cfg *config.Config, services *http2.ServicesBuilder) (*Router, error) { +func NewRouter(cfg *http3.Config, services *http2.ServicesBuilder) (*Router, error) { e := &Router{ cfg: cfg, services: services, diff --git a/backend/internal/server/server.go b/backend/internal/http/server/server.go similarity index 100% rename from backend/internal/server/server.go rename to backend/internal/http/server/server.go diff --git a/backend/internal/services/services.go b/backend/internal/http/services/services.go similarity index 77% rename from backend/internal/services/services.go rename to backend/internal/http/services/services.go index c9915c78e..a9fc5db9c 100644 --- a/backend/internal/services/services.go +++ b/backend/internal/http/services/services.go @@ -1,9 +1,9 @@ package services import ( - "openreplay/backend/internal/config" - "openreplay/backend/internal/geoip" - "openreplay/backend/internal/uaparser" + "openreplay/backend/internal/config/http" + "openreplay/backend/internal/http/geoip" + "openreplay/backend/internal/http/uaparser" "openreplay/backend/pkg/db/cache" "openreplay/backend/pkg/flakeid" "openreplay/backend/pkg/queue/types" @@ -21,7 +21,7 @@ type ServicesBuilder struct { Storage *storage.S3 } -func New(cfg *config.Config, producer types.Producer, pgconn *cache.PGCache) *ServicesBuilder { +func New(cfg *http.Config, producer types.Producer, pgconn *cache.PGCache) *ServicesBuilder { return &ServicesBuilder{ Database: pgconn, Producer: producer, diff --git a/backend/internal/uaparser/http.go b/backend/internal/http/uaparser/http.go similarity index 100% rename from backend/internal/uaparser/http.go rename to backend/internal/http/uaparser/http.go diff --git a/backend/internal/uaparser/uaparser.go b/backend/internal/http/uaparser/uaparser.go similarity index 100% rename from backend/internal/uaparser/uaparser.go rename to backend/internal/http/uaparser/uaparser.go diff --git a/backend/internal/uuid/uuid.go b/backend/internal/http/uuid/uuid.go similarity index 100% rename from backend/internal/uuid/uuid.go rename to backend/internal/http/uuid/uuid.go diff --git a/backend/internal/assetscache/assets.go b/backend/internal/sink/assetscache/assets.go similarity index 100% rename from backend/internal/assetscache/assets.go rename to backend/internal/sink/assetscache/assets.go diff --git a/backend/internal/oswriter/oswriter.go b/backend/internal/sink/oswriter/oswriter.go similarity index 100% rename from backend/internal/oswriter/oswriter.go rename to backend/internal/sink/oswriter/oswriter.go diff --git a/backend/internal/handlers/custom/customHandler.go b/backend/pkg/handlers/custom/customHandler.go similarity index 100% rename from backend/internal/handlers/custom/customHandler.go rename to backend/pkg/handlers/custom/customHandler.go diff --git a/backend/internal/handlers/custom/eventMapper.go b/backend/pkg/handlers/custom/eventMapper.go similarity index 100% rename from backend/internal/handlers/custom/eventMapper.go rename to backend/pkg/handlers/custom/eventMapper.go diff --git a/backend/internal/handlers/custom/inputEventBuilder.go b/backend/pkg/handlers/custom/inputEventBuilder.go similarity index 100% rename from backend/internal/handlers/custom/inputEventBuilder.go rename to backend/pkg/handlers/custom/inputEventBuilder.go diff --git a/backend/internal/handlers/custom/pageEventBuilder.go b/backend/pkg/handlers/custom/pageEventBuilder.go similarity index 100% rename from backend/internal/handlers/custom/pageEventBuilder.go rename to backend/pkg/handlers/custom/pageEventBuilder.go diff --git a/backend/internal/handlers/ios/appNotResponding.go b/backend/pkg/handlers/ios/appNotResponding.go similarity index 97% rename from backend/internal/handlers/ios/appNotResponding.go rename to backend/pkg/handlers/ios/appNotResponding.go index b5f6cd2f0..cfeeba417 100644 --- a/backend/internal/handlers/ios/appNotResponding.go +++ b/backend/pkg/handlers/ios/appNotResponding.go @@ -1,7 +1,7 @@ package ios import ( - "openreplay/backend/internal/handlers" + "openreplay/backend/pkg/handlers" . "openreplay/backend/pkg/messages" ) diff --git a/backend/internal/handlers/ios/clickRage.go b/backend/pkg/handlers/ios/clickRage.go similarity index 94% rename from backend/internal/handlers/ios/clickRage.go rename to backend/pkg/handlers/ios/clickRage.go index 6562e05c1..84c130dae 100644 --- a/backend/internal/handlers/ios/clickRage.go +++ b/backend/pkg/handlers/ios/clickRage.go @@ -1,8 +1,8 @@ package ios import ( - "openreplay/backend/internal/handlers" - "openreplay/backend/internal/handlers/web" + "openreplay/backend/pkg/handlers" + "openreplay/backend/pkg/handlers/web" . "openreplay/backend/pkg/messages" ) diff --git a/backend/internal/handlers/ios/performanceAggregator.go b/backend/pkg/handlers/ios/performanceAggregator.go similarity index 98% rename from backend/internal/handlers/ios/performanceAggregator.go rename to backend/pkg/handlers/ios/performanceAggregator.go index df87298bd..1d8f3a2d7 100644 --- a/backend/internal/handlers/ios/performanceAggregator.go +++ b/backend/pkg/handlers/ios/performanceAggregator.go @@ -1,7 +1,7 @@ package ios import ( - "openreplay/backend/internal/handlers" + "openreplay/backend/pkg/handlers" . "openreplay/backend/pkg/messages" ) diff --git a/backend/internal/handlers/messageProcessor.go b/backend/pkg/handlers/messageProcessor.go similarity index 100% rename from backend/internal/handlers/messageProcessor.go rename to backend/pkg/handlers/messageProcessor.go diff --git a/backend/internal/handlers/readyMessageStore.go b/backend/pkg/handlers/readyMessageStore.go similarity index 100% rename from backend/internal/handlers/readyMessageStore.go rename to backend/pkg/handlers/readyMessageStore.go diff --git a/backend/internal/handlers/web/clickRage.go b/backend/pkg/handlers/web/clickRage.go similarity index 100% rename from backend/internal/handlers/web/clickRage.go rename to backend/pkg/handlers/web/clickRage.go diff --git a/backend/internal/handlers/web/cpuIssue.go b/backend/pkg/handlers/web/cpuIssue.go similarity index 100% rename from backend/internal/handlers/web/cpuIssue.go rename to backend/pkg/handlers/web/cpuIssue.go diff --git a/backend/internal/handlers/web/deadClick.go b/backend/pkg/handlers/web/deadClick.go similarity index 100% rename from backend/internal/handlers/web/deadClick.go rename to backend/pkg/handlers/web/deadClick.go diff --git a/backend/internal/handlers/web/domDrop.go b/backend/pkg/handlers/web/domDrop.go similarity index 100% rename from backend/internal/handlers/web/domDrop.go rename to backend/pkg/handlers/web/domDrop.go diff --git a/backend/internal/handlers/web/memoryIssue.go b/backend/pkg/handlers/web/memoryIssue.go similarity index 100% rename from backend/internal/handlers/web/memoryIssue.go rename to backend/pkg/handlers/web/memoryIssue.go diff --git a/backend/internal/handlers/web/networkIssue.go b/backend/pkg/handlers/web/networkIssue.go similarity index 100% rename from backend/internal/handlers/web/networkIssue.go rename to backend/pkg/handlers/web/networkIssue.go diff --git a/backend/internal/handlers/web/performanceAggregator.go b/backend/pkg/handlers/web/performanceAggregator.go similarity index 100% rename from backend/internal/handlers/web/performanceAggregator.go rename to backend/pkg/handlers/web/performanceAggregator.go diff --git a/backend/pkg/monitoring/metrics.go b/backend/pkg/monitoring/metrics.go index 73eae3d9f..b6d524895 100644 --- a/backend/pkg/monitoring/metrics.go +++ b/backend/pkg/monitoring/metrics.go @@ -21,12 +21,14 @@ type Metrics struct { meter metric.Meter counters map[string]syncfloat64.Counter upDownCounters map[string]syncfloat64.UpDownCounter + histograms map[string]syncfloat64.Histogram } func New(name string) *Metrics { m := &Metrics{ counters: make(map[string]syncfloat64.Counter), upDownCounters: make(map[string]syncfloat64.UpDownCounter), + histograms: make(map[string]syncfloat64.Histogram), } m.initPrometheusDataExporter() m.initMetrics(name) @@ -112,3 +114,23 @@ func (m *Metrics) RegisterUpDownCounter(name string) (syncfloat64.UpDownCounter, func (m *Metrics) GetUpDownCounter(name string) syncfloat64.UpDownCounter { return m.upDownCounters[name] } + +/* + + */ + +func (m *Metrics) RegisterHistogram(name string) (syncfloat64.Histogram, error) { + if _, ok := m.histograms[name]; ok { + return nil, fmt.Errorf("histogram %s already exists", name) + } + hist, err := m.meter.SyncFloat64().Histogram(name) + if err != nil { + return nil, fmt.Errorf("failed to initialize histogram: %v", err) + } + m.histograms[name] = hist + return hist, nil +} + +func (m *Metrics) GetHistogram(name string) syncfloat64.Histogram { + return m.histograms[name] +} diff --git a/backend/internal/builder/builder.go b/backend/pkg/sessions/builder.go similarity index 96% rename from backend/internal/builder/builder.go rename to backend/pkg/sessions/builder.go index f7c0d2f91..d55c9e1bc 100644 --- a/backend/internal/builder/builder.go +++ b/backend/pkg/sessions/builder.go @@ -1,10 +1,10 @@ -package builder +package sessions import ( "log" + "openreplay/backend/pkg/handlers" "time" - "openreplay/backend/internal/handlers" . "openreplay/backend/pkg/messages" ) diff --git a/backend/internal/builder/builderMap.go b/backend/pkg/sessions/builderMap.go similarity index 96% rename from backend/internal/builder/builderMap.go rename to backend/pkg/sessions/builderMap.go index d905cdb45..f26993c13 100644 --- a/backend/internal/builder/builderMap.go +++ b/backend/pkg/sessions/builderMap.go @@ -1,9 +1,9 @@ -package builder +package sessions import ( + "openreplay/backend/pkg/handlers" "time" - "openreplay/backend/internal/handlers" . "openreplay/backend/pkg/messages" ) diff --git a/frontend/app/routes.js b/frontend/app/routes.js index d1724dfd5..a044f251a 100644 --- a/frontend/app/routes.js +++ b/frontend/app/routes.js @@ -97,7 +97,7 @@ export const funnelIssue = (id = ':funnelId', issueId = ':issueId', hash) => has export const tests = () => '/tests'; -export const testBuilderNew = () => '/test-builder'; +export const testBuilderNew = () => '/test-sessions'; export const testBuilder = (testId = ':testId') => `/test-builder/${ testId }`;