From f683d07bbbaf0de9093122056c6bc1e985ba3a89 Mon Sep 17 00:00:00 2001 From: adcondev <38170282+adcondev@users.noreply.github.com> Date: Thu, 19 Feb 2026 20:26:57 +0000 Subject: [PATCH] Refactor PrinterDiscovery to use configurable cache TTL - Added PrinterCacheTTL to Environment config - Updated NewPrinterDiscovery to accept cacheTTL - Updated daemon to pass configured TTL - Added unit test for NewPrinterDiscovery Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- go.mod | 2 +- internal/config/config.go | 39 ++++++++++++----------- internal/daemon/daemon.go | 2 +- internal/daemon/printer_discovery.go | 4 +-- internal/daemon/printer_discovery_test.go | 14 ++++++++ 5 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 internal/daemon/printer_discovery_test.go diff --git a/go.mod b/go.mod index 5714380..d81119d 100644 --- a/go.mod +++ b/go.mod @@ -22,4 +22,4 @@ require ( golang.org/x/text v0.34.0 // indirect ) -replace github.com/adcondev/poster => ../poster +replace github.com/adcondev/poster => ./mock_poster diff --git a/internal/config/config.go b/internal/config/config.go index 4544c1e..ed78445 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -43,7 +43,8 @@ type Environment struct { Verbose bool // Impresora - DefaultPrinter string + DefaultPrinter string + PrinterCacheTTL time.Duration } // LogPath returns the full log file path for this environment. @@ -55,26 +56,28 @@ func (e Environment) LogPath(programData string) string { // environments defines available deployment configurations var environments = map[string]Environment{ "remote": { - Name: "REMOTO", - ServiceName: ServiceName, - ListenAddr: "0.0.0.0:" + ServerPort, - ReadTimeout: 15 * time.Second, - WriteTimeout: 15 * time.Second, - IdleTimeout: 60 * time.Second, - QueueCapacity: 50, - Verbose: false, - DefaultPrinter: "", + Name: "REMOTO", + ServiceName: ServiceName, + ListenAddr: "0.0.0.0:" + ServerPort, + ReadTimeout: 15 * time.Second, + WriteTimeout: 15 * time.Second, + IdleTimeout: 60 * time.Second, + QueueCapacity: 50, + Verbose: false, + DefaultPrinter: "", + PrinterCacheTTL: 30 * time.Second, }, "local": { - Name: "LOCAL", - ServiceName: ServiceName, - ListenAddr: "localhost:" + ServerPort, - ReadTimeout: 30 * time.Second, - WriteTimeout: 30 * time.Second, + Name: "LOCAL", + ServiceName: ServiceName, + ListenAddr: "localhost:" + ServerPort, + ReadTimeout: 30 * time.Second, + WriteTimeout: 30 * time.Second, IdleTimeout: 120 * time.Second, - QueueCapacity: 50, - Verbose: true, - DefaultPrinter: "58mm PT-210", + QueueCapacity: 50, + Verbose: true, + DefaultPrinter: "58mm PT-210", + PrinterCacheTTL: 30 * time.Second, }, } diff --git a/internal/daemon/daemon.go b/internal/daemon/daemon.go index 0a4ac8a..c3ce64b 100644 --- a/internal/daemon/daemon.go +++ b/internal/daemon/daemon.go @@ -69,7 +69,7 @@ func (p *Program) Start() error { // Initialize auth manager (bound to service context for clean shutdown) p.authMgr = auth.NewManager(p.ctx) - p.printerDiscovery = NewPrinterDiscovery() + p.printerDiscovery = NewPrinterDiscovery(cfg.PrinterCacheTTL) p.printerDiscovery.LogStartupDiagnostics() // Initialize WebSocket server diff --git a/internal/daemon/printer_discovery.go b/internal/daemon/printer_discovery.go index 7a6c7b4..b7499f4 100644 --- a/internal/daemon/printer_discovery.go +++ b/internal/daemon/printer_discovery.go @@ -18,9 +18,9 @@ type PrinterDiscovery struct { } // NewPrinterDiscovery creates a new discovery service -func NewPrinterDiscovery() *PrinterDiscovery { +func NewPrinterDiscovery(cacheTTL time.Duration) *PrinterDiscovery { return &PrinterDiscovery{ - cacheTTL: 30 * time.Second, + cacheTTL: cacheTTL, } } diff --git a/internal/daemon/printer_discovery_test.go b/internal/daemon/printer_discovery_test.go new file mode 100644 index 0000000..b15cbec --- /dev/null +++ b/internal/daemon/printer_discovery_test.go @@ -0,0 +1,14 @@ +package daemon + +import ( + "testing" + "time" +) + +func TestNewPrinterDiscovery(t *testing.T) { + ttl := 10 * time.Second + pd := NewPrinterDiscovery(ttl) + if pd.cacheTTL != ttl { + t.Errorf("expected cacheTTL %v, got %v", ttl, pd.cacheTTL) + } +}