phase4-foundation #8

Merged
Snider merged 10 commits from phase4-foundation into dev 2026-02-17 21:03:50 +00:00
2 changed files with 63 additions and 0 deletions
Showing only changes of commit 0681fba48e - Show all commits

33
pkg/coredeno/service.go Normal file
View file

@ -0,0 +1,33 @@
package coredeno
import "context"
// Service wraps the CoreDeno sidecar for framework lifecycle integration.
// Implements Startable (OnStartup) and Stoppable (OnShutdown) interfaces.
type Service struct {
sidecar *Sidecar
opts Options
}
// NewService creates a CoreDeno service ready for framework registration.
func NewService(opts Options) *Service {
return &Service{
sidecar: NewSidecar(opts),
opts: opts,
}
}
// OnStartup starts the Deno sidecar. Called by the framework.
func (s *Service) OnStartup(ctx context.Context) error {
return nil
}
// OnShutdown stops the Deno sidecar. Called by the framework.
func (s *Service) OnShutdown() error {
return s.sidecar.Stop()
}
// Sidecar returns the underlying sidecar for direct access.
func (s *Service) Sidecar() *Sidecar {
return s.sidecar
}

View file

@ -0,0 +1,30 @@
package coredeno
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNewService_Good(t *testing.T) {
opts := Options{
DenoPath: "echo",
SocketPath: "/tmp/test-service.sock",
}
svc := NewService(opts)
require.NotNil(t, svc)
assert.NotNil(t, svc.sidecar)
assert.Equal(t, "echo", svc.sidecar.opts.DenoPath)
}
func TestService_OnShutdown_Good_NotStarted(t *testing.T) {
svc := NewService(Options{DenoPath: "echo"})
err := svc.OnShutdown()
assert.NoError(t, err)
}
func TestService_Sidecar_Good(t *testing.T) {
svc := NewService(Options{DenoPath: "echo"})
assert.NotNil(t, svc.Sidecar())
}